const tests = [
[-0 x10000000000000001n, 0 , 0 n],
[-0 x10000000000000000n, 0 , 0 n],
[-0 xffffffffffffffffn, 0 , 0 n],
[-0 xfffffffffffffffen, 0 , 0 n],
[-0 x8000000000000001n, 0 , 0 n],
[-0 x8000000000000000n, 0 , 0 n],
[-0 x7fffffffffffffffn, 0 , 0 n],
[-0 x7ffffffffffffffen, 0 , 0 n],
[-0 x100000001n, 0 , 0 n],
[-0 x100000000n, 0 , 0 n],
[-0 xffffffffn, 0 , 0 n],
[-0 xfffffffen, 0 , 0 n],
[-0 x80000001n, 0 , 0 n],
[-0 x80000000n, 0 , 0 n],
[-0 x7fffffffn, 0 , 0 n],
[-0 x7ffffffen, 0 , 0 n],
[-9 n, 0 , 0 n],
[-8 n, 0 , 0 n],
[-7 n, 0 , 0 n],
[-6 n, 0 , 0 n],
[-5 n, 0 , 0 n],
[-4 n, 0 , 0 n],
[-3 n, 0 , 0 n],
[-2 n, 0 , 0 n],
[-1 n, 0 , 0 n],
[0 n, 0 , 0 n],
[1 n, 0 , 0 n],
[2 n, 0 , 0 n],
[3 n, 0 , 0 n],
[4 n, 0 , 0 n],
[5 n, 0 , 0 n],
[6 n, 0 , 0 n],
[7 n, 0 , 0 n],
[8 n, 0 , 0 n],
[9 n, 0 , 0 n],
[0 x7ffffffen, 0 , 0 n],
[0 x7fffffffn, 0 , 0 n],
[0 x80000000n, 0 , 0 n],
[0 x80000001n, 0 , 0 n],
[0 xfffffffen, 0 , 0 n],
[0 xffffffffn, 0 , 0 n],
[0 x100000000n, 0 , 0 n],
[0 x100000001n, 0 , 0 n],
[0 x7ffffffffffffffen, 0 , 0 n],
[0 x7fffffffffffffffn, 0 , 0 n],
[0 x8000000000000000n, 0 , 0 n],
[0 x8000000000000001n, 0 , 0 n],
[0 xfffffffffffffffen, 0 , 0 n],
[0 xffffffffffffffffn, 0 , 0 n],
[0 x10000000000000000n, 0 , 0 n],
[0 x10000000000000001n, 0 , 0 n],
[-0 x10000000000000001n, 1 , -1 n],
[-0 x10000000000000000n, 1 , 0 n],
[-0 xffffffffffffffffn, 1 , -1 n],
[-0 xfffffffffffffffen, 1 , 0 n],
[-0 x8000000000000001n, 1 , -1 n],
[-0 x8000000000000000n, 1 , 0 n],
[-0 x7fffffffffffffffn, 1 , -1 n],
[-0 x7ffffffffffffffen, 1 , 0 n],
[-0 x100000001n, 1 , -1 n],
[-0 x100000000n, 1 , 0 n],
[-0 xffffffffn, 1 , -1 n],
[-0 xfffffffen, 1 , 0 n],
[-0 x80000001n, 1 , -1 n],
[-0 x80000000n, 1 , 0 n],
[-0 x7fffffffn, 1 , -1 n],
[-0 x7ffffffen, 1 , 0 n],
[-9 n, 1 , -1 n],
[-8 n, 1 , 0 n],
[-7 n, 1 , -1 n],
[-6 n, 1 , 0 n],
[-5 n, 1 , -1 n],
[-4 n, 1 , 0 n],
[-3 n, 1 , -1 n],
[-2 n, 1 , 0 n],
[-1 n, 1 , -1 n],
[0 n, 1 , 0 n],
[1 n, 1 , -1 n],
[2 n, 1 , 0 n],
[3 n, 1 , -1 n],
[4 n, 1 , 0 n],
[5 n, 1 , -1 n],
[6 n, 1 , 0 n],
[7 n, 1 , -1 n],
[8 n, 1 , 0 n],
[9 n, 1 , -1 n],
[0 x7ffffffen, 1 , 0 n],
[0 x7fffffffn, 1 , -1 n],
[0 x80000000n, 1 , 0 n],
[0 x80000001n, 1 , -1 n],
[0 xfffffffen, 1 , 0 n],
[0 xffffffffn, 1 , -1 n],
[0 x100000000n, 1 , 0 n],
[0 x100000001n, 1 , -1 n],
[0 x7ffffffffffffffen, 1 , 0 n],
[0 x7fffffffffffffffn, 1 , -1 n],
[0 x8000000000000000n, 1 , 0 n],
[0 x8000000000000001n, 1 , -1 n],
[0 xfffffffffffffffen, 1 , 0 n],
[0 xffffffffffffffffn, 1 , -1 n],
[0 x10000000000000000n, 1 , 0 n],
[0 x10000000000000001n, 1 , -1 n],
[-0 x10000000000000001n, 2 , -1 n],
[-0 x10000000000000000n, 2 , 0 n],
[-0 xffffffffffffffffn, 2 , 1 n],
[-0 xfffffffffffffffen, 2 , -2 n],
[-0 x8000000000000001n, 2 , -1 n],
[-0 x8000000000000000n, 2 , 0 n],
[-0 x7fffffffffffffffn, 2 , 1 n],
[-0 x7ffffffffffffffen, 2 , -2 n],
[-0 x100000001n, 2 , -1 n],
[-0 x100000000n, 2 , 0 n],
[-0 xffffffffn, 2 , 1 n],
[-0 xfffffffen, 2 , -2 n],
[-0 x80000001n, 2 , -1 n],
[-0 x80000000n, 2 , 0 n],
[-0 x7fffffffn, 2 , 1 n],
[-0 x7ffffffen, 2 , -2 n],
[-9 n, 2 , -1 n],
[-8 n, 2 , 0 n],
[-7 n, 2 , 1 n],
[-6 n, 2 , -2 n],
[-5 n, 2 , -1 n],
[-4 n, 2 , 0 n],
[-3 n, 2 , 1 n],
[-2 n, 2 , -2 n],
[-1 n, 2 , -1 n],
[0 n, 2 , 0 n],
[1 n, 2 , 1 n],
[2 n, 2 , -2 n],
[3 n, 2 , -1 n],
[4 n, 2 , 0 n],
[5 n, 2 , 1 n],
[6 n, 2 , -2 n],
[7 n, 2 , -1 n],
[8 n, 2 , 0 n],
[9 n, 2 , 1 n],
[0 x7ffffffen, 2 , -2 n],
[0 x7fffffffn, 2 , -1 n],
[0 x80000000n, 2 , 0 n],
[0 x80000001n, 2 , 1 n],
[0 xfffffffen, 2 , -2 n],
[0 xffffffffn, 2 , -1 n],
[0 x100000000n, 2 , 0 n],
[0 x100000001n, 2 , 1 n],
[0 x7ffffffffffffffen, 2 , -2 n],
[0 x7fffffffffffffffn, 2 , -1 n],
[0 x8000000000000000n, 2 , 0 n],
[0 x8000000000000001n, 2 , 1 n],
[0 xfffffffffffffffen, 2 , -2 n],
[0 xffffffffffffffffn, 2 , -1 n],
[0 x10000000000000000n, 2 , 0 n],
[0 x10000000000000001n, 2 , 1 n],
[-0 x10000000000000001n, 31 , -1 n],
[-0 x10000000000000000n, 31 , 0 n],
[-0 xffffffffffffffffn, 31 , 1 n],
[-0 xfffffffffffffffen, 31 , 2 n],
[-0 x8000000000000001n, 31 , -1 n],
[-0 x8000000000000000n, 31 , 0 n],
[-0 x7fffffffffffffffn, 31 , 1 n],
[-0 x7ffffffffffffffen, 31 , 2 n],
[-0 x100000001n, 31 , -1 n],
[-0 x100000000n, 31 , 0 n],
[-0 xffffffffn, 31 , 1 n],
[-0 xfffffffen, 31 , 2 n],
[-0 x80000001n, 31 , -1 n],
[-0 x80000000n, 31 , 0 n],
[-0 x7fffffffn, 31 , 1 n],
[-0 x7ffffffen, 31 , 2 n],
[-9 n, 31 , -9 n],
[-8 n, 31 , -8 n],
[-7 n, 31 , -7 n],
[-6 n, 31 , -6 n],
[-5 n, 31 , -5 n],
[-4 n, 31 , -4 n],
[-3 n, 31 , -3 n],
[-2 n, 31 , -2 n],
[-1 n, 31 , -1 n],
[0 n, 31 , 0 n],
[1 n, 31 , 1 n],
[2 n, 31 , 2 n],
[3 n, 31 , 3 n],
[4 n, 31 , 4 n],
[5 n, 31 , 5 n],
[6 n, 31 , 6 n],
[7 n, 31 , 7 n],
[8 n, 31 , 8 n],
[9 n, 31 , 9 n],
[0 x7ffffffen, 31 , -2 n],
[0 x7fffffffn, 31 , -1 n],
[0 x80000000n, 31 , 0 n],
[0 x80000001n, 31 , 1 n],
[0 xfffffffen, 31 , -2 n],
[0 xffffffffn, 31 , -1 n],
[0 x100000000n, 31 , 0 n],
[0 x100000001n, 31 , 1 n],
[0 x7ffffffffffffffen, 31 , -2 n],
[0 x7fffffffffffffffn, 31 , -1 n],
[0 x8000000000000000n, 31 , 0 n],
[0 x8000000000000001n, 31 , 1 n],
[0 xfffffffffffffffen, 31 , -2 n],
[0 xffffffffffffffffn, 31 , -1 n],
[0 x10000000000000000n, 31 , 0 n],
[0 x10000000000000001n, 31 , 1 n],
[-0 x10000000000000001n, 32 , -1 n],
[-0 x10000000000000000n, 32 , 0 n],
[-0 xffffffffffffffffn, 32 , 1 n],
[-0 xfffffffffffffffen, 32 , 2 n],
[-0 x8000000000000001n, 32 , -1 n],
[-0 x8000000000000000n, 32 , 0 n],
[-0 x7fffffffffffffffn, 32 , 1 n],
[-0 x7ffffffffffffffen, 32 , 2 n],
[-0 x100000001n, 32 , -1 n],
[-0 x100000000n, 32 , 0 n],
[-0 xffffffffn, 32 , 1 n],
[-0 xfffffffen, 32 , 2 n],
[-0 x80000001n, 32 , 0 x7fffffffn],
[-0 x80000000n, 32 , -0 x80000000n],
[-0 x7fffffffn, 32 , -0 x7fffffffn],
[-0 x7ffffffen, 32 , -0 x7ffffffen],
[-9 n, 32 , -9 n],
[-8 n, 32 , -8 n],
[-7 n, 32 , -7 n],
[-6 n, 32 , -6 n],
[-5 n, 32 , -5 n],
[-4 n, 32 , -4 n],
[-3 n, 32 , -3 n],
[-2 n, 32 , -2 n],
[-1 n, 32 , -1 n],
[0 n, 32 , 0 n],
[1 n, 32 , 1 n],
[2 n, 32 , 2 n],
[3 n, 32 , 3 n],
[4 n, 32 , 4 n],
[5 n, 32 , 5 n],
[6 n, 32 , 6 n],
[7 n, 32 , 7 n],
[8 n, 32 , 8 n],
[9 n, 32 , 9 n],
[0 x7ffffffen, 32 , 0 x7ffffffen],
[0 x7fffffffn, 32 , 0 x7fffffffn],
[0 x80000000n, 32 , -0 x80000000n],
[0 x80000001n, 32 , -0 x7fffffffn],
[0 xfffffffen, 32 , -2 n],
[0 xffffffffn, 32 , -1 n],
[0 x100000000n, 32 , 0 n],
[0 x100000001n, 32 , 1 n],
[0 x7ffffffffffffffen, 32 , -2 n],
[0 x7fffffffffffffffn, 32 , -1 n],
[0 x8000000000000000n, 32 , 0 n],
[0 x8000000000000001n, 32 , 1 n],
[0 xfffffffffffffffen, 32 , -2 n],
[0 xffffffffffffffffn, 32 , -1 n],
[0 x10000000000000000n, 32 , 0 n],
[0 x10000000000000001n, 32 , 1 n],
[-0 x10000000000000001n, 33 , -1 n],
[-0 x10000000000000000n, 33 , 0 n],
[-0 xffffffffffffffffn, 33 , 1 n],
[-0 xfffffffffffffffen, 33 , 2 n],
[-0 x8000000000000001n, 33 , -1 n],
[-0 x8000000000000000n, 33 , 0 n],
[-0 x7fffffffffffffffn, 33 , 1 n],
[-0 x7ffffffffffffffen, 33 , 2 n],
[-0 x100000001n, 33 , 0 xffffffffn],
[-0 x100000000n, 33 , -0 x100000000n],
[-0 xffffffffn, 33 , -0 xffffffffn],
[-0 xfffffffen, 33 , -0 xfffffffen],
[-0 x80000001n, 33 , -0 x80000001n],
[-0 x80000000n, 33 , -0 x80000000n],
[-0 x7fffffffn, 33 , -0 x7fffffffn],
[-0 x7ffffffen, 33 , -0 x7ffffffen],
[-9 n, 33 , -9 n],
[-8 n, 33 , -8 n],
[-7 n, 33 , -7 n],
[-6 n, 33 , -6 n],
[-5 n, 33 , -5 n],
[-4 n, 33 , -4 n],
[-3 n, 33 , -3 n],
[-2 n, 33 , -2 n],
[-1 n, 33 , -1 n],
[0 n, 33 , 0 n],
[1 n, 33 , 1 n],
[2 n, 33 , 2 n],
[3 n, 33 , 3 n],
[4 n, 33 , 4 n],
[5 n, 33 , 5 n],
[6 n, 33 , 6 n],
[7 n, 33 , 7 n],
[8 n, 33 , 8 n],
[9 n, 33 , 9 n],
[0 x7ffffffen, 33 , 0 x7ffffffen],
[0 x7fffffffn, 33 , 0 x7fffffffn],
[0 x80000000n, 33 , 0 x80000000n],
[0 x80000001n, 33 , 0 x80000001n],
[0 xfffffffen, 33 , 0 xfffffffen],
[0 xffffffffn, 33 , 0 xffffffffn],
[0 x100000000n, 33 , -0 x100000000n],
[0 x100000001n, 33 , -0 xffffffffn],
[0 x7ffffffffffffffen, 33 , -2 n],
[0 x7fffffffffffffffn, 33 , -1 n],
[0 x8000000000000000n, 33 , 0 n],
[0 x8000000000000001n, 33 , 1 n],
[0 xfffffffffffffffen, 33 , -2 n],
[0 xffffffffffffffffn, 33 , -1 n],
[0 x10000000000000000n, 33 , 0 n],
[0 x10000000000000001n, 33 , 1 n],
[-0 x10000000000000001n, 63 , -1 n],
[-0 x10000000000000000n, 63 , 0 n],
[-0 xffffffffffffffffn, 63 , 1 n],
[-0 xfffffffffffffffen, 63 , 2 n],
[-0 x8000000000000001n, 63 , -1 n],
[-0 x8000000000000000n, 63 , 0 n],
[-0 x7fffffffffffffffn, 63 , 1 n],
[-0 x7ffffffffffffffen, 63 , 2 n],
[-0 x100000001n, 63 , -0 x100000001n],
[-0 x100000000n, 63 , -0 x100000000n],
[-0 xffffffffn, 63 , -0 xffffffffn],
[-0 xfffffffen, 63 , -0 xfffffffen],
[-0 x80000001n, 63 , -0 x80000001n],
[-0 x80000000n, 63 , -0 x80000000n],
[-0 x7fffffffn, 63 , -0 x7fffffffn],
[-0 x7ffffffen, 63 , -0 x7ffffffen],
[-9 n, 63 , -9 n],
[-8 n, 63 , -8 n],
[-7 n, 63 , -7 n],
[-6 n, 63 , -6 n],
[-5 n, 63 , -5 n],
[-4 n, 63 , -4 n],
[-3 n, 63 , -3 n],
[-2 n, 63 , -2 n],
[-1 n, 63 , -1 n],
[0 n, 63 , 0 n],
[1 n, 63 , 1 n],
[2 n, 63 , 2 n],
[3 n, 63 , 3 n],
[4 n, 63 , 4 n],
[5 n, 63 , 5 n],
[6 n, 63 , 6 n],
[7 n, 63 , 7 n],
[8 n, 63 , 8 n],
[9 n, 63 , 9 n],
[0 x7ffffffen, 63 , 0 x7ffffffen],
[0 x7fffffffn, 63 , 0 x7fffffffn],
[0 x80000000n, 63 , 0 x80000000n],
[0 x80000001n, 63 , 0 x80000001n],
[0 xfffffffen, 63 , 0 xfffffffen],
[0 xffffffffn, 63 , 0 xffffffffn],
[0 x100000000n, 63 , 0 x100000000n],
[0 x100000001n, 63 , 0 x100000001n],
[0 x7ffffffffffffffen, 63 , -2 n],
[0 x7fffffffffffffffn, 63 , -1 n],
[0 x8000000000000000n, 63 , 0 n],
[0 x8000000000000001n, 63 , 1 n],
[0 xfffffffffffffffen, 63 , -2 n],
[0 xffffffffffffffffn, 63 , -1 n],
[0 x10000000000000000n, 63 , 0 n],
[0 x10000000000000001n, 63 , 1 n],
[-0 x10000000000000001n, 64 , -1 n],
[-0 x10000000000000000n, 64 , 0 n],
[-0 xffffffffffffffffn, 64 , 1 n],
[-0 xfffffffffffffffen, 64 , 2 n],
[-0 x8000000000000001n, 64 , 0 x7fffffffffffffffn],
[-0 x8000000000000000n, 64 , -0 x8000000000000000n],
[-0 x7fffffffffffffffn, 64 , -0 x7fffffffffffffffn],
[-0 x7ffffffffffffffen, 64 , -0 x7ffffffffffffffen],
[-0 x100000001n, 64 , -0 x100000001n],
[-0 x100000000n, 64 , -0 x100000000n],
[-0 xffffffffn, 64 , -0 xffffffffn],
[-0 xfffffffen, 64 , -0 xfffffffen],
[-0 x80000001n, 64 , -0 x80000001n],
[-0 x80000000n, 64 , -0 x80000000n],
[-0 x7fffffffn, 64 , -0 x7fffffffn],
[-0 x7ffffffen, 64 , -0 x7ffffffen],
[-9 n, 64 , -9 n],
[-8 n, 64 , -8 n],
[-7 n, 64 , -7 n],
[-6 n, 64 , -6 n],
[-5 n, 64 , -5 n],
[-4 n, 64 , -4 n],
[-3 n, 64 , -3 n],
[-2 n, 64 , -2 n],
[-1 n, 64 , -1 n],
[0 n, 64 , 0 n],
[1 n, 64 , 1 n],
[2 n, 64 , 2 n],
[3 n, 64 , 3 n],
[4 n, 64 , 4 n],
[5 n, 64 , 5 n],
[6 n, 64 , 6 n],
[7 n, 64 , 7 n],
[8 n, 64 , 8 n],
[9 n, 64 , 9 n],
[0 x7ffffffen, 64 , 0 x7ffffffen],
[0 x7fffffffn, 64 , 0 x7fffffffn],
[0 x80000000n, 64 , 0 x80000000n],
[0 x80000001n, 64 , 0 x80000001n],
[0 xfffffffen, 64 , 0 xfffffffen],
[0 xffffffffn, 64 , 0 xffffffffn],
[0 x100000000n, 64 , 0 x100000000n],
[0 x100000001n, 64 , 0 x100000001n],
[0 x7ffffffffffffffen, 64 , 0 x7ffffffffffffffen],
[0 x7fffffffffffffffn, 64 , 0 x7fffffffffffffffn],
[0 x8000000000000000n, 64 , -0 x8000000000000000n],
[0 x8000000000000001n, 64 , -0 x7fffffffffffffffn],
[0 xfffffffffffffffen, 64 , -2 n],
[0 xffffffffffffffffn, 64 , -1 n],
[0 x10000000000000000n, 64 , 0 n],
[0 x10000000000000001n, 64 , 1 n],
[-0 x10000000000000001n, 65 , 0 xffffffffffffffffn],
[-0 x10000000000000000n, 65 , -0 x10000000000000000n],
[-0 xffffffffffffffffn, 65 , -0 xffffffffffffffffn],
[-0 xfffffffffffffffen, 65 , -0 xfffffffffffffffen],
[-0 x8000000000000001n, 65 , -0 x8000000000000001n],
[-0 x8000000000000000n, 65 , -0 x8000000000000000n],
[-0 x7fffffffffffffffn, 65 , -0 x7fffffffffffffffn],
[-0 x7ffffffffffffffen, 65 , -0 x7ffffffffffffffen],
[-0 x100000001n, 65 , -0 x100000001n],
[-0 x100000000n, 65 , -0 x100000000n],
[-0 xffffffffn, 65 , -0 xffffffffn],
[-0 xfffffffen, 65 , -0 xfffffffen],
[-0 x80000001n, 65 , -0 x80000001n],
[-0 x80000000n, 65 , -0 x80000000n],
[-0 x7fffffffn, 65 , -0 x7fffffffn],
[-0 x7ffffffen, 65 , -0 x7ffffffen],
[-9 n, 65 , -9 n],
[-8 n, 65 , -8 n],
[-7 n, 65 , -7 n],
[-6 n, 65 , -6 n],
[-5 n, 65 , -5 n],
[-4 n, 65 , -4 n],
[-3 n, 65 , -3 n],
[-2 n, 65 , -2 n],
[-1 n, 65 , -1 n],
[0 n, 65 , 0 n],
[1 n, 65 , 1 n],
[2 n, 65 , 2 n],
[3 n, 65 , 3 n],
[4 n, 65 , 4 n],
[5 n, 65 , 5 n],
[6 n, 65 , 6 n],
[7 n, 65 , 7 n],
[8 n, 65 , 8 n],
[9 n, 65 , 9 n],
[0 x7ffffffen, 65 , 0 x7ffffffen],
[0 x7fffffffn, 65 , 0 x7fffffffn],
[0 x80000000n, 65 , 0 x80000000n],
[0 x80000001n, 65 , 0 x80000001n],
[0 xfffffffen, 65 , 0 xfffffffen],
[0 xffffffffn, 65 , 0 xffffffffn],
[0 x100000000n, 65 , 0 x100000000n],
[0 x100000001n, 65 , 0 x100000001n],
[0 x7ffffffffffffffen, 65 , 0 x7ffffffffffffffen],
[0 x7fffffffffffffffn, 65 , 0 x7fffffffffffffffn],
[0 x8000000000000000n, 65 , 0 x8000000000000000n],
[0 x8000000000000001n, 65 , 0 x8000000000000001n],
[0 xfffffffffffffffen, 65 , 0 xfffffffffffffffen],
[0 xffffffffffffffffn, 65 , 0 xffffffffffffffffn],
[0 x10000000000000000n, 65 , -0 x10000000000000000n],
[0 x10000000000000001n, 65 , -0 xffffffffffffffffn],
];
function f(tests) {
for (let test of tests) {
let input = test[0 ], bits = test[1 ], expected = test[2 ];
assertEq(BigInt.asIntN(bits, input), expected);
}
}
for (let i = 0 ; i < 10 ; ++i) {
f(tests);
}
Messung V0.5 in Prozent C=100 H=0 G=70