tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bigint-sub-64-fold.js (25133B)


      1 const tests = [
      2  [-0x8000000000000000n, -2n, -0x7ffffffffffffffen],
      3  [-0x7fffffffffffffffn, -2n, -0x7ffffffffffffffdn],
      4  [-0x7ffffffffffffffen, -2n, -0x7ffffffffffffffcn],
      5  [-0x100000001n, -2n, -0xffffffffn],
      6  [-0x100000000n, -2n, -0xfffffffen],
      7  [-0xffffffffn, -2n, -0xfffffffdn],
      8  [-0xfffffffen, -2n, -0xfffffffcn],
      9  [-0x80000001n, -2n, -0x7fffffffn],
     10  [-0x80000000n, -2n, -0x7ffffffen],
     11  [-0x7fffffffn, -2n, -0x7ffffffdn],
     12  [-0x7ffffffen, -2n, -0x7ffffffcn],
     13  [-2n, -2n, 0n],
     14  [-1n, -2n, 1n],
     15  [0n, -2n, 2n],
     16  [1n, -2n, 3n],
     17  [2n, -2n, 4n],
     18  [0x7ffffffen, -2n, 0x80000000n],
     19  [0x7fffffffn, -2n, 0x80000001n],
     20  [0x80000000n, -2n, 0x80000002n],
     21  [0x80000001n, -2n, 0x80000003n],
     22  [0xfffffffen, -2n, 0x100000000n],
     23  [0xffffffffn, -2n, 0x100000001n],
     24  [0x100000000n, -2n, 0x100000002n],
     25  [0x100000001n, -2n, 0x100000003n],
     26  [-0x8000000000000000n, -1n, -0x7fffffffffffffffn],
     27  [-0x7fffffffffffffffn, -1n, -0x7ffffffffffffffen],
     28  [-0x7ffffffffffffffen, -1n, -0x7ffffffffffffffdn],
     29  [-0x100000001n, -1n, -0x100000000n],
     30  [-0x100000000n, -1n, -0xffffffffn],
     31  [-0xffffffffn, -1n, -0xfffffffen],
     32  [-0xfffffffen, -1n, -0xfffffffdn],
     33  [-0x80000001n, -1n, -0x80000000n],
     34  [-0x80000000n, -1n, -0x7fffffffn],
     35  [-0x7fffffffn, -1n, -0x7ffffffen],
     36  [-0x7ffffffen, -1n, -0x7ffffffdn],
     37  [-2n, -1n, -1n],
     38  [-1n, -1n, 0n],
     39  [0n, -1n, 1n],
     40  [1n, -1n, 2n],
     41  [2n, -1n, 3n],
     42  [0x7ffffffen, -1n, 0x7fffffffn],
     43  [0x7fffffffn, -1n, 0x80000000n],
     44  [0x80000000n, -1n, 0x80000001n],
     45  [0x80000001n, -1n, 0x80000002n],
     46  [0xfffffffen, -1n, 0xffffffffn],
     47  [0xffffffffn, -1n, 0x100000000n],
     48  [0x100000000n, -1n, 0x100000001n],
     49  [0x100000001n, -1n, 0x100000002n],
     50  [0x7ffffffffffffffen, -1n, 0x7fffffffffffffffn],
     51  [-0x8000000000000000n, 0n, -0x8000000000000000n],
     52  [-0x7fffffffffffffffn, 0n, -0x7fffffffffffffffn],
     53  [-0x7ffffffffffffffen, 0n, -0x7ffffffffffffffen],
     54  [-0x100000001n, 0n, -0x100000001n],
     55  [-0x100000000n, 0n, -0x100000000n],
     56  [-0xffffffffn, 0n, -0xffffffffn],
     57  [-0xfffffffen, 0n, -0xfffffffen],
     58  [-0x80000001n, 0n, -0x80000001n],
     59  [-0x80000000n, 0n, -0x80000000n],
     60  [-0x7fffffffn, 0n, -0x7fffffffn],
     61  [-0x7ffffffen, 0n, -0x7ffffffen],
     62  [-2n, 0n, -2n],
     63  [-1n, 0n, -1n],
     64  [0n, 0n, 0n],
     65  [1n, 0n, 1n],
     66  [2n, 0n, 2n],
     67  [0x7ffffffen, 0n, 0x7ffffffen],
     68  [0x7fffffffn, 0n, 0x7fffffffn],
     69  [0x80000000n, 0n, 0x80000000n],
     70  [0x80000001n, 0n, 0x80000001n],
     71  [0xfffffffen, 0n, 0xfffffffen],
     72  [0xffffffffn, 0n, 0xffffffffn],
     73  [0x100000000n, 0n, 0x100000000n],
     74  [0x100000001n, 0n, 0x100000001n],
     75  [0x7ffffffffffffffen, 0n, 0x7ffffffffffffffen],
     76  [0x7fffffffffffffffn, 0n, 0x7fffffffffffffffn],
     77  [-0x7fffffffffffffffn, 1n, -0x8000000000000000n],
     78  [-0x7ffffffffffffffen, 1n, -0x7fffffffffffffffn],
     79  [-0x100000001n, 1n, -0x100000002n],
     80  [-0x100000000n, 1n, -0x100000001n],
     81  [-0xffffffffn, 1n, -0x100000000n],
     82  [-0xfffffffen, 1n, -0xffffffffn],
     83  [-0x80000001n, 1n, -0x80000002n],
     84  [-0x80000000n, 1n, -0x80000001n],
     85  [-0x7fffffffn, 1n, -0x80000000n],
     86  [-0x7ffffffen, 1n, -0x7fffffffn],
     87  [-2n, 1n, -3n],
     88  [-1n, 1n, -2n],
     89  [0n, 1n, -1n],
     90  [1n, 1n, 0n],
     91  [2n, 1n, 1n],
     92  [0x7ffffffen, 1n, 0x7ffffffdn],
     93  [0x7fffffffn, 1n, 0x7ffffffen],
     94  [0x80000000n, 1n, 0x7fffffffn],
     95  [0x80000001n, 1n, 0x80000000n],
     96  [0xfffffffen, 1n, 0xfffffffdn],
     97  [0xffffffffn, 1n, 0xfffffffen],
     98  [0x100000000n, 1n, 0xffffffffn],
     99  [0x100000001n, 1n, 0x100000000n],
    100  [0x7ffffffffffffffen, 1n, 0x7ffffffffffffffdn],
    101  [0x7fffffffffffffffn, 1n, 0x7ffffffffffffffen],
    102  [-0x7ffffffffffffffen, 2n, -0x8000000000000000n],
    103  [-0x100000001n, 2n, -0x100000003n],
    104  [-0x100000000n, 2n, -0x100000002n],
    105  [-0xffffffffn, 2n, -0x100000001n],
    106  [-0xfffffffen, 2n, -0x100000000n],
    107  [-0x80000001n, 2n, -0x80000003n],
    108  [-0x80000000n, 2n, -0x80000002n],
    109  [-0x7fffffffn, 2n, -0x80000001n],
    110  [-0x7ffffffen, 2n, -0x80000000n],
    111  [-2n, 2n, -4n],
    112  [-1n, 2n, -3n],
    113  [0n, 2n, -2n],
    114  [1n, 2n, -1n],
    115  [2n, 2n, 0n],
    116  [0x7ffffffen, 2n, 0x7ffffffcn],
    117  [0x7fffffffn, 2n, 0x7ffffffdn],
    118  [0x80000000n, 2n, 0x7ffffffen],
    119  [0x80000001n, 2n, 0x7fffffffn],
    120  [0xfffffffen, 2n, 0xfffffffcn],
    121  [0xffffffffn, 2n, 0xfffffffdn],
    122  [0x100000000n, 2n, 0xfffffffen],
    123  [0x100000001n, 2n, 0xffffffffn],
    124  [0x7ffffffffffffffen, 2n, 0x7ffffffffffffffcn],
    125  [0x7fffffffffffffffn, 2n, 0x7ffffffffffffffdn],
    126  [-0x100000001n, 0x7ffffffen, -0x17fffffffn],
    127  [-0x100000000n, 0x7ffffffen, -0x17ffffffen],
    128  [-0xffffffffn, 0x7ffffffen, -0x17ffffffdn],
    129  [-0xfffffffen, 0x7ffffffen, -0x17ffffffcn],
    130  [-0x80000001n, 0x7ffffffen, -0xffffffffn],
    131  [-0x80000000n, 0x7ffffffen, -0xfffffffen],
    132  [-0x7fffffffn, 0x7ffffffen, -0xfffffffdn],
    133  [-0x7ffffffen, 0x7ffffffen, -0xfffffffcn],
    134  [-2n, 0x7ffffffen, -0x80000000n],
    135  [-1n, 0x7ffffffen, -0x7fffffffn],
    136  [0n, 0x7ffffffen, -0x7ffffffen],
    137  [1n, 0x7ffffffen, -0x7ffffffdn],
    138  [2n, 0x7ffffffen, -0x7ffffffcn],
    139  [0x7ffffffen, 0x7ffffffen, 0n],
    140  [0x7fffffffn, 0x7ffffffen, 1n],
    141  [0x80000000n, 0x7ffffffen, 2n],
    142  [0x80000001n, 0x7ffffffen, 3n],
    143  [0xfffffffen, 0x7ffffffen, 0x80000000n],
    144  [0xffffffffn, 0x7ffffffen, 0x80000001n],
    145  [0x100000000n, 0x7ffffffen, 0x80000002n],
    146  [0x100000001n, 0x7ffffffen, 0x80000003n],
    147  [0x7ffffffffffffffen, 0x7ffffffen, 0x7fffffff80000000n],
    148  [0x7fffffffffffffffn, 0x7ffffffen, 0x7fffffff80000001n],
    149  [-0x100000001n, 0x7fffffffn, -0x180000000n],
    150  [-0x100000000n, 0x7fffffffn, -0x17fffffffn],
    151  [-0xffffffffn, 0x7fffffffn, -0x17ffffffen],
    152  [-0xfffffffen, 0x7fffffffn, -0x17ffffffdn],
    153  [-0x80000001n, 0x7fffffffn, -0x100000000n],
    154  [-0x80000000n, 0x7fffffffn, -0xffffffffn],
    155  [-0x7fffffffn, 0x7fffffffn, -0xfffffffen],
    156  [-0x7ffffffen, 0x7fffffffn, -0xfffffffdn],
    157  [-2n, 0x7fffffffn, -0x80000001n],
    158  [-1n, 0x7fffffffn, -0x80000000n],
    159  [0n, 0x7fffffffn, -0x7fffffffn],
    160  [1n, 0x7fffffffn, -0x7ffffffen],
    161  [2n, 0x7fffffffn, -0x7ffffffdn],
    162  [0x7ffffffen, 0x7fffffffn, -1n],
    163  [0x7fffffffn, 0x7fffffffn, 0n],
    164  [0x80000000n, 0x7fffffffn, 1n],
    165  [0x80000001n, 0x7fffffffn, 2n],
    166  [0xfffffffen, 0x7fffffffn, 0x7fffffffn],
    167  [0xffffffffn, 0x7fffffffn, 0x80000000n],
    168  [0x100000000n, 0x7fffffffn, 0x80000001n],
    169  [0x100000001n, 0x7fffffffn, 0x80000002n],
    170  [0x7ffffffffffffffen, 0x7fffffffn, 0x7fffffff7fffffffn],
    171  [0x7fffffffffffffffn, 0x7fffffffn, 0x7fffffff80000000n],
    172  [-0x100000001n, 0x80000000n, -0x180000001n],
    173  [-0x100000000n, 0x80000000n, -0x180000000n],
    174  [-0xffffffffn, 0x80000000n, -0x17fffffffn],
    175  [-0xfffffffen, 0x80000000n, -0x17ffffffen],
    176  [-0x80000001n, 0x80000000n, -0x100000001n],
    177  [-0x80000000n, 0x80000000n, -0x100000000n],
    178  [-0x7fffffffn, 0x80000000n, -0xffffffffn],
    179  [-0x7ffffffen, 0x80000000n, -0xfffffffen],
    180  [-2n, 0x80000000n, -0x80000002n],
    181  [-1n, 0x80000000n, -0x80000001n],
    182  [0n, 0x80000000n, -0x80000000n],
    183  [1n, 0x80000000n, -0x7fffffffn],
    184  [2n, 0x80000000n, -0x7ffffffen],
    185  [0x7ffffffen, 0x80000000n, -2n],
    186  [0x7fffffffn, 0x80000000n, -1n],
    187  [0x80000000n, 0x80000000n, 0n],
    188  [0x80000001n, 0x80000000n, 1n],
    189  [0xfffffffen, 0x80000000n, 0x7ffffffen],
    190  [0xffffffffn, 0x80000000n, 0x7fffffffn],
    191  [0x100000000n, 0x80000000n, 0x80000000n],
    192  [0x100000001n, 0x80000000n, 0x80000001n],
    193  [0x7ffffffffffffffen, 0x80000000n, 0x7fffffff7ffffffen],
    194  [0x7fffffffffffffffn, 0x80000000n, 0x7fffffff7fffffffn],
    195  [-0x100000001n, 0x80000001n, -0x180000002n],
    196  [-0x100000000n, 0x80000001n, -0x180000001n],
    197  [-0xffffffffn, 0x80000001n, -0x180000000n],
    198  [-0xfffffffen, 0x80000001n, -0x17fffffffn],
    199  [-0x80000001n, 0x80000001n, -0x100000002n],
    200  [-0x80000000n, 0x80000001n, -0x100000001n],
    201  [-0x7fffffffn, 0x80000001n, -0x100000000n],
    202  [-0x7ffffffen, 0x80000001n, -0xffffffffn],
    203  [-2n, 0x80000001n, -0x80000003n],
    204  [-1n, 0x80000001n, -0x80000002n],
    205  [0n, 0x80000001n, -0x80000001n],
    206  [1n, 0x80000001n, -0x80000000n],
    207  [2n, 0x80000001n, -0x7fffffffn],
    208  [0x7ffffffen, 0x80000001n, -3n],
    209  [0x7fffffffn, 0x80000001n, -2n],
    210  [0x80000000n, 0x80000001n, -1n],
    211  [0x80000001n, 0x80000001n, 0n],
    212  [0xfffffffen, 0x80000001n, 0x7ffffffdn],
    213  [0xffffffffn, 0x80000001n, 0x7ffffffen],
    214  [0x100000000n, 0x80000001n, 0x7fffffffn],
    215  [0x100000001n, 0x80000001n, 0x80000000n],
    216  [0x7ffffffffffffffen, 0x80000001n, 0x7fffffff7ffffffdn],
    217  [0x7fffffffffffffffn, 0x80000001n, 0x7fffffff7ffffffen],
    218  [-0x8000000000000000n, -0x80000001n, -0x7fffffff7fffffffn],
    219  [-0x7fffffffffffffffn, -0x80000001n, -0x7fffffff7ffffffen],
    220  [-0x7ffffffffffffffen, -0x80000001n, -0x7fffffff7ffffffdn],
    221  [-0x100000001n, -0x80000001n, -0x80000000n],
    222  [-0x100000000n, -0x80000001n, -0x7fffffffn],
    223  [-0xffffffffn, -0x80000001n, -0x7ffffffen],
    224  [-0xfffffffen, -0x80000001n, -0x7ffffffdn],
    225  [-0x80000001n, -0x80000001n, 0n],
    226  [-0x80000000n, -0x80000001n, 1n],
    227  [-0x7fffffffn, -0x80000001n, 2n],
    228  [-0x7ffffffen, -0x80000001n, 3n],
    229  [-2n, -0x80000001n, 0x7fffffffn],
    230  [-1n, -0x80000001n, 0x80000000n],
    231  [0n, -0x80000001n, 0x80000001n],
    232  [1n, -0x80000001n, 0x80000002n],
    233  [2n, -0x80000001n, 0x80000003n],
    234  [0x7ffffffen, -0x80000001n, 0xffffffffn],
    235  [0x7fffffffn, -0x80000001n, 0x100000000n],
    236  [0x80000000n, -0x80000001n, 0x100000001n],
    237  [0x80000001n, -0x80000001n, 0x100000002n],
    238  [0xfffffffen, -0x80000001n, 0x17fffffffn],
    239  [0xffffffffn, -0x80000001n, 0x180000000n],
    240  [0x100000000n, -0x80000001n, 0x180000001n],
    241  [0x100000001n, -0x80000001n, 0x180000002n],
    242  [-0x8000000000000000n, -0x80000000n, -0x7fffffff80000000n],
    243  [-0x7fffffffffffffffn, -0x80000000n, -0x7fffffff7fffffffn],
    244  [-0x7ffffffffffffffen, -0x80000000n, -0x7fffffff7ffffffen],
    245  [-0x100000001n, -0x80000000n, -0x80000001n],
    246  [-0x100000000n, -0x80000000n, -0x80000000n],
    247  [-0xffffffffn, -0x80000000n, -0x7fffffffn],
    248  [-0xfffffffen, -0x80000000n, -0x7ffffffen],
    249  [-0x80000001n, -0x80000000n, -1n],
    250  [-0x80000000n, -0x80000000n, 0n],
    251  [-0x7fffffffn, -0x80000000n, 1n],
    252  [-0x7ffffffen, -0x80000000n, 2n],
    253  [-2n, -0x80000000n, 0x7ffffffen],
    254  [-1n, -0x80000000n, 0x7fffffffn],
    255  [0n, -0x80000000n, 0x80000000n],
    256  [1n, -0x80000000n, 0x80000001n],
    257  [2n, -0x80000000n, 0x80000002n],
    258  [0x7ffffffen, -0x80000000n, 0xfffffffen],
    259  [0x7fffffffn, -0x80000000n, 0xffffffffn],
    260  [0x80000000n, -0x80000000n, 0x100000000n],
    261  [0x80000001n, -0x80000000n, 0x100000001n],
    262  [0xfffffffen, -0x80000000n, 0x17ffffffen],
    263  [0xffffffffn, -0x80000000n, 0x17fffffffn],
    264  [0x100000000n, -0x80000000n, 0x180000000n],
    265  [0x100000001n, -0x80000000n, 0x180000001n],
    266  [-0x8000000000000000n, -0x7fffffffn, -0x7fffffff80000001n],
    267  [-0x7fffffffffffffffn, -0x7fffffffn, -0x7fffffff80000000n],
    268  [-0x7ffffffffffffffen, -0x7fffffffn, -0x7fffffff7fffffffn],
    269  [-0x100000001n, -0x7fffffffn, -0x80000002n],
    270  [-0x100000000n, -0x7fffffffn, -0x80000001n],
    271  [-0xffffffffn, -0x7fffffffn, -0x80000000n],
    272  [-0xfffffffen, -0x7fffffffn, -0x7fffffffn],
    273  [-0x80000001n, -0x7fffffffn, -2n],
    274  [-0x80000000n, -0x7fffffffn, -1n],
    275  [-0x7fffffffn, -0x7fffffffn, 0n],
    276  [-0x7ffffffen, -0x7fffffffn, 1n],
    277  [-2n, -0x7fffffffn, 0x7ffffffdn],
    278  [-1n, -0x7fffffffn, 0x7ffffffen],
    279  [0n, -0x7fffffffn, 0x7fffffffn],
    280  [1n, -0x7fffffffn, 0x80000000n],
    281  [2n, -0x7fffffffn, 0x80000001n],
    282  [0x7ffffffen, -0x7fffffffn, 0xfffffffdn],
    283  [0x7fffffffn, -0x7fffffffn, 0xfffffffen],
    284  [0x80000000n, -0x7fffffffn, 0xffffffffn],
    285  [0x80000001n, -0x7fffffffn, 0x100000000n],
    286  [0xfffffffen, -0x7fffffffn, 0x17ffffffdn],
    287  [0xffffffffn, -0x7fffffffn, 0x17ffffffen],
    288  [0x100000000n, -0x7fffffffn, 0x17fffffffn],
    289  [0x100000001n, -0x7fffffffn, 0x180000000n],
    290  [-0x8000000000000000n, -0x7ffffffen, -0x7fffffff80000002n],
    291  [-0x7fffffffffffffffn, -0x7ffffffen, -0x7fffffff80000001n],
    292  [-0x7ffffffffffffffen, -0x7ffffffen, -0x7fffffff80000000n],
    293  [-0x100000001n, -0x7ffffffen, -0x80000003n],
    294  [-0x100000000n, -0x7ffffffen, -0x80000002n],
    295  [-0xffffffffn, -0x7ffffffen, -0x80000001n],
    296  [-0xfffffffen, -0x7ffffffen, -0x80000000n],
    297  [-0x80000001n, -0x7ffffffen, -3n],
    298  [-0x80000000n, -0x7ffffffen, -2n],
    299  [-0x7fffffffn, -0x7ffffffen, -1n],
    300  [-0x7ffffffen, -0x7ffffffen, 0n],
    301  [-2n, -0x7ffffffen, 0x7ffffffcn],
    302  [-1n, -0x7ffffffen, 0x7ffffffdn],
    303  [0n, -0x7ffffffen, 0x7ffffffen],
    304  [1n, -0x7ffffffen, 0x7fffffffn],
    305  [2n, -0x7ffffffen, 0x80000000n],
    306  [0x7ffffffen, -0x7ffffffen, 0xfffffffcn],
    307  [0x7fffffffn, -0x7ffffffen, 0xfffffffdn],
    308  [0x80000000n, -0x7ffffffen, 0xfffffffen],
    309  [0x80000001n, -0x7ffffffen, 0xffffffffn],
    310  [0xfffffffen, -0x7ffffffen, 0x17ffffffcn],
    311  [0xffffffffn, -0x7ffffffen, 0x17ffffffdn],
    312  [0x100000000n, -0x7ffffffen, 0x17ffffffen],
    313  [0x100000001n, -0x7ffffffen, 0x17fffffffn],
    314  [-0x100000001n, 0xfffffffen, -0x1ffffffffn],
    315  [-0x100000000n, 0xfffffffen, -0x1fffffffen],
    316  [-0xffffffffn, 0xfffffffen, -0x1fffffffdn],
    317  [-0xfffffffen, 0xfffffffen, -0x1fffffffcn],
    318  [-0x80000001n, 0xfffffffen, -0x17fffffffn],
    319  [-0x80000000n, 0xfffffffen, -0x17ffffffen],
    320  [-0x7fffffffn, 0xfffffffen, -0x17ffffffdn],
    321  [-0x7ffffffen, 0xfffffffen, -0x17ffffffcn],
    322  [-2n, 0xfffffffen, -0x100000000n],
    323  [-1n, 0xfffffffen, -0xffffffffn],
    324  [0n, 0xfffffffen, -0xfffffffen],
    325  [1n, 0xfffffffen, -0xfffffffdn],
    326  [2n, 0xfffffffen, -0xfffffffcn],
    327  [0x7ffffffen, 0xfffffffen, -0x80000000n],
    328  [0x7fffffffn, 0xfffffffen, -0x7fffffffn],
    329  [0x80000000n, 0xfffffffen, -0x7ffffffen],
    330  [0x80000001n, 0xfffffffen, -0x7ffffffdn],
    331  [0xfffffffen, 0xfffffffen, 0n],
    332  [0xffffffffn, 0xfffffffen, 1n],
    333  [0x100000000n, 0xfffffffen, 2n],
    334  [0x100000001n, 0xfffffffen, 3n],
    335  [0x7ffffffffffffffen, 0xfffffffen, 0x7fffffff00000000n],
    336  [0x7fffffffffffffffn, 0xfffffffen, 0x7fffffff00000001n],
    337  [-0x100000001n, 0xffffffffn, -0x200000000n],
    338  [-0x100000000n, 0xffffffffn, -0x1ffffffffn],
    339  [-0xffffffffn, 0xffffffffn, -0x1fffffffen],
    340  [-0xfffffffen, 0xffffffffn, -0x1fffffffdn],
    341  [-0x80000001n, 0xffffffffn, -0x180000000n],
    342  [-0x80000000n, 0xffffffffn, -0x17fffffffn],
    343  [-0x7fffffffn, 0xffffffffn, -0x17ffffffen],
    344  [-0x7ffffffen, 0xffffffffn, -0x17ffffffdn],
    345  [-2n, 0xffffffffn, -0x100000001n],
    346  [-1n, 0xffffffffn, -0x100000000n],
    347  [0n, 0xffffffffn, -0xffffffffn],
    348  [1n, 0xffffffffn, -0xfffffffen],
    349  [2n, 0xffffffffn, -0xfffffffdn],
    350  [0x7ffffffen, 0xffffffffn, -0x80000001n],
    351  [0x7fffffffn, 0xffffffffn, -0x80000000n],
    352  [0x80000000n, 0xffffffffn, -0x7fffffffn],
    353  [0x80000001n, 0xffffffffn, -0x7ffffffen],
    354  [0xfffffffen, 0xffffffffn, -1n],
    355  [0xffffffffn, 0xffffffffn, 0n],
    356  [0x100000000n, 0xffffffffn, 1n],
    357  [0x100000001n, 0xffffffffn, 2n],
    358  [0x7ffffffffffffffen, 0xffffffffn, 0x7ffffffeffffffffn],
    359  [0x7fffffffffffffffn, 0xffffffffn, 0x7fffffff00000000n],
    360  [-0x100000001n, 0x100000000n, -0x200000001n],
    361  [-0x100000000n, 0x100000000n, -0x200000000n],
    362  [-0xffffffffn, 0x100000000n, -0x1ffffffffn],
    363  [-0xfffffffen, 0x100000000n, -0x1fffffffen],
    364  [-0x80000001n, 0x100000000n, -0x180000001n],
    365  [-0x80000000n, 0x100000000n, -0x180000000n],
    366  [-0x7fffffffn, 0x100000000n, -0x17fffffffn],
    367  [-0x7ffffffen, 0x100000000n, -0x17ffffffen],
    368  [-2n, 0x100000000n, -0x100000002n],
    369  [-1n, 0x100000000n, -0x100000001n],
    370  [0n, 0x100000000n, -0x100000000n],
    371  [1n, 0x100000000n, -0xffffffffn],
    372  [2n, 0x100000000n, -0xfffffffen],
    373  [0x7ffffffen, 0x100000000n, -0x80000002n],
    374  [0x7fffffffn, 0x100000000n, -0x80000001n],
    375  [0x80000000n, 0x100000000n, -0x80000000n],
    376  [0x80000001n, 0x100000000n, -0x7fffffffn],
    377  [0xfffffffen, 0x100000000n, -2n],
    378  [0xffffffffn, 0x100000000n, -1n],
    379  [0x100000000n, 0x100000000n, 0n],
    380  [0x100000001n, 0x100000000n, 1n],
    381  [0x7ffffffffffffffen, 0x100000000n, 0x7ffffffefffffffen],
    382  [0x7fffffffffffffffn, 0x100000000n, 0x7ffffffeffffffffn],
    383  [-0x100000001n, 0x100000001n, -0x200000002n],
    384  [-0x100000000n, 0x100000001n, -0x200000001n],
    385  [-0xffffffffn, 0x100000001n, -0x200000000n],
    386  [-0xfffffffen, 0x100000001n, -0x1ffffffffn],
    387  [-0x80000001n, 0x100000001n, -0x180000002n],
    388  [-0x80000000n, 0x100000001n, -0x180000001n],
    389  [-0x7fffffffn, 0x100000001n, -0x180000000n],
    390  [-0x7ffffffen, 0x100000001n, -0x17fffffffn],
    391  [-2n, 0x100000001n, -0x100000003n],
    392  [-1n, 0x100000001n, -0x100000002n],
    393  [0n, 0x100000001n, -0x100000001n],
    394  [1n, 0x100000001n, -0x100000000n],
    395  [2n, 0x100000001n, -0xffffffffn],
    396  [0x7ffffffen, 0x100000001n, -0x80000003n],
    397  [0x7fffffffn, 0x100000001n, -0x80000002n],
    398  [0x80000000n, 0x100000001n, -0x80000001n],
    399  [0x80000001n, 0x100000001n, -0x80000000n],
    400  [0xfffffffen, 0x100000001n, -3n],
    401  [0xffffffffn, 0x100000001n, -2n],
    402  [0x100000000n, 0x100000001n, -1n],
    403  [0x100000001n, 0x100000001n, 0n],
    404  [0x7ffffffffffffffen, 0x100000001n, 0x7ffffffefffffffdn],
    405  [0x7fffffffffffffffn, 0x100000001n, 0x7ffffffefffffffen],
    406  [-0x8000000000000000n, -0x100000001n, -0x7ffffffeffffffffn],
    407  [-0x7fffffffffffffffn, -0x100000001n, -0x7ffffffefffffffen],
    408  [-0x7ffffffffffffffen, -0x100000001n, -0x7ffffffefffffffdn],
    409  [-0x100000001n, -0x100000001n, 0n],
    410  [-0x100000000n, -0x100000001n, 1n],
    411  [-0xffffffffn, -0x100000001n, 2n],
    412  [-0xfffffffen, -0x100000001n, 3n],
    413  [-0x80000001n, -0x100000001n, 0x80000000n],
    414  [-0x80000000n, -0x100000001n, 0x80000001n],
    415  [-0x7fffffffn, -0x100000001n, 0x80000002n],
    416  [-0x7ffffffen, -0x100000001n, 0x80000003n],
    417  [-2n, -0x100000001n, 0xffffffffn],
    418  [-1n, -0x100000001n, 0x100000000n],
    419  [0n, -0x100000001n, 0x100000001n],
    420  [1n, -0x100000001n, 0x100000002n],
    421  [2n, -0x100000001n, 0x100000003n],
    422  [0x7ffffffen, -0x100000001n, 0x17fffffffn],
    423  [0x7fffffffn, -0x100000001n, 0x180000000n],
    424  [0x80000000n, -0x100000001n, 0x180000001n],
    425  [0x80000001n, -0x100000001n, 0x180000002n],
    426  [0xfffffffen, -0x100000001n, 0x1ffffffffn],
    427  [0xffffffffn, -0x100000001n, 0x200000000n],
    428  [0x100000000n, -0x100000001n, 0x200000001n],
    429  [0x100000001n, -0x100000001n, 0x200000002n],
    430  [-0x8000000000000000n, -0x100000000n, -0x7fffffff00000000n],
    431  [-0x7fffffffffffffffn, -0x100000000n, -0x7ffffffeffffffffn],
    432  [-0x7ffffffffffffffen, -0x100000000n, -0x7ffffffefffffffen],
    433  [-0x100000001n, -0x100000000n, -1n],
    434  [-0x100000000n, -0x100000000n, 0n],
    435  [-0xffffffffn, -0x100000000n, 1n],
    436  [-0xfffffffen, -0x100000000n, 2n],
    437  [-0x80000001n, -0x100000000n, 0x7fffffffn],
    438  [-0x80000000n, -0x100000000n, 0x80000000n],
    439  [-0x7fffffffn, -0x100000000n, 0x80000001n],
    440  [-0x7ffffffen, -0x100000000n, 0x80000002n],
    441  [-2n, -0x100000000n, 0xfffffffen],
    442  [-1n, -0x100000000n, 0xffffffffn],
    443  [0n, -0x100000000n, 0x100000000n],
    444  [1n, -0x100000000n, 0x100000001n],
    445  [2n, -0x100000000n, 0x100000002n],
    446  [0x7ffffffen, -0x100000000n, 0x17ffffffen],
    447  [0x7fffffffn, -0x100000000n, 0x17fffffffn],
    448  [0x80000000n, -0x100000000n, 0x180000000n],
    449  [0x80000001n, -0x100000000n, 0x180000001n],
    450  [0xfffffffen, -0x100000000n, 0x1fffffffen],
    451  [0xffffffffn, -0x100000000n, 0x1ffffffffn],
    452  [0x100000000n, -0x100000000n, 0x200000000n],
    453  [0x100000001n, -0x100000000n, 0x200000001n],
    454  [-0x8000000000000000n, -0xffffffffn, -0x7fffffff00000001n],
    455  [-0x7fffffffffffffffn, -0xffffffffn, -0x7fffffff00000000n],
    456  [-0x7ffffffffffffffen, -0xffffffffn, -0x7ffffffeffffffffn],
    457  [-0x100000001n, -0xffffffffn, -2n],
    458  [-0x100000000n, -0xffffffffn, -1n],
    459  [-0xffffffffn, -0xffffffffn, 0n],
    460  [-0xfffffffen, -0xffffffffn, 1n],
    461  [-0x80000001n, -0xffffffffn, 0x7ffffffen],
    462  [-0x80000000n, -0xffffffffn, 0x7fffffffn],
    463  [-0x7fffffffn, -0xffffffffn, 0x80000000n],
    464  [-0x7ffffffen, -0xffffffffn, 0x80000001n],
    465  [-2n, -0xffffffffn, 0xfffffffdn],
    466  [-1n, -0xffffffffn, 0xfffffffen],
    467  [0n, -0xffffffffn, 0xffffffffn],
    468  [1n, -0xffffffffn, 0x100000000n],
    469  [2n, -0xffffffffn, 0x100000001n],
    470  [0x7ffffffen, -0xffffffffn, 0x17ffffffdn],
    471  [0x7fffffffn, -0xffffffffn, 0x17ffffffen],
    472  [0x80000000n, -0xffffffffn, 0x17fffffffn],
    473  [0x80000001n, -0xffffffffn, 0x180000000n],
    474  [0xfffffffen, -0xffffffffn, 0x1fffffffdn],
    475  [0xffffffffn, -0xffffffffn, 0x1fffffffen],
    476  [0x100000000n, -0xffffffffn, 0x1ffffffffn],
    477  [0x100000001n, -0xffffffffn, 0x200000000n],
    478  [-0x8000000000000000n, -0xfffffffen, -0x7fffffff00000002n],
    479  [-0x7fffffffffffffffn, -0xfffffffen, -0x7fffffff00000001n],
    480  [-0x7ffffffffffffffen, -0xfffffffen, -0x7fffffff00000000n],
    481  [-0x100000001n, -0xfffffffen, -3n],
    482  [-0x100000000n, -0xfffffffen, -2n],
    483  [-0xffffffffn, -0xfffffffen, -1n],
    484  [-0xfffffffen, -0xfffffffen, 0n],
    485  [-0x80000001n, -0xfffffffen, 0x7ffffffdn],
    486  [-0x80000000n, -0xfffffffen, 0x7ffffffen],
    487  [-0x7fffffffn, -0xfffffffen, 0x7fffffffn],
    488  [-0x7ffffffen, -0xfffffffen, 0x80000000n],
    489  [-2n, -0xfffffffen, 0xfffffffcn],
    490  [-1n, -0xfffffffen, 0xfffffffdn],
    491  [0n, -0xfffffffen, 0xfffffffen],
    492  [1n, -0xfffffffen, 0xffffffffn],
    493  [2n, -0xfffffffen, 0x100000000n],
    494  [0x7ffffffen, -0xfffffffen, 0x17ffffffcn],
    495  [0x7fffffffn, -0xfffffffen, 0x17ffffffdn],
    496  [0x80000000n, -0xfffffffen, 0x17ffffffen],
    497  [0x80000001n, -0xfffffffen, 0x17fffffffn],
    498  [0xfffffffen, -0xfffffffen, 0x1fffffffcn],
    499  [0xffffffffn, -0xfffffffen, 0x1fffffffdn],
    500  [0x100000000n, -0xfffffffen, 0x1fffffffen],
    501  [0x100000001n, -0xfffffffen, 0x1ffffffffn],
    502  [-2n, 0x7ffffffffffffffen, -0x8000000000000000n],
    503  [-1n, 0x7ffffffffffffffen, -0x7fffffffffffffffn],
    504  [0n, 0x7ffffffffffffffen, -0x7ffffffffffffffen],
    505  [1n, 0x7ffffffffffffffen, -0x7ffffffffffffffdn],
    506  [2n, 0x7ffffffffffffffen, -0x7ffffffffffffffcn],
    507  [0x7ffffffen, 0x7ffffffffffffffen, -0x7fffffff80000000n],
    508  [0x7fffffffn, 0x7ffffffffffffffen, -0x7fffffff7fffffffn],
    509  [0x80000000n, 0x7ffffffffffffffen, -0x7fffffff7ffffffen],
    510  [0x80000001n, 0x7ffffffffffffffen, -0x7fffffff7ffffffdn],
    511  [0xfffffffen, 0x7ffffffffffffffen, -0x7fffffff00000000n],
    512  [0xffffffffn, 0x7ffffffffffffffen, -0x7ffffffeffffffffn],
    513  [0x100000000n, 0x7ffffffffffffffen, -0x7ffffffefffffffen],
    514  [0x100000001n, 0x7ffffffffffffffen, -0x7ffffffefffffffdn],
    515  [0x7ffffffffffffffen, 0x7ffffffffffffffen, 0n],
    516  [0x7fffffffffffffffn, 0x7ffffffffffffffen, 1n],
    517  [-1n, 0x7fffffffffffffffn, -0x8000000000000000n],
    518  [0n, 0x7fffffffffffffffn, -0x7fffffffffffffffn],
    519  [1n, 0x7fffffffffffffffn, -0x7ffffffffffffffen],
    520  [2n, 0x7fffffffffffffffn, -0x7ffffffffffffffdn],
    521  [0x7ffffffen, 0x7fffffffffffffffn, -0x7fffffff80000001n],
    522  [0x7fffffffn, 0x7fffffffffffffffn, -0x7fffffff80000000n],
    523  [0x80000000n, 0x7fffffffffffffffn, -0x7fffffff7fffffffn],
    524  [0x80000001n, 0x7fffffffffffffffn, -0x7fffffff7ffffffen],
    525  [0xfffffffen, 0x7fffffffffffffffn, -0x7fffffff00000001n],
    526  [0xffffffffn, 0x7fffffffffffffffn, -0x7fffffff00000000n],
    527  [0x100000000n, 0x7fffffffffffffffn, -0x7ffffffeffffffffn],
    528  [0x100000001n, 0x7fffffffffffffffn, -0x7ffffffefffffffen],
    529  [0x7ffffffffffffffen, 0x7fffffffffffffffn, -1n],
    530  [0x7fffffffffffffffn, 0x7fffffffffffffffn, 0n],
    531  [-0x8000000000000000n, -0x8000000000000000n, 0n],
    532  [-0x7fffffffffffffffn, -0x8000000000000000n, 1n],
    533  [-0x7ffffffffffffffen, -0x8000000000000000n, 2n],
    534  [-0x100000001n, -0x8000000000000000n, 0x7ffffffeffffffffn],
    535  [-0x100000000n, -0x8000000000000000n, 0x7fffffff00000000n],
    536  [-0xffffffffn, -0x8000000000000000n, 0x7fffffff00000001n],
    537  [-0xfffffffen, -0x8000000000000000n, 0x7fffffff00000002n],
    538  [-0x80000001n, -0x8000000000000000n, 0x7fffffff7fffffffn],
    539  [-0x80000000n, -0x8000000000000000n, 0x7fffffff80000000n],
    540  [-0x7fffffffn, -0x8000000000000000n, 0x7fffffff80000001n],
    541  [-0x7ffffffen, -0x8000000000000000n, 0x7fffffff80000002n],
    542  [-2n, -0x8000000000000000n, 0x7ffffffffffffffen],
    543  [-1n, -0x8000000000000000n, 0x7fffffffffffffffn],
    544  [-0x8000000000000000n, -0x7fffffffffffffffn, -1n],
    545  [-0x7fffffffffffffffn, -0x7fffffffffffffffn, 0n],
    546  [-0x7ffffffffffffffen, -0x7fffffffffffffffn, 1n],
    547  [-0x100000001n, -0x7fffffffffffffffn, 0x7ffffffefffffffen],
    548  [-0x100000000n, -0x7fffffffffffffffn, 0x7ffffffeffffffffn],
    549  [-0xffffffffn, -0x7fffffffffffffffn, 0x7fffffff00000000n],
    550  [-0xfffffffen, -0x7fffffffffffffffn, 0x7fffffff00000001n],
    551  [-0x80000001n, -0x7fffffffffffffffn, 0x7fffffff7ffffffen],
    552  [-0x80000000n, -0x7fffffffffffffffn, 0x7fffffff7fffffffn],
    553  [-0x7fffffffn, -0x7fffffffffffffffn, 0x7fffffff80000000n],
    554  [-0x7ffffffen, -0x7fffffffffffffffn, 0x7fffffff80000001n],
    555  [-2n, -0x7fffffffffffffffn, 0x7ffffffffffffffdn],
    556  [-1n, -0x7fffffffffffffffn, 0x7ffffffffffffffen],
    557  [0n, -0x7fffffffffffffffn, 0x7fffffffffffffffn],
    558  [-0x8000000000000000n, -0x7ffffffffffffffen, -2n],
    559  [-0x7fffffffffffffffn, -0x7ffffffffffffffen, -1n],
    560  [-0x7ffffffffffffffen, -0x7ffffffffffffffen, 0n],
    561  [-0x100000001n, -0x7ffffffffffffffen, 0x7ffffffefffffffdn],
    562  [-0x100000000n, -0x7ffffffffffffffen, 0x7ffffffefffffffen],
    563  [-0xffffffffn, -0x7ffffffffffffffen, 0x7ffffffeffffffffn],
    564  [-0xfffffffen, -0x7ffffffffffffffen, 0x7fffffff00000000n],
    565  [-0x80000001n, -0x7ffffffffffffffen, 0x7fffffff7ffffffdn],
    566  [-0x80000000n, -0x7ffffffffffffffen, 0x7fffffff7ffffffen],
    567  [-0x7fffffffn, -0x7ffffffffffffffen, 0x7fffffff7fffffffn],
    568  [-0x7ffffffen, -0x7ffffffffffffffen, 0x7fffffff80000000n],
    569  [-2n, -0x7ffffffffffffffen, 0x7ffffffffffffffcn],
    570  [-1n, -0x7ffffffffffffffen, 0x7ffffffffffffffdn],
    571  [0n, -0x7ffffffffffffffen, 0x7ffffffffffffffen],
    572  [1n, -0x7ffffffffffffffen, 0x7fffffffffffffffn],
    573 ];
    574 
    575 function f(tests) {
    576  for (let test of tests) {
    577    let lhs = test[0], rhs = test[1], expected = test[2];
    578    assertEq(BigInt.asIntN(64, lhs), lhs);
    579    assertEq(BigInt.asIntN(64, rhs), rhs);
    580    assertEq(BigInt.asIntN(64, expected), expected);
    581 
    582    let f = Function(`
    583      let lhs = ${lhs}n;
    584      let rhs = ${rhs}n;
    585      assertEq(lhs - rhs, ${expected}n);
    586    `);
    587 
    588    for (let j = 0; j < 100; ++j) {
    589      f();
    590    }
    591  }
    592 }
    593 
    594 f(tests);