Core: Replace C math headers with C++ equivalents
- Minor restructuring to ensure `math_funcs.h` is the central point for math functions
This commit is contained in:
parent
c5c1cd4440
commit
ad40939b6f
101 changed files with 414 additions and 498 deletions
|
|
@ -30,12 +30,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/math/math_defs.h"
|
||||
#include "core/math/math_funcs.h"
|
||||
|
||||
#include "thirdparty/misc/pcg.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#define CLZ32(x) __builtin_clz(x)
|
||||
#elif defined(_MSC_VER)
|
||||
|
|
@ -46,16 +44,6 @@ static int __bsr_clz32(uint32_t x) {
|
|||
return 31 - index;
|
||||
}
|
||||
#define CLZ32(x) __bsr_clz32(x)
|
||||
#else
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#define LDEXP(s, e) __builtin_ldexp(s, e)
|
||||
#define LDEXPF(s, e) __builtin_ldexpf(s, e)
|
||||
#else
|
||||
#include <math.h>
|
||||
#define LDEXP(s, e) ldexp(s, e)
|
||||
#define LDEXPF(s, e) ldexp(s, e)
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
|
|
@ -110,7 +98,7 @@ public:
|
|||
return 0;
|
||||
}
|
||||
uint64_t significand = (((uint64_t)rand()) << 32) | rand() | 0x8000000000000001U;
|
||||
return LDEXP((double)significand, -64 - CLZ32(proto_exp_offset));
|
||||
return std::ldexp((double)significand, -64 - CLZ32(proto_exp_offset));
|
||||
#else
|
||||
#pragma message("RandomPCG::randd - intrinsic clz is not available, falling back to bit truncation")
|
||||
return (double)(((((uint64_t)rand()) << 32) | rand()) & 0x1FFFFFFFFFFFFFU) / (double)0x1FFFFFFFFFFFFFU;
|
||||
|
|
@ -122,7 +110,7 @@ public:
|
|||
if (unlikely(proto_exp_offset == 0)) {
|
||||
return 0;
|
||||
}
|
||||
return LDEXPF((float)(rand() | 0x80000001), -32 - CLZ32(proto_exp_offset));
|
||||
return std::ldexp((float)(rand() | 0x80000001), -32 - CLZ32(proto_exp_offset));
|
||||
#else
|
||||
#pragma message("RandomPCG::randf - intrinsic clz is not available, falling back to bit truncation")
|
||||
return (float)(rand() & 0xFFFFFF) / (float)0xFFFFFF;
|
||||
|
|
@ -134,14 +122,14 @@ public:
|
|||
if (temp < CMP_EPSILON) {
|
||||
temp += CMP_EPSILON; // To prevent generating of INF value in log function, resulting to return NaN value from this function.
|
||||
}
|
||||
return p_mean + p_deviation * (cos(Math::TAU * randd()) * sqrt(-2.0 * log(temp))); // Box-Muller transform.
|
||||
return p_mean + p_deviation * (std::cos(Math::TAU * randd()) * std::sqrt(-2.0 * std::log(temp))); // Box-Muller transform.
|
||||
}
|
||||
_FORCE_INLINE_ float randfn(float p_mean, float p_deviation) {
|
||||
float temp = randf();
|
||||
if (temp < CMP_EPSILON) {
|
||||
temp += CMP_EPSILON; // To prevent generating of INF value in log function, resulting to return NaN value from this function.
|
||||
}
|
||||
return p_mean + p_deviation * (cos((float)Math::TAU * randf()) * sqrt(-2.0 * log(temp))); // Box-Muller transform.
|
||||
return p_mean + p_deviation * (std::cos((float)Math::TAU * randf()) * std::sqrt(-2.0 * std::log(temp))); // Box-Muller transform.
|
||||
}
|
||||
|
||||
double random(double p_from, double p_to);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue