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