[FoRK] Fast inverse square root

Stephen D. Williams sdw at lig.net
Wed Dec 23 17:13:53 PST 2015


Interesting history of a great hack.

https://en.wikipedia.org/wiki/Fast_inverse_square_root

float  Q_rsqrt(  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;
}



sdw



More information about the FoRK mailing list