fast inverse square root (approximate)

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> float Q_sqrt(float number) { long i; float x2,y; const float threehalfs = 1.5f; x2 = number * 0.5f; y = number; i = * ( long * ) &y; // evil floating // point bit level hacking i = 0x5f3759df - (i >> 1); // what the fuck? y = * ( float * ) &i; y = y * (threehalfs - (x2 * y * y)); // 1st iteration // y = y * (threehalfs - (x2 * y * y)); // 2nd iteration // this can be removed return y; } // test int main(void) { printf("%f",Q_sqrt(226.0f)); // real answer: ~0.06651901... return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines