| setJitCompilerOption("baseline.warmup.trigger", 10); |
| setJitCompilerOption("ion.warmup.trigger", 30); |
| |
| var atan2 = Math.atan2; |
| |
| function reference(x, y, z, w) { |
| with({}) {}; /* prevent compilation */ |
| return [ atan2(x + 0.1, w), |
| atan2(y + 0.1, z), |
| atan2(z + 0.1, y), |
| atan2(w + 0.1, x) ]; |
| } |
| |
| function generator(x, y, z, w) { |
| return [ atan2(x + 0.1, w), |
| atan2(y + 0.1, z), |
| atan2(z + 0.1, y), |
| atan2(w + 0.1, x) ]; |
| } |
| |
| function test() { |
| var min = -0.99999, step = 0.1, max = 1; |
| for (var x = min; x < max; x += step) |
| for (var y = min; y < max; y += step) |
| for (var z = min; z < max; z += step) |
| for (var w = min; w < max; w += step) { |
| var ref = reference(x, y, z, w); |
| var gen = generator(x, y, z, w); |
| assertEq(gen[0], ref[0]); |
| assertEq(gen[1], ref[1]); |
| assertEq(gen[2], ref[2]); |
| assertEq(gen[3], ref[3]); |
| } |
| } |
| |
| test(); |