#include "math.h" float Math::inv_sqrt(const float x) { return (float)(1.0 / ::sqrtf(x)); } float Math::fast_inv_sqrt(const float number) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = *(long *)&y; i = 0x5f3759df - (i >> 1); y = *(float *)&i; y = y * (threehalfs - (x2 * y * y)); return y; } float Math::is_equal_approx(const float a, const float b) { if (a + EPSILON < b && a - EPSILON > b) { return true; } return false; } float Math::is_zero_approx(const float a) { if (a + EPSILON < 0 && a - EPSILON > 0) { return true; } return false; } void Math::seed(const unsigned int s) { srand(s); } void Math::randomize() { srand(time(NULL)); } int Math::rand() { return ::rand(); } float Math::randf() { return ::rand() / static_cast(RANDOM_32BIT_MAX); } double Math::randd() { return ::rand() / static_cast(RANDOM_32BIT_MAX); } int Math::rand(const int m) { return rand() % m; } int Math::rand(const int from, const int to) { return (rand() % (to - from)) + from; } float Math::rand(const float from, const float to) { return randf() * (to - from) + from; } float Math::rand(const double from, const double to) { return randd() * (to - from) + from; }