haXe and fast inverse square root

Inverse square root is a common operation in vector normalization, something that happens a lot in 3D math, particularly in game engines.  An incredibly clever algorithm was developed using so-called ‘magic numbers’ and implemented in C, making its production debut in Quake.

Essentially, the algorithm makes a very smart guess as to an initial starting point that can be used to drive a single iteration of Newton’s method for 1/sqrt(x).  You can read more about it here,

http://betterexplained.com/articles/understanding-quakes-fast-inverse-square-root/

http://www.geometrictools.com/Documentation/FastInverseSqrt.pdf

http://www.lomont.org/Math/Papers/2003/InvSqrt.pdf
http://www.beyond3d.com/content/articles/8/

Some time ago, I gave this approach a try using ByteArray and was disappointed with the performance, although it was a fun exercise.  Recently, Nicolas Cannasse implemented the algorithm with haXe optimizations and the performance is awesome.  Great work Nicolas!

Advertisement