Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #define KINDA_SMALL_NUMBER (1.e-4f)
- #define BIG_NUMBER (3.4e+38f)
- struct Math_KSH
- {
- static inline float Square(float x)
- {
- return x * x;
- }
- static inline float Abs(float x)
- {
- return x >= 0.f ? x : -x;
- }
- static inline float Sqrt(float x)
- {
- int NUM_REAPEAT = 16;
- int k;
- float t;
- float buf = x;
- for (k = 0, t = buf; k < NUM_REAPEAT; k++)
- {
- if (t < 1.f)
- break;
- t = (t * t + buf) / (2.f * t);
- }
- return t;
- }
- static inline float InvSqrt(float x)
- {
- float FHalf = 0.5f * x;
- int i = *(int*)&x;
- i = 0x5f3759df - (i >> 1);
- x = *(float*)&i;
- x = x * (1.5f - (FHalf * x * x));
- return x;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement