bigint-unary.js (2060B)
1 var xs = [ 2 // Definitely heap digits. 3 -(2n ** 1000n), 4 5 // -(2n**64n) 6 -18446744073709551617n, 7 -18446744073709551616n, 8 -18446744073709551615n, 9 10 // -(2n**63n) 11 -9223372036854775809n, 12 -9223372036854775808n, 13 -9223372036854775807n, 14 15 // -(2**32) 16 -4294967297n, 17 -4294967296n, 18 -4294967295n, 19 20 // -(2**31) 21 -2147483649n, 22 -2147483648n, 23 -2147483647n, 24 25 -1n, 26 0n, 27 1n, 28 29 // 2**31 30 2147483647n, 31 2147483648n, 32 2147483649n, 33 34 // 2**32 35 4294967295n, 36 4294967296n, 37 4294967297n, 38 39 // 2n**63n 40 9223372036854775807n, 41 9223372036854775808n, 42 9223372036854775809n, 43 44 // 2n**64n 45 18446744073709551615n, 46 18446744073709551616n, 47 18446744073709551617n, 48 49 // Definitely heap digits. 50 2n ** 1000n, 51 ]; 52 53 function testNeg() { 54 for (var i = 0; i < 100; ++i) { 55 var j = i % xs.length; 56 var x = xs[j]; 57 var y = xs[xs.length - 1 - j]; 58 59 assertEq(-x, y); 60 } 61 } 62 testNeg(); 63 64 function testBitNot() { 65 var ys = xs.map(x => -(x + 1n)); 66 67 for (var i = 0; i < 100; ++i) { 68 var j = i % xs.length; 69 var x = xs[j]; 70 var y = ys[j]; 71 72 assertEq(~x, y); 73 } 74 } 75 testBitNot(); 76 77 function testPreInc() { 78 var ys = xs.map(x => x + 1n); 79 80 for (var i = 0; i < 100; ++i) { 81 var j = i % xs.length; 82 var x = xs[j]; 83 var y = ys[j]; 84 85 var r = ++x; 86 assertEq(x, y); 87 assertEq(r, y); 88 } 89 } 90 testPostInc(); 91 92 function testPostInc() { 93 var ys = xs.map(x => x + 1n); 94 95 for (var i = 0; i < 100; ++i) { 96 var j = i % xs.length; 97 var x = xs[j]; 98 var y = ys[j]; 99 100 var r = x++; 101 assertEq(x, y); 102 assertEq(r, xs[j]); 103 } 104 } 105 testPostInc(); 106 107 function testPreDec() { 108 var ys = xs.map(x => x - 1n); 109 110 for (var i = 0; i < 100; ++i) { 111 var j = i % xs.length; 112 var x = xs[j]; 113 var y = ys[j]; 114 115 var r = --x; 116 assertEq(x, y); 117 assertEq(r, y); 118 } 119 } 120 testPostDec(); 121 122 function testPostDec() { 123 var ys = xs.map(x => x - 1n); 124 125 for (var i = 0; i < 100; ++i) { 126 var j = i % xs.length; 127 var x = xs[j]; 128 var y = ys[j]; 129 130 var r = x--; 131 assertEq(x, y); 132 assertEq(r, xs[j]); 133 } 134 } 135 testPostDec();