|
发表于 2013-8-13 08:14:28
|
显示全部楼层
:)
google "doom fast inverse square root"
and let me post it here:
- 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;
- }
复制代码 This is probably the most fascinating piece of code anyone has written over the last 50 years. Bar none.
and we still don't know who exactly wrote it, and how s/he came up with the magic number.
enjoy.
|
|