lrbtav wrote:
Saw this on beyond 3d's website earlier today:
>float InvSqrt (float x){
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}
I don't know what it is. OK, I know it's the inverse of the square root
of x, but I'm having difficulty relating how this segment of code and
Quake 3 are related.
There was a discussion about it on slashdot a few weeks ago.
It's basically assuming that the floating point number is in IEEE format
and it's doing an iteration of a successive approximation scheme. The
downshift also does a downshift of the exponent which is like a
squareroot. I don't know the exact details, but needless to say, it is
platform specific.