function f() { var x = Math.pow(2, 31); // take it as argument if constant propagation comes in you way. x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 32 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 33 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 34 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 35 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 36 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 37 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 38 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 39 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 40 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 41 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 42 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 43 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 44 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 45 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 46 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 47 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 48 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 49 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 50 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 51 x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 52 x = x + x; assertEq((x + 1) | 0, 0); // 2 ** 53 } for (var i = 0; i <= 100000; i++) f();