bigint-neg-64-fold.js (1139B)
1 const tests = [ 2 [-0x7fffffffffffffffn, 0x7fffffffffffffffn], 3 [-0x7ffffffffffffffen, 0x7ffffffffffffffen], 4 [-0x100000001n, 0x100000001n], 5 [-0x100000000n, 0x100000000n], 6 [-0xffffffffn, 0xffffffffn], 7 [-0xfffffffen, 0xfffffffen], 8 [-0x80000001n, 0x80000001n], 9 [-0x80000000n, 0x80000000n], 10 [-0x7fffffffn, 0x7fffffffn], 11 [-0x7ffffffen, 0x7ffffffen], 12 [-2n, 2n], 13 [-1n, 1n], 14 [0n, 0n], 15 [1n, -1n], 16 [2n, -2n], 17 [0x7ffffffen, -0x7ffffffen], 18 [0x7fffffffn, -0x7fffffffn], 19 [0x80000000n, -0x80000000n], 20 [0x80000001n, -0x80000001n], 21 [0xfffffffen, -0xfffffffen], 22 [0xffffffffn, -0xffffffffn], 23 [0x100000000n, -0x100000000n], 24 [0x100000001n, -0x100000001n], 25 [0x7ffffffffffffffen, -0x7ffffffffffffffen], 26 [0x7fffffffffffffffn, -0x7fffffffffffffffn], 27 ]; 28 29 function f(tests) { 30 for (let test of tests) { 31 let input = test[0], expected = test[1]; 32 assertEq(BigInt.asIntN(64, input), input); 33 assertEq(BigInt.asIntN(64, expected), expected); 34 35 let f = Function(` 36 let input = ${input}n; 37 assertEq(-input, ${expected}n); 38 `); 39 40 for (let j = 0; j < 100; ++j) { 41 f(); 42 } 43 } 44 } 45 46 f(tests);