sqrt vs fast inverse sqrt (v6)

Revision 6 of this benchmark created on


Setup

var approx_const_32, approx_const_64, approx_const_quake_32, fastInvSqrt_typed;
    approx_const_quake_32 = 0x5f3759df;
    approx_const_32 = 0x5f375a86;
    approx_const_64 = 0x5fe6eb50c7aa19f9;
    fastInvSqrt_typed = function(n, precision) {
      var i, iter, y;
      if (precision == null) {
        precision = 1;
      }
      y = new Float32Array(1);
      i = new Int32Array(y.buffer);
      y[0] = n;
      i[0] = 0x5f375a86 - (i[0] >> 1);
      for (iter = 1; 1 <= precision ? iter < precision : iter > precision; 1 <= precision ? iter++ : iter--) {
        y[0] = y[0] * (1.5 - ((n * 0.5) * y[0] * y[0]));
      }
      return y[0];
    };

Test runner

Ready to run.

Testing in
TestOps/sec
Math.sqrt
Math.sqrt(23428937.3);
ready
fast inverse sqrt
fastInvSqrt_typed(23428937.3);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.