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