0
fast-inverse-square-root.c
16 lines 456 B view raw
1float Q_rsqrt( float number ) 2{ 3 long i; 4 float x2, y; 5 const float threehalfs = 1.5F; 6 7 x2 = number * 0.5F; 8 y = number; 9 i = * ( long * ) &y; // evil floating point bit level hacking 10 i = 0x5f3759df - ( i >> 1 ); // what the fuck? 11 y = * ( float * ) &i; 12 y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration 13// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed 14 15 return y; 16}