mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-12 10:57:10 +02:00
put utility in namespace
This commit is contained in:
parent
11045335c1
commit
4456e2bc8b
2 changed files with 38 additions and 31 deletions
|
@ -1,42 +1,49 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef _MANAGED
|
#ifdef _MANAGED
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
inline double sqrtsd(double val) { return sqrt(val); }
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
inline double sqrtsd(double val) {
|
#endif
|
||||||
|
|
||||||
|
namespace rawaccel {
|
||||||
|
|
||||||
|
#ifdef _MANAGED
|
||||||
|
inline double sqrtsd(double val) { return sqrt(val); }
|
||||||
|
#else
|
||||||
|
inline double sqrtsd(double val) {
|
||||||
__m128d src = _mm_load_sd(&val);
|
__m128d src = _mm_load_sd(&val);
|
||||||
__m128d dst = _mm_sqrt_sd(src, src);
|
__m128d dst = _mm_sqrt_sd(src, src);
|
||||||
_mm_store_sd(&val, dst);
|
_mm_store_sd(&val, dst);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline constexpr double minsd(double a, double b) {
|
constexpr double minsd(double a, double b)
|
||||||
|
{
|
||||||
return (a < b) ? a : b;
|
return (a < b) ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline constexpr double maxsd(double a, double b) {
|
constexpr double maxsd(double a, double b)
|
||||||
|
{
|
||||||
return (b < a) ? a : b;
|
return (b < a) ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline constexpr double clampsd(double v, double lo, double hi) {
|
constexpr double clampsd(double v, double lo, double hi)
|
||||||
|
{
|
||||||
return minsd(maxsd(v, lo), hi);
|
return minsd(maxsd(v, lo), hi);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns the unbiased exponent of x if x is normal
|
// returns the unbiased exponent of x if x is normal
|
||||||
inline int ilogb(double x)
|
inline int ilogb(double x)
|
||||||
{
|
{
|
||||||
union { double f; unsigned long long i; } u = { x };
|
union { double f; unsigned long long i; } u = { x };
|
||||||
return static_cast<int>((u.i >> 52) & 0x7ff) - 0x3ff;
|
return static_cast<int>((u.i >> 52) & 0x7ff) - 0x3ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool infnan(double x)
|
inline bool infnan(double x)
|
||||||
{
|
{
|
||||||
return ilogb(x) == 0x400;
|
return ilogb(x) == 0x400;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ Arguments:
|
||||||
counter_t ticks = now - devExt->counter;
|
counter_t ticks = now - devExt->counter;
|
||||||
devExt->counter = now;
|
devExt->counter = now;
|
||||||
milliseconds time = ticks * global.tick_interval;
|
milliseconds time = ticks * global.tick_interval;
|
||||||
return clampsd(time, global.args.time_min, 100);
|
return ra::clampsd(time, global.args.time_min, 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
global.modifier.apply_acceleration(input, time_supplier);
|
global.modifier.apply_acceleration(input, time_supplier);
|
||||||
|
@ -99,7 +99,7 @@ Arguments:
|
||||||
double carry_x = carried_result_x - out_x;
|
double carry_x = carried_result_x - out_x;
|
||||||
double carry_y = carried_result_y - out_y;
|
double carry_y = carried_result_y - out_y;
|
||||||
|
|
||||||
if (!infnan(carry_x + carry_y)) {
|
if (!ra::infnan(carry_x + carry_y)) {
|
||||||
devExt->carry.x = carried_result_x - out_x;
|
devExt->carry.x = carried_result_x - out_x;
|
||||||
devExt->carry.y = carried_result_y - out_y;
|
devExt->carry.y = carried_result_y - out_y;
|
||||||
it->LastX = out_x;
|
it->LastX = out_x;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue