question about some code

L

lrbtav

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.
 
G

Gianni Mariani

lrbtav said:
Saw this on beyond 3d's website earlier today:


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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,779
Messages
2,569,606
Members
45,239
Latest member
Alex Young

Latest Threads

Top