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