bigint-mul-64.js (27716B)
1 const tests = [ 2 [-0x100000001n, -2n, 0x200000002n], 3 [-0x100000000n, -2n, 0x200000000n], 4 [-0xffffffffn, -2n, 0x1fffffffen], 5 [-0xfffffffen, -2n, 0x1fffffffcn], 6 [-0x80000001n, -2n, 0x100000002n], 7 [-0x80000000n, -2n, 0x100000000n], 8 [-0x7fffffffn, -2n, 0xfffffffen], 9 [-0x7ffffffen, -2n, 0xfffffffcn], 10 [-0x10001n, -2n, 0x20002n], 11 [-0x10000n, -2n, 0x20000n], 12 [-0xffffn, -2n, 0x1fffen], 13 [-0xfffen, -2n, 0x1fffcn], 14 [-0x8001n, -2n, 0x10002n], 15 [-0x8000n, -2n, 0x10000n], 16 [-0x7fffn, -2n, 0xfffen], 17 [-0x7ffen, -2n, 0xfffcn], 18 [-2n, -2n, 4n], 19 [-1n, -2n, 2n], 20 [0n, -2n, 0n], 21 [1n, -2n, -2n], 22 [2n, -2n, -4n], 23 [0x7ffen, -2n, -0xfffcn], 24 [0x7fffn, -2n, -0xfffen], 25 [0x8000n, -2n, -0x10000n], 26 [0x8001n, -2n, -0x10002n], 27 [0xfffen, -2n, -0x1fffcn], 28 [0xffffn, -2n, -0x1fffen], 29 [0x10000n, -2n, -0x20000n], 30 [0x10001n, -2n, -0x20002n], 31 [0x7ffffffen, -2n, -0xfffffffcn], 32 [0x7fffffffn, -2n, -0xfffffffen], 33 [0x80000000n, -2n, -0x100000000n], 34 [0x80000001n, -2n, -0x100000002n], 35 [0xfffffffen, -2n, -0x1fffffffcn], 36 [0xffffffffn, -2n, -0x1fffffffen], 37 [0x100000000n, -2n, -0x200000000n], 38 [0x100000001n, -2n, -0x200000002n], 39 [-0x7fffffffffffffffn, -1n, 0x7fffffffffffffffn], 40 [-0x7ffffffffffffffen, -1n, 0x7ffffffffffffffen], 41 [-0x100000001n, -1n, 0x100000001n], 42 [-0x100000000n, -1n, 0x100000000n], 43 [-0xffffffffn, -1n, 0xffffffffn], 44 [-0xfffffffen, -1n, 0xfffffffen], 45 [-0x80000001n, -1n, 0x80000001n], 46 [-0x80000000n, -1n, 0x80000000n], 47 [-0x7fffffffn, -1n, 0x7fffffffn], 48 [-0x7ffffffen, -1n, 0x7ffffffen], 49 [-0x10001n, -1n, 0x10001n], 50 [-0x10000n, -1n, 0x10000n], 51 [-0xffffn, -1n, 0xffffn], 52 [-0xfffen, -1n, 0xfffen], 53 [-0x8001n, -1n, 0x8001n], 54 [-0x8000n, -1n, 0x8000n], 55 [-0x7fffn, -1n, 0x7fffn], 56 [-0x7ffen, -1n, 0x7ffen], 57 [-1n, -1n, 1n], 58 [0n, -1n, 0n], 59 [1n, -1n, -1n], 60 [2n, -1n, -2n], 61 [0x7ffen, -1n, -0x7ffen], 62 [0x7fffn, -1n, -0x7fffn], 63 [0x8000n, -1n, -0x8000n], 64 [0x8001n, -1n, -0x8001n], 65 [0xfffen, -1n, -0xfffen], 66 [0xffffn, -1n, -0xffffn], 67 [0x10000n, -1n, -0x10000n], 68 [0x10001n, -1n, -0x10001n], 69 [0x7ffffffen, -1n, -0x7ffffffen], 70 [0x7fffffffn, -1n, -0x7fffffffn], 71 [0x80000000n, -1n, -0x80000000n], 72 [0x80000001n, -1n, -0x80000001n], 73 [0xfffffffen, -1n, -0xfffffffen], 74 [0xffffffffn, -1n, -0xffffffffn], 75 [0x100000000n, -1n, -0x100000000n], 76 [0x100000001n, -1n, -0x100000001n], 77 [0x7ffffffffffffffen, -1n, -0x7ffffffffffffffen], 78 [0x7fffffffffffffffn, -1n, -0x7fffffffffffffffn], 79 [-0x8000000000000000n, 0n, 0n], 80 [-0x7fffffffffffffffn, 0n, 0n], 81 [-0x7ffffffffffffffen, 0n, 0n], 82 [-0x100000001n, 0n, 0n], 83 [-0x100000000n, 0n, 0n], 84 [-0xffffffffn, 0n, 0n], 85 [-0xfffffffen, 0n, 0n], 86 [-0x80000001n, 0n, 0n], 87 [-0x80000000n, 0n, 0n], 88 [-0x7fffffffn, 0n, 0n], 89 [-0x7ffffffen, 0n, 0n], 90 [-0x10001n, 0n, 0n], 91 [-0x10000n, 0n, 0n], 92 [-0xffffn, 0n, 0n], 93 [-0xfffen, 0n, 0n], 94 [-0x8001n, 0n, 0n], 95 [-0x8000n, 0n, 0n], 96 [-0x7fffn, 0n, 0n], 97 [-0x7ffen, 0n, 0n], 98 [0n, 0n, 0n], 99 [1n, 0n, 0n], 100 [2n, 0n, 0n], 101 [0x7ffen, 0n, 0n], 102 [0x7fffn, 0n, 0n], 103 [0x8000n, 0n, 0n], 104 [0x8001n, 0n, 0n], 105 [0xfffen, 0n, 0n], 106 [0xffffn, 0n, 0n], 107 [0x10000n, 0n, 0n], 108 [0x10001n, 0n, 0n], 109 [0x7ffffffen, 0n, 0n], 110 [0x7fffffffn, 0n, 0n], 111 [0x80000000n, 0n, 0n], 112 [0x80000001n, 0n, 0n], 113 [0xfffffffen, 0n, 0n], 114 [0xffffffffn, 0n, 0n], 115 [0x100000000n, 0n, 0n], 116 [0x100000001n, 0n, 0n], 117 [0x7ffffffffffffffen, 0n, 0n], 118 [0x7fffffffffffffffn, 0n, 0n], 119 [-0x8000000000000000n, 1n, -0x8000000000000000n], 120 [-0x7fffffffffffffffn, 1n, -0x7fffffffffffffffn], 121 [-0x7ffffffffffffffen, 1n, -0x7ffffffffffffffen], 122 [-0x100000001n, 1n, -0x100000001n], 123 [-0x100000000n, 1n, -0x100000000n], 124 [-0xffffffffn, 1n, -0xffffffffn], 125 [-0xfffffffen, 1n, -0xfffffffen], 126 [-0x80000001n, 1n, -0x80000001n], 127 [-0x80000000n, 1n, -0x80000000n], 128 [-0x7fffffffn, 1n, -0x7fffffffn], 129 [-0x7ffffffen, 1n, -0x7ffffffen], 130 [-0x10001n, 1n, -0x10001n], 131 [-0x10000n, 1n, -0x10000n], 132 [-0xffffn, 1n, -0xffffn], 133 [-0xfffen, 1n, -0xfffen], 134 [-0x8001n, 1n, -0x8001n], 135 [-0x8000n, 1n, -0x8000n], 136 [-0x7fffn, 1n, -0x7fffn], 137 [-0x7ffen, 1n, -0x7ffen], 138 [1n, 1n, 1n], 139 [2n, 1n, 2n], 140 [0x7ffen, 1n, 0x7ffen], 141 [0x7fffn, 1n, 0x7fffn], 142 [0x8000n, 1n, 0x8000n], 143 [0x8001n, 1n, 0x8001n], 144 [0xfffen, 1n, 0xfffen], 145 [0xffffn, 1n, 0xffffn], 146 [0x10000n, 1n, 0x10000n], 147 [0x10001n, 1n, 0x10001n], 148 [0x7ffffffen, 1n, 0x7ffffffen], 149 [0x7fffffffn, 1n, 0x7fffffffn], 150 [0x80000000n, 1n, 0x80000000n], 151 [0x80000001n, 1n, 0x80000001n], 152 [0xfffffffen, 1n, 0xfffffffen], 153 [0xffffffffn, 1n, 0xffffffffn], 154 [0x100000000n, 1n, 0x100000000n], 155 [0x100000001n, 1n, 0x100000001n], 156 [0x7ffffffffffffffen, 1n, 0x7ffffffffffffffen], 157 [0x7fffffffffffffffn, 1n, 0x7fffffffffffffffn], 158 [-0x100000001n, 2n, -0x200000002n], 159 [-0x100000000n, 2n, -0x200000000n], 160 [-0xffffffffn, 2n, -0x1fffffffen], 161 [-0xfffffffen, 2n, -0x1fffffffcn], 162 [-0x80000001n, 2n, -0x100000002n], 163 [-0x80000000n, 2n, -0x100000000n], 164 [-0x7fffffffn, 2n, -0xfffffffen], 165 [-0x7ffffffen, 2n, -0xfffffffcn], 166 [-0x10001n, 2n, -0x20002n], 167 [-0x10000n, 2n, -0x20000n], 168 [-0xffffn, 2n, -0x1fffen], 169 [-0xfffen, 2n, -0x1fffcn], 170 [-0x8001n, 2n, -0x10002n], 171 [-0x8000n, 2n, -0x10000n], 172 [-0x7fffn, 2n, -0xfffen], 173 [-0x7ffen, 2n, -0xfffcn], 174 [2n, 2n, 4n], 175 [0x7ffen, 2n, 0xfffcn], 176 [0x7fffn, 2n, 0xfffen], 177 [0x8000n, 2n, 0x10000n], 178 [0x8001n, 2n, 0x10002n], 179 [0xfffen, 2n, 0x1fffcn], 180 [0xffffn, 2n, 0x1fffen], 181 [0x10000n, 2n, 0x20000n], 182 [0x10001n, 2n, 0x20002n], 183 [0x7ffffffen, 2n, 0xfffffffcn], 184 [0x7fffffffn, 2n, 0xfffffffen], 185 [0x80000000n, 2n, 0x100000000n], 186 [0x80000001n, 2n, 0x100000002n], 187 [0xfffffffen, 2n, 0x1fffffffcn], 188 [0xffffffffn, 2n, 0x1fffffffen], 189 [0x100000000n, 2n, 0x200000000n], 190 [0x100000001n, 2n, 0x200000002n], 191 [-0x100000001n, 0x7ffen, -0x7ffe00007ffen], 192 [-0x100000000n, 0x7ffen, -0x7ffe00000000n], 193 [-0xffffffffn, 0x7ffen, -0x7ffdffff8002n], 194 [-0xfffffffen, 0x7ffen, -0x7ffdffff0004n], 195 [-0x80000001n, 0x7ffen, -0x3fff00007ffen], 196 [-0x80000000n, 0x7ffen, -0x3fff00000000n], 197 [-0x7fffffffn, 0x7ffen, -0x3ffeffff8002n], 198 [-0x7ffffffen, 0x7ffen, -0x3ffeffff0004n], 199 [-0x10001n, 0x7ffen, -0x7ffe7ffen], 200 [-0x10000n, 0x7ffen, -0x7ffe0000n], 201 [-0xffffn, 0x7ffen, -0x7ffd8002n], 202 [-0xfffen, 0x7ffen, -0x7ffd0004n], 203 [-0x8001n, 0x7ffen, -0x3fff7ffen], 204 [-0x8000n, 0x7ffen, -0x3fff0000n], 205 [-0x7fffn, 0x7ffen, -0x3ffe8002n], 206 [-0x7ffen, 0x7ffen, -0x3ffe0004n], 207 [0x7ffen, 0x7ffen, 0x3ffe0004n], 208 [0x7fffn, 0x7ffen, 0x3ffe8002n], 209 [0x8000n, 0x7ffen, 0x3fff0000n], 210 [0x8001n, 0x7ffen, 0x3fff7ffen], 211 [0xfffen, 0x7ffen, 0x7ffd0004n], 212 [0xffffn, 0x7ffen, 0x7ffd8002n], 213 [0x10000n, 0x7ffen, 0x7ffe0000n], 214 [0x10001n, 0x7ffen, 0x7ffe7ffen], 215 [0x7ffffffen, 0x7ffen, 0x3ffeffff0004n], 216 [0x7fffffffn, 0x7ffen, 0x3ffeffff8002n], 217 [0x80000000n, 0x7ffen, 0x3fff00000000n], 218 [0x80000001n, 0x7ffen, 0x3fff00007ffen], 219 [0xfffffffen, 0x7ffen, 0x7ffdffff0004n], 220 [0xffffffffn, 0x7ffen, 0x7ffdffff8002n], 221 [0x100000000n, 0x7ffen, 0x7ffe00000000n], 222 [0x100000001n, 0x7ffen, 0x7ffe00007ffen], 223 [-0x100000001n, 0x7fffn, -0x7fff00007fffn], 224 [-0x100000000n, 0x7fffn, -0x7fff00000000n], 225 [-0xffffffffn, 0x7fffn, -0x7ffeffff8001n], 226 [-0xfffffffen, 0x7fffn, -0x7ffeffff0002n], 227 [-0x80000001n, 0x7fffn, -0x3fff80007fffn], 228 [-0x80000000n, 0x7fffn, -0x3fff80000000n], 229 [-0x7fffffffn, 0x7fffn, -0x3fff7fff8001n], 230 [-0x7ffffffen, 0x7fffn, -0x3fff7fff0002n], 231 [-0x10001n, 0x7fffn, -0x7fff7fffn], 232 [-0x10000n, 0x7fffn, -0x7fff0000n], 233 [-0xffffn, 0x7fffn, -0x7ffe8001n], 234 [-0xfffen, 0x7fffn, -0x7ffe0002n], 235 [-0x8001n, 0x7fffn, -0x3fffffffn], 236 [-0x8000n, 0x7fffn, -0x3fff8000n], 237 [-0x7fffn, 0x7fffn, -0x3fff0001n], 238 [-0x7ffen, 0x7fffn, -0x3ffe8002n], 239 [0x7fffn, 0x7fffn, 0x3fff0001n], 240 [0x8000n, 0x7fffn, 0x3fff8000n], 241 [0x8001n, 0x7fffn, 0x3fffffffn], 242 [0xfffen, 0x7fffn, 0x7ffe0002n], 243 [0xffffn, 0x7fffn, 0x7ffe8001n], 244 [0x10000n, 0x7fffn, 0x7fff0000n], 245 [0x10001n, 0x7fffn, 0x7fff7fffn], 246 [0x7ffffffen, 0x7fffn, 0x3fff7fff0002n], 247 [0x7fffffffn, 0x7fffn, 0x3fff7fff8001n], 248 [0x80000000n, 0x7fffn, 0x3fff80000000n], 249 [0x80000001n, 0x7fffn, 0x3fff80007fffn], 250 [0xfffffffen, 0x7fffn, 0x7ffeffff0002n], 251 [0xffffffffn, 0x7fffn, 0x7ffeffff8001n], 252 [0x100000000n, 0x7fffn, 0x7fff00000000n], 253 [0x100000001n, 0x7fffn, 0x7fff00007fffn], 254 [-0x100000001n, 0x8000n, -0x800000008000n], 255 [-0x100000000n, 0x8000n, -0x800000000000n], 256 [-0xffffffffn, 0x8000n, -0x7fffffff8000n], 257 [-0xfffffffen, 0x8000n, -0x7fffffff0000n], 258 [-0x80000001n, 0x8000n, -0x400000008000n], 259 [-0x80000000n, 0x8000n, -0x400000000000n], 260 [-0x7fffffffn, 0x8000n, -0x3fffffff8000n], 261 [-0x7ffffffen, 0x8000n, -0x3fffffff0000n], 262 [-0x10001n, 0x8000n, -0x80008000n], 263 [-0x10000n, 0x8000n, -0x80000000n], 264 [-0xffffn, 0x8000n, -0x7fff8000n], 265 [-0xfffen, 0x8000n, -0x7fff0000n], 266 [-0x8001n, 0x8000n, -0x40008000n], 267 [-0x8000n, 0x8000n, -0x40000000n], 268 [-0x7fffn, 0x8000n, -0x3fff8000n], 269 [-0x7ffen, 0x8000n, -0x3fff0000n], 270 [0x8000n, 0x8000n, 0x40000000n], 271 [0x8001n, 0x8000n, 0x40008000n], 272 [0xfffen, 0x8000n, 0x7fff0000n], 273 [0xffffn, 0x8000n, 0x7fff8000n], 274 [0x10000n, 0x8000n, 0x80000000n], 275 [0x10001n, 0x8000n, 0x80008000n], 276 [0x7ffffffen, 0x8000n, 0x3fffffff0000n], 277 [0x7fffffffn, 0x8000n, 0x3fffffff8000n], 278 [0x80000000n, 0x8000n, 0x400000000000n], 279 [0x80000001n, 0x8000n, 0x400000008000n], 280 [0xfffffffen, 0x8000n, 0x7fffffff0000n], 281 [0xffffffffn, 0x8000n, 0x7fffffff8000n], 282 [0x100000000n, 0x8000n, 0x800000000000n], 283 [0x100000001n, 0x8000n, 0x800000008000n], 284 [-0x100000001n, 0x8001n, -0x800100008001n], 285 [-0x100000000n, 0x8001n, -0x800100000000n], 286 [-0xffffffffn, 0x8001n, -0x8000ffff7fffn], 287 [-0xfffffffen, 0x8001n, -0x8000fffefffen], 288 [-0x80000001n, 0x8001n, -0x400080008001n], 289 [-0x80000000n, 0x8001n, -0x400080000000n], 290 [-0x7fffffffn, 0x8001n, -0x40007fff7fffn], 291 [-0x7ffffffen, 0x8001n, -0x40007ffefffen], 292 [-0x10001n, 0x8001n, -0x80018001n], 293 [-0x10000n, 0x8001n, -0x80010000n], 294 [-0xffffn, 0x8001n, -0x80007fffn], 295 [-0xfffen, 0x8001n, -0x7ffffffen], 296 [-0x8001n, 0x8001n, -0x40010001n], 297 [-0x8000n, 0x8001n, -0x40008000n], 298 [-0x7fffn, 0x8001n, -0x3fffffffn], 299 [-0x7ffen, 0x8001n, -0x3fff7ffen], 300 [0x8001n, 0x8001n, 0x40010001n], 301 [0xfffen, 0x8001n, 0x7ffffffen], 302 [0xffffn, 0x8001n, 0x80007fffn], 303 [0x10000n, 0x8001n, 0x80010000n], 304 [0x10001n, 0x8001n, 0x80018001n], 305 [0x7ffffffen, 0x8001n, 0x40007ffefffen], 306 [0x7fffffffn, 0x8001n, 0x40007fff7fffn], 307 [0x80000000n, 0x8001n, 0x400080000000n], 308 [0x80000001n, 0x8001n, 0x400080008001n], 309 [0xfffffffen, 0x8001n, 0x8000fffefffen], 310 [0xffffffffn, 0x8001n, 0x8000ffff7fffn], 311 [0x100000000n, 0x8001n, 0x800100000000n], 312 [0x100000001n, 0x8001n, 0x800100008001n], 313 [-0x100000001n, -0x8001n, 0x800100008001n], 314 [-0x100000000n, -0x8001n, 0x800100000000n], 315 [-0xffffffffn, -0x8001n, 0x8000ffff7fffn], 316 [-0xfffffffen, -0x8001n, 0x8000fffefffen], 317 [-0x80000001n, -0x8001n, 0x400080008001n], 318 [-0x80000000n, -0x8001n, 0x400080000000n], 319 [-0x7fffffffn, -0x8001n, 0x40007fff7fffn], 320 [-0x7ffffffen, -0x8001n, 0x40007ffefffen], 321 [-0x10001n, -0x8001n, 0x80018001n], 322 [-0x10000n, -0x8001n, 0x80010000n], 323 [-0xffffn, -0x8001n, 0x80007fffn], 324 [-0xfffen, -0x8001n, 0x7ffffffen], 325 [-0x8001n, -0x8001n, 0x40010001n], 326 [-0x8000n, -0x8001n, 0x40008000n], 327 [-0x7fffn, -0x8001n, 0x3fffffffn], 328 [-0x7ffen, -0x8001n, 0x3fff7ffen], 329 [0xfffen, -0x8001n, -0x7ffffffen], 330 [0xffffn, -0x8001n, -0x80007fffn], 331 [0x10000n, -0x8001n, -0x80010000n], 332 [0x10001n, -0x8001n, -0x80018001n], 333 [0x7ffffffen, -0x8001n, -0x40007ffefffen], 334 [0x7fffffffn, -0x8001n, -0x40007fff7fffn], 335 [0x80000000n, -0x8001n, -0x400080000000n], 336 [0x80000001n, -0x8001n, -0x400080008001n], 337 [0xfffffffen, -0x8001n, -0x8000fffefffen], 338 [0xffffffffn, -0x8001n, -0x8000ffff7fffn], 339 [0x100000000n, -0x8001n, -0x800100000000n], 340 [0x100000001n, -0x8001n, -0x800100008001n], 341 [-0x100000001n, -0x8000n, 0x800000008000n], 342 [-0x100000000n, -0x8000n, 0x800000000000n], 343 [-0xffffffffn, -0x8000n, 0x7fffffff8000n], 344 [-0xfffffffen, -0x8000n, 0x7fffffff0000n], 345 [-0x80000001n, -0x8000n, 0x400000008000n], 346 [-0x80000000n, -0x8000n, 0x400000000000n], 347 [-0x7fffffffn, -0x8000n, 0x3fffffff8000n], 348 [-0x7ffffffen, -0x8000n, 0x3fffffff0000n], 349 [-0x10001n, -0x8000n, 0x80008000n], 350 [-0x10000n, -0x8000n, 0x80000000n], 351 [-0xffffn, -0x8000n, 0x7fff8000n], 352 [-0xfffen, -0x8000n, 0x7fff0000n], 353 [-0x8000n, -0x8000n, 0x40000000n], 354 [-0x7fffn, -0x8000n, 0x3fff8000n], 355 [-0x7ffen, -0x8000n, 0x3fff0000n], 356 [0xfffen, -0x8000n, -0x7fff0000n], 357 [0xffffn, -0x8000n, -0x7fff8000n], 358 [0x10000n, -0x8000n, -0x80000000n], 359 [0x10001n, -0x8000n, -0x80008000n], 360 [0x7ffffffen, -0x8000n, -0x3fffffff0000n], 361 [0x7fffffffn, -0x8000n, -0x3fffffff8000n], 362 [0x80000000n, -0x8000n, -0x400000000000n], 363 [0x80000001n, -0x8000n, -0x400000008000n], 364 [0xfffffffen, -0x8000n, -0x7fffffff0000n], 365 [0xffffffffn, -0x8000n, -0x7fffffff8000n], 366 [0x100000000n, -0x8000n, -0x800000000000n], 367 [0x100000001n, -0x8000n, -0x800000008000n], 368 [-0x100000001n, -0x7fffn, 0x7fff00007fffn], 369 [-0x100000000n, -0x7fffn, 0x7fff00000000n], 370 [-0xffffffffn, -0x7fffn, 0x7ffeffff8001n], 371 [-0xfffffffen, -0x7fffn, 0x7ffeffff0002n], 372 [-0x80000001n, -0x7fffn, 0x3fff80007fffn], 373 [-0x80000000n, -0x7fffn, 0x3fff80000000n], 374 [-0x7fffffffn, -0x7fffn, 0x3fff7fff8001n], 375 [-0x7ffffffen, -0x7fffn, 0x3fff7fff0002n], 376 [-0x10001n, -0x7fffn, 0x7fff7fffn], 377 [-0x10000n, -0x7fffn, 0x7fff0000n], 378 [-0xffffn, -0x7fffn, 0x7ffe8001n], 379 [-0xfffen, -0x7fffn, 0x7ffe0002n], 380 [-0x7fffn, -0x7fffn, 0x3fff0001n], 381 [-0x7ffen, -0x7fffn, 0x3ffe8002n], 382 [0xfffen, -0x7fffn, -0x7ffe0002n], 383 [0xffffn, -0x7fffn, -0x7ffe8001n], 384 [0x10000n, -0x7fffn, -0x7fff0000n], 385 [0x10001n, -0x7fffn, -0x7fff7fffn], 386 [0x7ffffffen, -0x7fffn, -0x3fff7fff0002n], 387 [0x7fffffffn, -0x7fffn, -0x3fff7fff8001n], 388 [0x80000000n, -0x7fffn, -0x3fff80000000n], 389 [0x80000001n, -0x7fffn, -0x3fff80007fffn], 390 [0xfffffffen, -0x7fffn, -0x7ffeffff0002n], 391 [0xffffffffn, -0x7fffn, -0x7ffeffff8001n], 392 [0x100000000n, -0x7fffn, -0x7fff00000000n], 393 [0x100000001n, -0x7fffn, -0x7fff00007fffn], 394 [-0x100000001n, -0x7ffen, 0x7ffe00007ffen], 395 [-0x100000000n, -0x7ffen, 0x7ffe00000000n], 396 [-0xffffffffn, -0x7ffen, 0x7ffdffff8002n], 397 [-0xfffffffen, -0x7ffen, 0x7ffdffff0004n], 398 [-0x80000001n, -0x7ffen, 0x3fff00007ffen], 399 [-0x80000000n, -0x7ffen, 0x3fff00000000n], 400 [-0x7fffffffn, -0x7ffen, 0x3ffeffff8002n], 401 [-0x7ffffffen, -0x7ffen, 0x3ffeffff0004n], 402 [-0x10001n, -0x7ffen, 0x7ffe7ffen], 403 [-0x10000n, -0x7ffen, 0x7ffe0000n], 404 [-0xffffn, -0x7ffen, 0x7ffd8002n], 405 [-0xfffen, -0x7ffen, 0x7ffd0004n], 406 [-0x7ffen, -0x7ffen, 0x3ffe0004n], 407 [0xfffen, -0x7ffen, -0x7ffd0004n], 408 [0xffffn, -0x7ffen, -0x7ffd8002n], 409 [0x10000n, -0x7ffen, -0x7ffe0000n], 410 [0x10001n, -0x7ffen, -0x7ffe7ffen], 411 [0x7ffffffen, -0x7ffen, -0x3ffeffff0004n], 412 [0x7fffffffn, -0x7ffen, -0x3ffeffff8002n], 413 [0x80000000n, -0x7ffen, -0x3fff00000000n], 414 [0x80000001n, -0x7ffen, -0x3fff00007ffen], 415 [0xfffffffen, -0x7ffen, -0x7ffdffff0004n], 416 [0xffffffffn, -0x7ffen, -0x7ffdffff8002n], 417 [0x100000000n, -0x7ffen, -0x7ffe00000000n], 418 [0x100000001n, -0x7ffen, -0x7ffe00007ffen], 419 [-0x100000001n, 0xfffen, -0xfffe0000fffen], 420 [-0x100000000n, 0xfffen, -0xfffe00000000n], 421 [-0xffffffffn, 0xfffen, -0xfffdffff0002n], 422 [-0xfffffffen, 0xfffen, -0xfffdfffe0004n], 423 [-0x80000001n, 0xfffen, -0x7fff0000fffen], 424 [-0x80000000n, 0xfffen, -0x7fff00000000n], 425 [-0x7fffffffn, 0xfffen, -0x7ffeffff0002n], 426 [-0x7ffffffen, 0xfffen, -0x7ffefffe0004n], 427 [-0x10001n, 0xfffen, -0xfffefffen], 428 [-0x10000n, 0xfffen, -0xfffe0000n], 429 [-0xffffn, 0xfffen, -0xfffd0002n], 430 [-0xfffen, 0xfffen, -0xfffc0004n], 431 [0xfffen, 0xfffen, 0xfffc0004n], 432 [0xffffn, 0xfffen, 0xfffd0002n], 433 [0x10000n, 0xfffen, 0xfffe0000n], 434 [0x10001n, 0xfffen, 0xfffefffen], 435 [0x7ffffffen, 0xfffen, 0x7ffefffe0004n], 436 [0x7fffffffn, 0xfffen, 0x7ffeffff0002n], 437 [0x80000000n, 0xfffen, 0x7fff00000000n], 438 [0x80000001n, 0xfffen, 0x7fff0000fffen], 439 [0xfffffffen, 0xfffen, 0xfffdfffe0004n], 440 [0xffffffffn, 0xfffen, 0xfffdffff0002n], 441 [0x100000000n, 0xfffen, 0xfffe00000000n], 442 [0x100000001n, 0xfffen, 0xfffe0000fffen], 443 [-0x100000001n, 0xffffn, -0xffff0000ffffn], 444 [-0x100000000n, 0xffffn, -0xffff00000000n], 445 [-0xffffffffn, 0xffffn, -0xfffeffff0001n], 446 [-0xfffffffen, 0xffffn, -0xfffefffe0002n], 447 [-0x80000001n, 0xffffn, -0x7fff8000ffffn], 448 [-0x80000000n, 0xffffn, -0x7fff80000000n], 449 [-0x7fffffffn, 0xffffn, -0x7fff7fff0001n], 450 [-0x7ffffffen, 0xffffn, -0x7fff7ffe0002n], 451 [-0x10001n, 0xffffn, -0xffffffffn], 452 [-0x10000n, 0xffffn, -0xffff0000n], 453 [-0xffffn, 0xffffn, -0xfffe0001n], 454 [-0xfffen, 0xffffn, -0xfffd0002n], 455 [0xffffn, 0xffffn, 0xfffe0001n], 456 [0x10000n, 0xffffn, 0xffff0000n], 457 [0x10001n, 0xffffn, 0xffffffffn], 458 [0x7ffffffen, 0xffffn, 0x7fff7ffe0002n], 459 [0x7fffffffn, 0xffffn, 0x7fff7fff0001n], 460 [0x80000000n, 0xffffn, 0x7fff80000000n], 461 [0x80000001n, 0xffffn, 0x7fff8000ffffn], 462 [0xfffffffen, 0xffffn, 0xfffefffe0002n], 463 [0xffffffffn, 0xffffn, 0xfffeffff0001n], 464 [0x100000000n, 0xffffn, 0xffff00000000n], 465 [0x100000001n, 0xffffn, 0xffff0000ffffn], 466 [-0x100000001n, 0x10000n, -0x1000000010000n], 467 [-0x100000000n, 0x10000n, -0x1000000000000n], 468 [-0xffffffffn, 0x10000n, -0xffffffff0000n], 469 [-0xfffffffen, 0x10000n, -0xfffffffe0000n], 470 [-0x80000001n, 0x10000n, -0x800000010000n], 471 [-0x80000000n, 0x10000n, -0x800000000000n], 472 [-0x7fffffffn, 0x10000n, -0x7fffffff0000n], 473 [-0x7ffffffen, 0x10000n, -0x7ffffffe0000n], 474 [-0x10001n, 0x10000n, -0x100010000n], 475 [-0x10000n, 0x10000n, -0x100000000n], 476 [-0xffffn, 0x10000n, -0xffff0000n], 477 [-0xfffen, 0x10000n, -0xfffe0000n], 478 [0x10000n, 0x10000n, 0x100000000n], 479 [0x10001n, 0x10000n, 0x100010000n], 480 [0x7ffffffen, 0x10000n, 0x7ffffffe0000n], 481 [0x7fffffffn, 0x10000n, 0x7fffffff0000n], 482 [0x80000000n, 0x10000n, 0x800000000000n], 483 [0x80000001n, 0x10000n, 0x800000010000n], 484 [0xfffffffen, 0x10000n, 0xfffffffe0000n], 485 [0xffffffffn, 0x10000n, 0xffffffff0000n], 486 [0x100000000n, 0x10000n, 0x1000000000000n], 487 [0x100000001n, 0x10000n, 0x1000000010000n], 488 [-0x100000001n, 0x10001n, -0x1000100010001n], 489 [-0x100000000n, 0x10001n, -0x1000100000000n], 490 [-0xffffffffn, 0x10001n, -0x10000fffeffffn], 491 [-0xfffffffen, 0x10001n, -0x10000fffdfffen], 492 [-0x80000001n, 0x10001n, -0x800080010001n], 493 [-0x80000000n, 0x10001n, -0x800080000000n], 494 [-0x7fffffffn, 0x10001n, -0x80007ffeffffn], 495 [-0x7ffffffen, 0x10001n, -0x80007ffdfffen], 496 [-0x10001n, 0x10001n, -0x100020001n], 497 [-0x10000n, 0x10001n, -0x100010000n], 498 [-0xffffn, 0x10001n, -0xffffffffn], 499 [-0xfffen, 0x10001n, -0xfffefffen], 500 [0x10001n, 0x10001n, 0x100020001n], 501 [0x7ffffffen, 0x10001n, 0x80007ffdfffen], 502 [0x7fffffffn, 0x10001n, 0x80007ffeffffn], 503 [0x80000000n, 0x10001n, 0x800080000000n], 504 [0x80000001n, 0x10001n, 0x800080010001n], 505 [0xfffffffen, 0x10001n, 0x10000fffdfffen], 506 [0xffffffffn, 0x10001n, 0x10000fffeffffn], 507 [0x100000000n, 0x10001n, 0x1000100000000n], 508 [0x100000001n, 0x10001n, 0x1000100010001n], 509 [-0x100000001n, -0x10001n, 0x1000100010001n], 510 [-0x100000000n, -0x10001n, 0x1000100000000n], 511 [-0xffffffffn, -0x10001n, 0x10000fffeffffn], 512 [-0xfffffffen, -0x10001n, 0x10000fffdfffen], 513 [-0x80000001n, -0x10001n, 0x800080010001n], 514 [-0x80000000n, -0x10001n, 0x800080000000n], 515 [-0x7fffffffn, -0x10001n, 0x80007ffeffffn], 516 [-0x7ffffffen, -0x10001n, 0x80007ffdfffen], 517 [-0x10001n, -0x10001n, 0x100020001n], 518 [-0x10000n, -0x10001n, 0x100010000n], 519 [-0xffffn, -0x10001n, 0xffffffffn], 520 [-0xfffen, -0x10001n, 0xfffefffen], 521 [0x7ffffffen, -0x10001n, -0x80007ffdfffen], 522 [0x7fffffffn, -0x10001n, -0x80007ffeffffn], 523 [0x80000000n, -0x10001n, -0x800080000000n], 524 [0x80000001n, -0x10001n, -0x800080010001n], 525 [0xfffffffen, -0x10001n, -0x10000fffdfffen], 526 [0xffffffffn, -0x10001n, -0x10000fffeffffn], 527 [0x100000000n, -0x10001n, -0x1000100000000n], 528 [0x100000001n, -0x10001n, -0x1000100010001n], 529 [-0x100000001n, -0x10000n, 0x1000000010000n], 530 [-0x100000000n, -0x10000n, 0x1000000000000n], 531 [-0xffffffffn, -0x10000n, 0xffffffff0000n], 532 [-0xfffffffen, -0x10000n, 0xfffffffe0000n], 533 [-0x80000001n, -0x10000n, 0x800000010000n], 534 [-0x80000000n, -0x10000n, 0x800000000000n], 535 [-0x7fffffffn, -0x10000n, 0x7fffffff0000n], 536 [-0x7ffffffen, -0x10000n, 0x7ffffffe0000n], 537 [-0x10000n, -0x10000n, 0x100000000n], 538 [-0xffffn, -0x10000n, 0xffff0000n], 539 [-0xfffen, -0x10000n, 0xfffe0000n], 540 [0x7ffffffen, -0x10000n, -0x7ffffffe0000n], 541 [0x7fffffffn, -0x10000n, -0x7fffffff0000n], 542 [0x80000000n, -0x10000n, -0x800000000000n], 543 [0x80000001n, -0x10000n, -0x800000010000n], 544 [0xfffffffen, -0x10000n, -0xfffffffe0000n], 545 [0xffffffffn, -0x10000n, -0xffffffff0000n], 546 [0x100000000n, -0x10000n, -0x1000000000000n], 547 [0x100000001n, -0x10000n, -0x1000000010000n], 548 [-0x100000001n, -0xffffn, 0xffff0000ffffn], 549 [-0x100000000n, -0xffffn, 0xffff00000000n], 550 [-0xffffffffn, -0xffffn, 0xfffeffff0001n], 551 [-0xfffffffen, -0xffffn, 0xfffefffe0002n], 552 [-0x80000001n, -0xffffn, 0x7fff8000ffffn], 553 [-0x80000000n, -0xffffn, 0x7fff80000000n], 554 [-0x7fffffffn, -0xffffn, 0x7fff7fff0001n], 555 [-0x7ffffffen, -0xffffn, 0x7fff7ffe0002n], 556 [-0xffffn, -0xffffn, 0xfffe0001n], 557 [-0xfffen, -0xffffn, 0xfffd0002n], 558 [0x7ffffffen, -0xffffn, -0x7fff7ffe0002n], 559 [0x7fffffffn, -0xffffn, -0x7fff7fff0001n], 560 [0x80000000n, -0xffffn, -0x7fff80000000n], 561 [0x80000001n, -0xffffn, -0x7fff8000ffffn], 562 [0xfffffffen, -0xffffn, -0xfffefffe0002n], 563 [0xffffffffn, -0xffffn, -0xfffeffff0001n], 564 [0x100000000n, -0xffffn, -0xffff00000000n], 565 [0x100000001n, -0xffffn, -0xffff0000ffffn], 566 [-0x100000001n, -0xfffen, 0xfffe0000fffen], 567 [-0x100000000n, -0xfffen, 0xfffe00000000n], 568 [-0xffffffffn, -0xfffen, 0xfffdffff0002n], 569 [-0xfffffffen, -0xfffen, 0xfffdfffe0004n], 570 [-0x80000001n, -0xfffen, 0x7fff0000fffen], 571 [-0x80000000n, -0xfffen, 0x7fff00000000n], 572 [-0x7fffffffn, -0xfffen, 0x7ffeffff0002n], 573 [-0x7ffffffen, -0xfffen, 0x7ffefffe0004n], 574 [-0xfffen, -0xfffen, 0xfffc0004n], 575 [0x7ffffffen, -0xfffen, -0x7ffefffe0004n], 576 [0x7fffffffn, -0xfffen, -0x7ffeffff0002n], 577 [0x80000000n, -0xfffen, -0x7fff00000000n], 578 [0x80000001n, -0xfffen, -0x7fff0000fffen], 579 [0xfffffffen, -0xfffen, -0xfffdfffe0004n], 580 [0xffffffffn, -0xfffen, -0xfffdffff0002n], 581 [0x100000000n, -0xfffen, -0xfffe00000000n], 582 [0x100000001n, -0xfffen, -0xfffe0000fffen], 583 [-0x100000001n, 0x7ffffffen, -0x7ffffffe7ffffffen], 584 [-0x100000000n, 0x7ffffffen, -0x7ffffffe00000000n], 585 [-0xffffffffn, 0x7ffffffen, -0x7ffffffd80000002n], 586 [-0xfffffffen, 0x7ffffffen, -0x7ffffffd00000004n], 587 [-0x80000001n, 0x7ffffffen, -0x3fffffff7ffffffen], 588 [-0x80000000n, 0x7ffffffen, -0x3fffffff00000000n], 589 [-0x7fffffffn, 0x7ffffffen, -0x3ffffffe80000002n], 590 [-0x7ffffffen, 0x7ffffffen, -0x3ffffffe00000004n], 591 [0x7ffffffen, 0x7ffffffen, 0x3ffffffe00000004n], 592 [0x7fffffffn, 0x7ffffffen, 0x3ffffffe80000002n], 593 [0x80000000n, 0x7ffffffen, 0x3fffffff00000000n], 594 [0x80000001n, 0x7ffffffen, 0x3fffffff7ffffffen], 595 [0xfffffffen, 0x7ffffffen, 0x7ffffffd00000004n], 596 [0xffffffffn, 0x7ffffffen, 0x7ffffffd80000002n], 597 [0x100000000n, 0x7ffffffen, 0x7ffffffe00000000n], 598 [0x100000001n, 0x7ffffffen, 0x7ffffffe7ffffffen], 599 [-0x100000001n, 0x7fffffffn, -0x7fffffff7fffffffn], 600 [-0x100000000n, 0x7fffffffn, -0x7fffffff00000000n], 601 [-0xffffffffn, 0x7fffffffn, -0x7ffffffe80000001n], 602 [-0xfffffffen, 0x7fffffffn, -0x7ffffffe00000002n], 603 [-0x80000001n, 0x7fffffffn, -0x3fffffffffffffffn], 604 [-0x80000000n, 0x7fffffffn, -0x3fffffff80000000n], 605 [-0x7fffffffn, 0x7fffffffn, -0x3fffffff00000001n], 606 [-0x7ffffffen, 0x7fffffffn, -0x3ffffffe80000002n], 607 [0x7fffffffn, 0x7fffffffn, 0x3fffffff00000001n], 608 [0x80000000n, 0x7fffffffn, 0x3fffffff80000000n], 609 [0x80000001n, 0x7fffffffn, 0x3fffffffffffffffn], 610 [0xfffffffen, 0x7fffffffn, 0x7ffffffe00000002n], 611 [0xffffffffn, 0x7fffffffn, 0x7ffffffe80000001n], 612 [0x100000000n, 0x7fffffffn, 0x7fffffff00000000n], 613 [0x100000001n, 0x7fffffffn, 0x7fffffff7fffffffn], 614 [-0x100000000n, 0x80000000n, -0x8000000000000000n], 615 [-0xffffffffn, 0x80000000n, -0x7fffffff80000000n], 616 [-0xfffffffen, 0x80000000n, -0x7fffffff00000000n], 617 [-0x80000001n, 0x80000000n, -0x4000000080000000n], 618 [-0x80000000n, 0x80000000n, -0x4000000000000000n], 619 [-0x7fffffffn, 0x80000000n, -0x3fffffff80000000n], 620 [-0x7ffffffen, 0x80000000n, -0x3fffffff00000000n], 621 [0x80000000n, 0x80000000n, 0x4000000000000000n], 622 [0x80000001n, 0x80000000n, 0x4000000080000000n], 623 [0xfffffffen, 0x80000000n, 0x7fffffff00000000n], 624 [0xffffffffn, 0x80000000n, 0x7fffffff80000000n], 625 [-0xfffffffen, 0x80000001n, -0x7ffffffffffffffen], 626 [-0x80000001n, 0x80000001n, -0x4000000100000001n], 627 [-0x80000000n, 0x80000001n, -0x4000000080000000n], 628 [-0x7fffffffn, 0x80000001n, -0x3fffffffffffffffn], 629 [-0x7ffffffen, 0x80000001n, -0x3fffffff7ffffffen], 630 [0x80000001n, 0x80000001n, 0x4000000100000001n], 631 [0xfffffffen, 0x80000001n, 0x7ffffffffffffffen], 632 [-0xfffffffen, -0x80000001n, 0x7ffffffffffffffen], 633 [-0x80000001n, -0x80000001n, 0x4000000100000001n], 634 [-0x80000000n, -0x80000001n, 0x4000000080000000n], 635 [-0x7fffffffn, -0x80000001n, 0x3fffffffffffffffn], 636 [-0x7ffffffen, -0x80000001n, 0x3fffffff7ffffffen], 637 [0xfffffffen, -0x80000001n, -0x7ffffffffffffffen], 638 [-0xffffffffn, -0x80000000n, 0x7fffffff80000000n], 639 [-0xfffffffen, -0x80000000n, 0x7fffffff00000000n], 640 [-0x80000000n, -0x80000000n, 0x4000000000000000n], 641 [-0x7fffffffn, -0x80000000n, 0x3fffffff80000000n], 642 [-0x7ffffffen, -0x80000000n, 0x3fffffff00000000n], 643 [0xfffffffen, -0x80000000n, -0x7fffffff00000000n], 644 [0xffffffffn, -0x80000000n, -0x7fffffff80000000n], 645 [0x100000000n, -0x80000000n, -0x8000000000000000n], 646 [-0x100000001n, -0x7fffffffn, 0x7fffffff7fffffffn], 647 [-0x100000000n, -0x7fffffffn, 0x7fffffff00000000n], 648 [-0xffffffffn, -0x7fffffffn, 0x7ffffffe80000001n], 649 [-0xfffffffen, -0x7fffffffn, 0x7ffffffe00000002n], 650 [-0x7fffffffn, -0x7fffffffn, 0x3fffffff00000001n], 651 [-0x7ffffffen, -0x7fffffffn, 0x3ffffffe80000002n], 652 [0xfffffffen, -0x7fffffffn, -0x7ffffffe00000002n], 653 [0xffffffffn, -0x7fffffffn, -0x7ffffffe80000001n], 654 [0x100000000n, -0x7fffffffn, -0x7fffffff00000000n], 655 [0x100000001n, -0x7fffffffn, -0x7fffffff7fffffffn], 656 [-0x100000001n, -0x7ffffffen, 0x7ffffffe7ffffffen], 657 [-0x100000000n, -0x7ffffffen, 0x7ffffffe00000000n], 658 [-0xffffffffn, -0x7ffffffen, 0x7ffffffd80000002n], 659 [-0xfffffffen, -0x7ffffffen, 0x7ffffffd00000004n], 660 [-0x7ffffffen, -0x7ffffffen, 0x3ffffffe00000004n], 661 [0xfffffffen, -0x7ffffffen, -0x7ffffffd00000004n], 662 [0xffffffffn, -0x7ffffffen, -0x7ffffffd80000002n], 663 [0x100000000n, -0x7ffffffen, -0x7ffffffe00000000n], 664 [0x100000001n, -0x7ffffffen, -0x7ffffffe7ffffffen], 665 ]; 666 667 // Cases not covered above. 668 tests.push( 669 // Int32 overflow: 670 // 671 // Math.floor(2 ** (Math.log2(2147483648) / 2)) 672 // = Math.floor(2 ** 15.5) 673 // = 46340 674 // 675 // Math.ceil(2 ** (Math.log2(2147483648) / 2)) 676 // = Math.ceil(2 ** 15.5) 677 // = 46341 678 [46340n, 46340n, 2147395600n], 679 [46341n, 46341n, 2147488281n], 680 [46340n, -46340n, -2147395600n], 681 [46341n, -46341n, -2147488281n], 682 [-46340n, -46340n, 2147395600n], 683 [-46341n, -46341n, 2147488281n], 684 685 // Int64 overflow 686 [3037000499n, 3037000499n, 9223372030926249001n], 687 [3037000499n, -3037000499n, -9223372030926249001n], 688 [-3037000499n, -3037000499n, 9223372030926249001n], 689 ); 690 691 function f(tests) { 692 for (let test of tests) { 693 let lhs = test[0], rhs = test[1], expected = test[2]; 694 assertEq(BigInt.asIntN(64, lhs), lhs); 695 assertEq(BigInt.asIntN(64, rhs), rhs); 696 assertEq(BigInt.asIntN(64, expected), expected); 697 698 assertEq(lhs * rhs, expected); 699 assertEq(rhs * lhs, expected); 700 } 701 } 702 703 for (let i = 0; i < 10; ++i) { 704 f(tests); 705 }