// Bug 1073910 (function() { function roundf(y) { return Math.round(Math.fround(y)); } var x = -1; assertEq(roundf(x), x); assertEq(roundf(x), x); var x = -2; assertEq(roundf(x), x); assertEq(roundf(x), x); var x = -1024; assertEq(roundf(x), x); var x = -14680050; assertEq(roundf(x), Math.fround(x)); var x = -8388610; assertEq(roundf(x), Math.fround(x)); })(); // Bug 1000606 (function() { function f() { var d = Math.fround(0.4999999701976776); return Math.round(d); } assertEq(f(), f()); function g() { var c = Math.fround(8886111); return Math.round(c); } assertEq(g(), g()); })(); // Bug 1124485 (function() { function h(x) { var y = Math.fround(x); assertEq(y, Math.pow(y, 1)); } h(0); h(2147483647); })(); // Bug 1122344 (function() { function f() { return Math.round(Math.fround(-13527757)); }; assertEq(f(), f()); })(); (function() { // Test values around -0.5 and +0.5 var f32 = new Float32Array(1); var i32 = new Int32Array(f32.buffer); function round(x) { return Math.round(x); } function roundf(x) { return Math.round(Math.fround(x)); } // Warm up round(2.5); round(3.5); roundf(2.5); roundf(3.5); f32[0] = 0.5; i32[0] += 1; print('0.5+e =', f32[0]); var x = f32[0]; assertEq(round(x), 1); assertEq(roundf(x), 1); f32[0] = 0.5; i32[0] -= 1; print('0.5-e =', f32[0]); var x = f32[0]; assertEq(round(x), 0); assertEq(roundf(x), 0); f32[0] = -0.5; i32[0] += 1; print('-0.5-e =', f32[0]); var x = f32[0]; assertEq(round(x), -1); assertEq(roundf(x), -1); f32[0] = -0.5; i32[0] -= 1; print('-0.5+e =', f32[0]); var x = f32[0]; assertEq(round(x), -0); assertEq(roundf(x), -0); })();