[FoRK] Fast inverse square root

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


Oh, I see.

"the fact that aliasing a float32 to an integer gives a rough approximation
of its logarithm."

On Wed, Dec 23, 2015 at 6:05 PM, Joseph S. Barrera III <joe at barrera.org>
wrote:

> 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