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