math-f16round.js (860B)
1 function testExact() { 2 var values = [ 3 0, 4 0.5, 5 1, 6 100.25, 7 Infinity, 8 NaN, 9 ]; 10 11 for (var i = 0; i < 1000; ++i) { 12 var x = values[i % values.length]; 13 assertEq(Math.f16round(x), x); 14 assertEq(-Math.f16round(-x), x); 15 assertEq(Math.f16round(-x), -x); 16 assertEq(-Math.f16round(x), -x); 17 } 18 } 19 for (let i = 0; i < 2; ++i) testExact(); 20 21 function testInexact() { 22 var values = [ 23 0.1, 24 Math.SQRT2, 25 65519, 26 65520 27 ]; 28 var expected = [ 29 0.0999755859375, 30 1.4140625, 31 65504, 32 Infinity, 33 ]; 34 35 for (var i = 0; i < 1000; ++i) { 36 var j = i % values.length; 37 var x = values[j]; 38 var y = expected[j]; 39 assertEq(Math.f16round(x), y); 40 assertEq(-Math.f16round(-x), y); 41 assertEq(Math.f16round(-x), -y); 42 assertEq(-Math.f16round(x), -y); 43 } 44 } 45 for (let i = 0; i < 2; ++i) testInexact();