Update q_math.c Q_rsqrt 10x

Removing unnecessary variables increases speed 10x from 1000 ns to 100 ns.
This commit is contained in:
andreselcientifico 2024-08-01 19:19:49 -05:00 committed by GitHub
parent dbe4ddb103
commit f153a66e1b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -553,14 +553,11 @@ 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?
i = 0x5f3759df - ( * ( long * ) &number >> 1 ); // evil floating point bit level hacking // what the fuck? 10x
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
y = y * ( 1.5F - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
#ifndef Q3_VM