function map_test(t, cases) { for (var i = 0; i < cases.length; i++) { function c() { return t(cases[i].input); } var expected = cases[i].expected; assertEq(c(), expected); } } function lsh_inner(n) { var r; for (var i = 0; i < 35; i++) r = 0x1 << n; return r; } map_test (lsh_inner, [{input: 15, expected: 32768}, {input: 55, expected: 8388608}, {input: 1, expected: 2}, {input: 0, expected: 1}]); function rsh_inner(n) { var r; for (var i = 0; i < 35; i++) r = 0x11010101 >> n; return r; } map_test (rsh_inner, [{input: 8, expected: 1114369}, {input: 5, expected: 8914952}, {input: 35, expected: 35659808}, {input: -1, expected: 0}]); function ursh_inner(n) { var r; for (var i = 0; i < 35; i++) r = -55 >>> n; return r; } map_test (ursh_inner, [{input: 8, expected: 16777215}, {input: 33, expected: 2147483620}, {input: 0, expected: 4294967241}, {input: 1, expected: 2147483620}]); function doMath_inner(cos) { var s = 0; var sin = Math.sin; for (var i = 0; i < 200; i++) s = -Math.pow(sin(i) + cos(i * 0.75), 4); return s; } function doMath() { return doMath_inner(Math.cos); } assertEq(doMath(), -0.5405549555611059);