[FoRK] Fast inverse square root

Joseph S. Barrera III joe at barrera.org
Wed Dec 23 18:05:19 PST 2015


Perhaps related to or derived from https://en.wikipedia.org/wiki/CORDIC


On Wed, Dec 23, 2015 at 5:13 PM, Stephen D. Williams <sdw at lig.net> wrote:

> 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
>
> _______________________________________________
> FoRK mailing list
> http://xent.com/mailman/listinfo/fork
>


More information about the FoRK mailing list