asIntN-digit64.js (8054B)
1 // asIntN test specialised when the input is an Int64 value. 2 3 const tests = [ 4 [-0x8000000000000000n, 0, 0n], 5 [-0x7fffffffffffffffn, 0, 0n], 6 [-0x7ffffffffffffffen, 0, 0n], 7 [-0x100000001n, 0, 0n], 8 [-0x100000000n, 0, 0n], 9 [-0xffffffffn, 0, 0n], 10 [-0xfffffffen, 0, 0n], 11 [-0x80000001n, 0, 0n], 12 [-0x80000000n, 0, 0n], 13 [-0x7fffffffn, 0, 0n], 14 [-0x7ffffffen, 0, 0n], 15 [-9n, 0, 0n], 16 [-8n, 0, 0n], 17 [-7n, 0, 0n], 18 [-6n, 0, 0n], 19 [-5n, 0, 0n], 20 [-4n, 0, 0n], 21 [-3n, 0, 0n], 22 [-2n, 0, 0n], 23 [-1n, 0, 0n], 24 [0n, 0, 0n], 25 [1n, 0, 0n], 26 [2n, 0, 0n], 27 [3n, 0, 0n], 28 [4n, 0, 0n], 29 [5n, 0, 0n], 30 [6n, 0, 0n], 31 [7n, 0, 0n], 32 [8n, 0, 0n], 33 [9n, 0, 0n], 34 [0x7ffffffen, 0, 0n], 35 [0x7fffffffn, 0, 0n], 36 [0x80000000n, 0, 0n], 37 [0x80000001n, 0, 0n], 38 [0xfffffffen, 0, 0n], 39 [0xffffffffn, 0, 0n], 40 [0x100000000n, 0, 0n], 41 [0x100000001n, 0, 0n], 42 [0x7ffffffffffffffen, 0, 0n], 43 [0x7fffffffffffffffn, 0, 0n], 44 [-0x8000000000000000n, 1, 0n], 45 [-0x7fffffffffffffffn, 1, -1n], 46 [-0x7ffffffffffffffen, 1, 0n], 47 [-0x100000001n, 1, -1n], 48 [-0x100000000n, 1, 0n], 49 [-0xffffffffn, 1, -1n], 50 [-0xfffffffen, 1, 0n], 51 [-0x80000001n, 1, -1n], 52 [-0x80000000n, 1, 0n], 53 [-0x7fffffffn, 1, -1n], 54 [-0x7ffffffen, 1, 0n], 55 [-9n, 1, -1n], 56 [-8n, 1, 0n], 57 [-7n, 1, -1n], 58 [-6n, 1, 0n], 59 [-5n, 1, -1n], 60 [-4n, 1, 0n], 61 [-3n, 1, -1n], 62 [-2n, 1, 0n], 63 [-1n, 1, -1n], 64 [0n, 1, 0n], 65 [1n, 1, -1n], 66 [2n, 1, 0n], 67 [3n, 1, -1n], 68 [4n, 1, 0n], 69 [5n, 1, -1n], 70 [6n, 1, 0n], 71 [7n, 1, -1n], 72 [8n, 1, 0n], 73 [9n, 1, -1n], 74 [0x7ffffffen, 1, 0n], 75 [0x7fffffffn, 1, -1n], 76 [0x80000000n, 1, 0n], 77 [0x80000001n, 1, -1n], 78 [0xfffffffen, 1, 0n], 79 [0xffffffffn, 1, -1n], 80 [0x100000000n, 1, 0n], 81 [0x100000001n, 1, -1n], 82 [0x7ffffffffffffffen, 1, 0n], 83 [0x7fffffffffffffffn, 1, -1n], 84 [-0x8000000000000000n, 2, 0n], 85 [-0x7fffffffffffffffn, 2, 1n], 86 [-0x7ffffffffffffffen, 2, -2n], 87 [-0x100000001n, 2, -1n], 88 [-0x100000000n, 2, 0n], 89 [-0xffffffffn, 2, 1n], 90 [-0xfffffffen, 2, -2n], 91 [-0x80000001n, 2, -1n], 92 [-0x80000000n, 2, 0n], 93 [-0x7fffffffn, 2, 1n], 94 [-0x7ffffffen, 2, -2n], 95 [-9n, 2, -1n], 96 [-8n, 2, 0n], 97 [-7n, 2, 1n], 98 [-6n, 2, -2n], 99 [-5n, 2, -1n], 100 [-4n, 2, 0n], 101 [-3n, 2, 1n], 102 [-2n, 2, -2n], 103 [-1n, 2, -1n], 104 [0n, 2, 0n], 105 [1n, 2, 1n], 106 [2n, 2, -2n], 107 [3n, 2, -1n], 108 [4n, 2, 0n], 109 [5n, 2, 1n], 110 [6n, 2, -2n], 111 [7n, 2, -1n], 112 [8n, 2, 0n], 113 [9n, 2, 1n], 114 [0x7ffffffen, 2, -2n], 115 [0x7fffffffn, 2, -1n], 116 [0x80000000n, 2, 0n], 117 [0x80000001n, 2, 1n], 118 [0xfffffffen, 2, -2n], 119 [0xffffffffn, 2, -1n], 120 [0x100000000n, 2, 0n], 121 [0x100000001n, 2, 1n], 122 [0x7ffffffffffffffen, 2, -2n], 123 [0x7fffffffffffffffn, 2, -1n], 124 [-0x8000000000000000n, 31, 0n], 125 [-0x7fffffffffffffffn, 31, 1n], 126 [-0x7ffffffffffffffen, 31, 2n], 127 [-0x100000001n, 31, -1n], 128 [-0x100000000n, 31, 0n], 129 [-0xffffffffn, 31, 1n], 130 [-0xfffffffen, 31, 2n], 131 [-0x80000001n, 31, -1n], 132 [-0x80000000n, 31, 0n], 133 [-0x7fffffffn, 31, 1n], 134 [-0x7ffffffen, 31, 2n], 135 [-9n, 31, -9n], 136 [-8n, 31, -8n], 137 [-7n, 31, -7n], 138 [-6n, 31, -6n], 139 [-5n, 31, -5n], 140 [-4n, 31, -4n], 141 [-3n, 31, -3n], 142 [-2n, 31, -2n], 143 [-1n, 31, -1n], 144 [0n, 31, 0n], 145 [1n, 31, 1n], 146 [2n, 31, 2n], 147 [3n, 31, 3n], 148 [4n, 31, 4n], 149 [5n, 31, 5n], 150 [6n, 31, 6n], 151 [7n, 31, 7n], 152 [8n, 31, 8n], 153 [9n, 31, 9n], 154 [0x7ffffffen, 31, -2n], 155 [0x7fffffffn, 31, -1n], 156 [0x80000000n, 31, 0n], 157 [0x80000001n, 31, 1n], 158 [0xfffffffen, 31, -2n], 159 [0xffffffffn, 31, -1n], 160 [0x100000000n, 31, 0n], 161 [0x100000001n, 31, 1n], 162 [0x7ffffffffffffffen, 31, -2n], 163 [0x7fffffffffffffffn, 31, -1n], 164 [-0x8000000000000000n, 32, 0n], 165 [-0x7fffffffffffffffn, 32, 1n], 166 [-0x7ffffffffffffffen, 32, 2n], 167 [-0x100000001n, 32, -1n], 168 [-0x100000000n, 32, 0n], 169 [-0xffffffffn, 32, 1n], 170 [-0xfffffffen, 32, 2n], 171 [-0x80000001n, 32, 0x7fffffffn], 172 [-0x80000000n, 32, -0x80000000n], 173 [-0x7fffffffn, 32, -0x7fffffffn], 174 [-0x7ffffffen, 32, -0x7ffffffen], 175 [-9n, 32, -9n], 176 [-8n, 32, -8n], 177 [-7n, 32, -7n], 178 [-6n, 32, -6n], 179 [-5n, 32, -5n], 180 [-4n, 32, -4n], 181 [-3n, 32, -3n], 182 [-2n, 32, -2n], 183 [-1n, 32, -1n], 184 [0n, 32, 0n], 185 [1n, 32, 1n], 186 [2n, 32, 2n], 187 [3n, 32, 3n], 188 [4n, 32, 4n], 189 [5n, 32, 5n], 190 [6n, 32, 6n], 191 [7n, 32, 7n], 192 [8n, 32, 8n], 193 [9n, 32, 9n], 194 [0x7ffffffen, 32, 0x7ffffffen], 195 [0x7fffffffn, 32, 0x7fffffffn], 196 [0x80000000n, 32, -0x80000000n], 197 [0x80000001n, 32, -0x7fffffffn], 198 [0xfffffffen, 32, -2n], 199 [0xffffffffn, 32, -1n], 200 [0x100000000n, 32, 0n], 201 [0x100000001n, 32, 1n], 202 [0x7ffffffffffffffen, 32, -2n], 203 [0x7fffffffffffffffn, 32, -1n], 204 [-0x8000000000000000n, 33, 0n], 205 [-0x7fffffffffffffffn, 33, 1n], 206 [-0x7ffffffffffffffen, 33, 2n], 207 [-0x100000001n, 33, 0xffffffffn], 208 [-0x100000000n, 33, -0x100000000n], 209 [-0xffffffffn, 33, -0xffffffffn], 210 [-0xfffffffen, 33, -0xfffffffen], 211 [-0x80000001n, 33, -0x80000001n], 212 [-0x80000000n, 33, -0x80000000n], 213 [-0x7fffffffn, 33, -0x7fffffffn], 214 [-0x7ffffffen, 33, -0x7ffffffen], 215 [-9n, 33, -9n], 216 [-8n, 33, -8n], 217 [-7n, 33, -7n], 218 [-6n, 33, -6n], 219 [-5n, 33, -5n], 220 [-4n, 33, -4n], 221 [-3n, 33, -3n], 222 [-2n, 33, -2n], 223 [-1n, 33, -1n], 224 [0n, 33, 0n], 225 [1n, 33, 1n], 226 [2n, 33, 2n], 227 [3n, 33, 3n], 228 [4n, 33, 4n], 229 [5n, 33, 5n], 230 [6n, 33, 6n], 231 [7n, 33, 7n], 232 [8n, 33, 8n], 233 [9n, 33, 9n], 234 [0x7ffffffen, 33, 0x7ffffffen], 235 [0x7fffffffn, 33, 0x7fffffffn], 236 [0x80000000n, 33, 0x80000000n], 237 [0x80000001n, 33, 0x80000001n], 238 [0xfffffffen, 33, 0xfffffffen], 239 [0xffffffffn, 33, 0xffffffffn], 240 [0x100000000n, 33, -0x100000000n], 241 [0x100000001n, 33, -0xffffffffn], 242 [0x7ffffffffffffffen, 33, -2n], 243 [0x7fffffffffffffffn, 33, -1n], 244 [-0x8000000000000000n, 63, 0n], 245 [-0x7fffffffffffffffn, 63, 1n], 246 [-0x7ffffffffffffffen, 63, 2n], 247 [-0x100000001n, 63, -0x100000001n], 248 [-0x100000000n, 63, -0x100000000n], 249 [-0xffffffffn, 63, -0xffffffffn], 250 [-0xfffffffen, 63, -0xfffffffen], 251 [-0x80000001n, 63, -0x80000001n], 252 [-0x80000000n, 63, -0x80000000n], 253 [-0x7fffffffn, 63, -0x7fffffffn], 254 [-0x7ffffffen, 63, -0x7ffffffen], 255 [-9n, 63, -9n], 256 [-8n, 63, -8n], 257 [-7n, 63, -7n], 258 [-6n, 63, -6n], 259 [-5n, 63, -5n], 260 [-4n, 63, -4n], 261 [-3n, 63, -3n], 262 [-2n, 63, -2n], 263 [-1n, 63, -1n], 264 [0n, 63, 0n], 265 [1n, 63, 1n], 266 [2n, 63, 2n], 267 [3n, 63, 3n], 268 [4n, 63, 4n], 269 [5n, 63, 5n], 270 [6n, 63, 6n], 271 [7n, 63, 7n], 272 [8n, 63, 8n], 273 [9n, 63, 9n], 274 [0x7ffffffen, 63, 0x7ffffffen], 275 [0x7fffffffn, 63, 0x7fffffffn], 276 [0x80000000n, 63, 0x80000000n], 277 [0x80000001n, 63, 0x80000001n], 278 [0xfffffffen, 63, 0xfffffffen], 279 [0xffffffffn, 63, 0xffffffffn], 280 [0x100000000n, 63, 0x100000000n], 281 [0x100000001n, 63, 0x100000001n], 282 [0x7ffffffffffffffen, 63, -2n], 283 [0x7fffffffffffffffn, 63, -1n], 284 [-0x8000000000000000n, 64, -0x8000000000000000n], 285 [-0x7fffffffffffffffn, 64, -0x7fffffffffffffffn], 286 [-0x7ffffffffffffffen, 64, -0x7ffffffffffffffen], 287 [-0x100000001n, 64, -0x100000001n], 288 [-0x100000000n, 64, -0x100000000n], 289 [-0xffffffffn, 64, -0xffffffffn], 290 [-0xfffffffen, 64, -0xfffffffen], 291 [-0x80000001n, 64, -0x80000001n], 292 [-0x80000000n, 64, -0x80000000n], 293 [-0x7fffffffn, 64, -0x7fffffffn], 294 [-0x7ffffffen, 64, -0x7ffffffen], 295 [-9n, 64, -9n], 296 [-8n, 64, -8n], 297 [-7n, 64, -7n], 298 [-6n, 64, -6n], 299 [-5n, 64, -5n], 300 [-4n, 64, -4n], 301 [-3n, 64, -3n], 302 [-2n, 64, -2n], 303 [-1n, 64, -1n], 304 [0n, 64, 0n], 305 [1n, 64, 1n], 306 [2n, 64, 2n], 307 [3n, 64, 3n], 308 [4n, 64, 4n], 309 [5n, 64, 5n], 310 [6n, 64, 6n], 311 [7n, 64, 7n], 312 [8n, 64, 8n], 313 [9n, 64, 9n], 314 [0x7ffffffen, 64, 0x7ffffffen], 315 [0x7fffffffn, 64, 0x7fffffffn], 316 [0x80000000n, 64, 0x80000000n], 317 [0x80000001n, 64, 0x80000001n], 318 [0xfffffffen, 64, 0xfffffffen], 319 [0xffffffffn, 64, 0xffffffffn], 320 [0x100000000n, 64, 0x100000000n], 321 [0x100000001n, 64, 0x100000001n], 322 [0x7ffffffffffffffen, 64, 0x7ffffffffffffffen], 323 [0x7fffffffffffffffn, 64, 0x7fffffffffffffffn], 324 ]; 325 326 function f(tests) { 327 for (let test of tests) { 328 let input = test[0], bits = test[1], expected = test[2]; 329 330 assertEq(BigInt.asIntN(bits, input), expected); 331 } 332 } 333 334 for (let i = 0; i < 10; ++i) { 335 f(tests); 336 }