1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/divmodself.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,664 @@ 1.4 +// |jit-test| ion-eager 1.5 + 1.6 +// bug 944963 1.7 +function bug944963(x, y) { 1.8 + (+(xy))(y % y) 1.9 +} 1.10 +for (var i = 0; i < 10; i++) { 1.11 + try { 1.12 + (function() { 1.13 + bug944963(0, (~Math.fround(-8))) 1.14 + })() 1.15 + } catch (e) {} 1.16 +} 1.17 + 1.18 +// bug 900437 1.19 +function bug900437() { 1.20 + var x = 0.0; 1.21 + for (var i = 0; i < 10; i++) 1.22 + -("") >> (x / x); 1.23 +} 1.24 +bug900437(); 1.25 +bug900437(); 1.26 + 1.27 +// bug 715460 1.28 +function f(x) { 1.29 + var a = x; 1.30 + return a / 10; 1.31 +} 1.32 +function g(x) { 1.33 + var y = x + 1; 1.34 + return y / y; 1.35 +} 1.36 +for (var i=0; i<10; i++) 1.37 + assertEq(f(i * 10), i); 1.38 +for (var i=0; i<10; i++) 1.39 + assertEq(g(i), 1); 1.40 + 1.41 +// bug 939893 1.42 +function bug939893() { 1.43 + bug_g(); 1.44 +} 1.45 +function bug_g() { 1.46 + bug_h(undefined >>> 0, +undefined); 1.47 +} 1.48 +function bug_h(x) { 1.49 + Math.max(x ? ((x / x) | 0) : 0); 1.50 +} 1.51 +for (var a = 0; a < 2; ++a) { 1.52 + bug939893(); 1.53 +} 1.54 + 1.55 +// bug 945860 1.56 +function bug945860(x) { 1.57 + return (x % x); 1.58 +} 1.59 +for (var i = 0; i < 2; i++) { 1.60 + try { 1.61 + (function() { 1.62 + assertEq(bug945860(1), 0); 1.63 + })() 1.64 + } catch (e) {} 1.65 +} 1.66 + 1.67 +// Assorted tests. 1.68 + 1.69 +function sdiv_truncate(y) { 1.70 + return (y / y)|0; 1.71 +} 1.72 +assertEq(sdiv_truncate(5), 1); 1.73 +assertEq(sdiv_truncate(1), 1); 1.74 +assertEq(sdiv_truncate(-1), 1); 1.75 +assertEq(sdiv_truncate(0), 0); 1.76 +assertEq(sdiv_truncate(-0), 0); 1.77 +assertEq(sdiv_truncate(1.1), 1); 1.78 +assertEq(sdiv_truncate(-1.1), 1); 1.79 +assertEq(sdiv_truncate(Infinity), 0); 1.80 +assertEq(sdiv_truncate(NaN), 0); 1.81 +assertEq(sdiv_truncate(undefined), 0); 1.82 +assertEq(sdiv_truncate(null), 0); 1.83 + 1.84 +function sdiv(y) { 1.85 + return y / y; 1.86 +} 1.87 +assertEq(sdiv(5), 1); 1.88 +assertEq(sdiv(1), 1); 1.89 +assertEq(sdiv(-1), 1); 1.90 +assertEq(sdiv(0), NaN); 1.91 +assertEq(sdiv(-0), NaN); 1.92 +assertEq(sdiv(1.1), 1); 1.93 +assertEq(sdiv(-1.1), 1); 1.94 +assertEq(sdiv(Infinity), NaN); 1.95 +assertEq(sdiv(NaN), NaN); 1.96 +assertEq(sdiv(undefined), NaN); 1.97 +assertEq(sdiv(null), NaN); 1.98 + 1.99 +function udiv_truncate(y) { 1.100 + var yu = y>>>0; 1.101 + return (yu / yu)|0; 1.102 +} 1.103 +assertEq(udiv_truncate(5), 1); 1.104 +assertEq(udiv_truncate(1), 1); 1.105 +assertEq(udiv_truncate(-1), 1); 1.106 +assertEq(udiv_truncate(0), 0); 1.107 +assertEq(udiv_truncate(-0), 0); 1.108 +assertEq(udiv_truncate(1.1), 1); 1.109 +assertEq(udiv_truncate(-1.1), 1); 1.110 +assertEq(udiv_truncate(Infinity), 0); 1.111 +assertEq(udiv_truncate(NaN), 0); 1.112 +assertEq(udiv_truncate(undefined), 0); 1.113 +assertEq(udiv_truncate(null), 0); 1.114 + 1.115 +function shifted_udiv_truncate(y) { 1.116 + var yu = y>>>1; 1.117 + return (yu / yu)|0; 1.118 +} 1.119 +assertEq(shifted_udiv_truncate(5), 1); 1.120 +assertEq(shifted_udiv_truncate(2), 1); 1.121 +assertEq(shifted_udiv_truncate(1), 0); 1.122 +assertEq(shifted_udiv_truncate(-1), 1); 1.123 +assertEq(shifted_udiv_truncate(0), 0); 1.124 +assertEq(shifted_udiv_truncate(-0), 0); 1.125 +assertEq(shifted_udiv_truncate(1.1), 0); 1.126 +assertEq(shifted_udiv_truncate(-1.1), 1); 1.127 +assertEq(shifted_udiv_truncate(Infinity), 0); 1.128 +assertEq(shifted_udiv_truncate(NaN), 0); 1.129 +assertEq(shifted_udiv_truncate(undefined), 0); 1.130 +assertEq(shifted_udiv_truncate(null), 0); 1.131 + 1.132 +function udiv(y) { 1.133 + var yu = y>>>0; 1.134 + return yu / yu; 1.135 +} 1.136 +assertEq(udiv(5), 1); 1.137 +assertEq(udiv(1), 1); 1.138 +assertEq(udiv(-1), 1); 1.139 +assertEq(udiv(0), NaN); 1.140 +assertEq(udiv(-0), NaN); 1.141 +assertEq(udiv(1.1), 1); 1.142 +assertEq(udiv(-1.1), 1); 1.143 +assertEq(udiv(Infinity), NaN); 1.144 +assertEq(udiv(NaN), NaN); 1.145 +assertEq(udiv(undefined), NaN); 1.146 +assertEq(udiv(null), NaN); 1.147 + 1.148 +function shifted_udiv(y) { 1.149 + var yu = y>>>1; 1.150 + return yu / yu; 1.151 +} 1.152 +assertEq(shifted_udiv(5), 1); 1.153 +assertEq(shifted_udiv(2), 1); 1.154 +assertEq(shifted_udiv(1), NaN); 1.155 +assertEq(shifted_udiv(-1), 1); 1.156 +assertEq(shifted_udiv(0), NaN); 1.157 +assertEq(shifted_udiv(-0), NaN); 1.158 +assertEq(shifted_udiv(1.1), NaN); 1.159 +assertEq(shifted_udiv(-1.1), 1); 1.160 +assertEq(shifted_udiv(Infinity), NaN); 1.161 +assertEq(shifted_udiv(NaN), NaN); 1.162 +assertEq(shifted_udiv(undefined), NaN); 1.163 +assertEq(shifted_udiv(null), NaN); 1.164 + 1.165 +function smod_truncate(y) { 1.166 + return (y % y)|0; 1.167 +} 1.168 +assertEq(smod_truncate(5), 0); 1.169 +assertEq(smod_truncate(1), 0); 1.170 +assertEq(smod_truncate(-1), 0); 1.171 +assertEq(smod_truncate(0), 0); 1.172 +assertEq(smod_truncate(-0), 0); 1.173 +assertEq(smod_truncate(1.1), 0); 1.174 +assertEq(smod_truncate(-1.1), 0); 1.175 +assertEq(smod_truncate(Infinity), 0); 1.176 +assertEq(smod_truncate(NaN), 0); 1.177 +assertEq(smod_truncate(undefined), 0); 1.178 +assertEq(smod_truncate(null), 0); 1.179 + 1.180 +function smod(y) { 1.181 + return y % y; 1.182 +} 1.183 +assertEq(smod(5), 0); 1.184 +assertEq(smod(1), 0); 1.185 +assertEq(smod(-1), -0); 1.186 +assertEq(smod(0), NaN); 1.187 +assertEq(smod(-0), NaN); 1.188 +assertEq(smod(1.1), 0); 1.189 +assertEq(smod(-1.1), -0); 1.190 +assertEq(smod(Infinity), NaN); 1.191 +assertEq(smod(NaN), NaN); 1.192 +assertEq(smod(undefined), NaN); 1.193 +assertEq(smod(null), NaN); 1.194 + 1.195 +function umod_truncate(y) { 1.196 + var yu = y>>>0; 1.197 + return (yu % yu)|0; 1.198 +} 1.199 +assertEq(umod_truncate(5), 0); 1.200 +assertEq(umod_truncate(1), 0); 1.201 +assertEq(umod_truncate(-1), 0); 1.202 +assertEq(umod_truncate(0), 0); 1.203 +assertEq(umod_truncate(-0), 0); 1.204 +assertEq(umod_truncate(1.1), 0); 1.205 +assertEq(umod_truncate(-1.1), 0); 1.206 +assertEq(umod_truncate(Infinity), 0); 1.207 +assertEq(umod_truncate(NaN), 0); 1.208 +assertEq(umod_truncate(undefined), 0); 1.209 +assertEq(umod_truncate(null), 0); 1.210 + 1.211 +function shifted_umod_truncate(y) { 1.212 + var yu = y>>>1; 1.213 + return (yu % yu)|0; 1.214 +} 1.215 +assertEq(shifted_umod_truncate(5), 0); 1.216 +assertEq(shifted_umod_truncate(2), 0); 1.217 +assertEq(shifted_umod_truncate(1), 0); 1.218 +assertEq(shifted_umod_truncate(-1), 0); 1.219 +assertEq(shifted_umod_truncate(0), 0); 1.220 +assertEq(shifted_umod_truncate(-0), 0); 1.221 +assertEq(shifted_umod_truncate(1.1), 0); 1.222 +assertEq(shifted_umod_truncate(-1.1), 0); 1.223 +assertEq(shifted_umod_truncate(Infinity), 0); 1.224 +assertEq(shifted_umod_truncate(NaN), 0); 1.225 +assertEq(shifted_umod_truncate(undefined), 0); 1.226 +assertEq(shifted_umod_truncate(null), 0); 1.227 + 1.228 +function umod(y) { 1.229 + var yu = y>>>0; 1.230 + return yu % yu; 1.231 +} 1.232 +assertEq(umod(5), 0); 1.233 +assertEq(umod(1), 0); 1.234 +assertEq(umod(-1), 0); 1.235 +assertEq(umod(0), NaN); 1.236 +assertEq(umod(-0), NaN); 1.237 +assertEq(umod(1.1), 0); 1.238 +assertEq(umod(-1.1), 0); 1.239 +assertEq(umod(Infinity), NaN); 1.240 +assertEq(umod(NaN), NaN); 1.241 +assertEq(umod(undefined), NaN); 1.242 +assertEq(umod(null), NaN); 1.243 + 1.244 +function shifted_umod(y) { 1.245 + var yu = y>>>1; 1.246 + return yu % yu; 1.247 +} 1.248 +assertEq(shifted_umod(5), 0); 1.249 +assertEq(shifted_umod(2), 0); 1.250 +assertEq(shifted_umod(1), NaN); 1.251 +assertEq(shifted_umod(-1), 0); 1.252 +assertEq(shifted_umod(0), NaN); 1.253 +assertEq(shifted_umod(-0), NaN); 1.254 +assertEq(shifted_umod(1.1), NaN); 1.255 +assertEq(shifted_umod(-1.1), 0); 1.256 +assertEq(shifted_umod(Infinity), NaN); 1.257 +assertEq(shifted_umod(NaN), NaN); 1.258 +assertEq(shifted_umod(undefined), NaN); 1.259 +assertEq(shifted_umod(null), NaN); 1.260 + 1.261 +function sdiv_truncate_nonzero(y) { 1.262 + if (y == 0) return -202; 1.263 + return (y / y)|0; 1.264 +} 1.265 +assertEq(sdiv_truncate_nonzero(5), 1); 1.266 +assertEq(sdiv_truncate_nonzero(1), 1); 1.267 +assertEq(sdiv_truncate_nonzero(-1), 1); 1.268 +assertEq(sdiv_truncate_nonzero(0), -202); 1.269 +assertEq(sdiv_truncate_nonzero(-0), -202); 1.270 +assertEq(sdiv_truncate_nonzero(1.1), 1); 1.271 +assertEq(sdiv_truncate_nonzero(-1.1), 1); 1.272 +assertEq(sdiv_truncate_nonzero(Infinity), 0); 1.273 +assertEq(sdiv_truncate_nonzero(NaN), 0); 1.274 +assertEq(sdiv_truncate_nonzero(undefined), 0); 1.275 +assertEq(sdiv_truncate_nonzero(null), 0); 1.276 + 1.277 +function sdiv_nonzero(y) { 1.278 + if (y == 0) return -202; 1.279 + return y / y; 1.280 +} 1.281 +assertEq(sdiv_nonzero(5), 1); 1.282 +assertEq(sdiv_nonzero(1), 1); 1.283 +assertEq(sdiv_nonzero(-1), 1); 1.284 +assertEq(sdiv_nonzero(0), -202); 1.285 +assertEq(sdiv_nonzero(-0), -202); 1.286 +assertEq(sdiv_nonzero(1.1), 1); 1.287 +assertEq(sdiv_nonzero(-1.1), 1); 1.288 +assertEq(sdiv_nonzero(Infinity), NaN); 1.289 +assertEq(sdiv_nonzero(NaN), NaN); 1.290 +assertEq(sdiv_nonzero(undefined), NaN); 1.291 +assertEq(sdiv_nonzero(null), NaN); 1.292 + 1.293 +function udiv_truncate_nonzero(y) { 1.294 + var yu = y>>>0; 1.295 + if (yu == 0) return -202; 1.296 + return (yu / yu)|0; 1.297 +} 1.298 +assertEq(udiv_truncate_nonzero(5), 1); 1.299 +assertEq(udiv_truncate_nonzero(1), 1); 1.300 +assertEq(udiv_truncate_nonzero(-1), 1); 1.301 +assertEq(udiv_truncate_nonzero(0), -202); 1.302 +assertEq(udiv_truncate_nonzero(-0), -202); 1.303 +assertEq(udiv_truncate_nonzero(1.1), 1); 1.304 +assertEq(udiv_truncate_nonzero(-1.1), 1); 1.305 +assertEq(udiv_truncate_nonzero(Infinity), -202); 1.306 +assertEq(udiv_truncate_nonzero(NaN), -202); 1.307 +assertEq(udiv_truncate_nonzero(undefined), -202); 1.308 +assertEq(udiv_truncate_nonzero(null), -202); 1.309 + 1.310 +function shifted_udiv_truncate_nonzero(y) { 1.311 + var yu = y>>>1; 1.312 + if (yu == 0) return -202; 1.313 + return (yu / yu)|0; 1.314 +} 1.315 +assertEq(shifted_udiv_truncate_nonzero(5), 1); 1.316 +assertEq(shifted_udiv_truncate_nonzero(2), 1); 1.317 +assertEq(shifted_udiv_truncate_nonzero(1), -202); 1.318 +assertEq(shifted_udiv_truncate_nonzero(-1), 1); 1.319 +assertEq(shifted_udiv_truncate_nonzero(0), -202); 1.320 +assertEq(shifted_udiv_truncate_nonzero(-0), -202); 1.321 +assertEq(shifted_udiv_truncate_nonzero(1.1), -202); 1.322 +assertEq(shifted_udiv_truncate_nonzero(-1.1), 1); 1.323 +assertEq(shifted_udiv_truncate_nonzero(Infinity), -202); 1.324 +assertEq(shifted_udiv_truncate_nonzero(NaN), -202); 1.325 +assertEq(shifted_udiv_truncate_nonzero(undefined), -202); 1.326 +assertEq(shifted_udiv_truncate_nonzero(null), -202); 1.327 + 1.328 +function udiv_nonzero(y) { 1.329 + var yu = y>>>0; 1.330 + if (yu == 0) return -202; 1.331 + return yu / yu; 1.332 +} 1.333 +assertEq(udiv_nonzero(5), 1); 1.334 +assertEq(udiv_nonzero(1), 1); 1.335 +assertEq(udiv_nonzero(-1), 1); 1.336 +assertEq(udiv_nonzero(0), -202); 1.337 +assertEq(udiv_nonzero(-0), -202); 1.338 +assertEq(udiv_nonzero(1.1), 1); 1.339 +assertEq(udiv_nonzero(-1.1), 1); 1.340 +assertEq(udiv_nonzero(Infinity), -202); 1.341 +assertEq(udiv_nonzero(NaN), -202); 1.342 +assertEq(udiv_nonzero(undefined), -202); 1.343 +assertEq(udiv_nonzero(null), -202); 1.344 + 1.345 +function shifted_udiv_nonzero(y) { 1.346 + var yu = y>>>1; 1.347 + if (yu == 0) return -202; 1.348 + return yu / yu; 1.349 +} 1.350 +assertEq(shifted_udiv_nonzero(5), 1); 1.351 +assertEq(shifted_udiv_nonzero(2), 1); 1.352 +assertEq(shifted_udiv_nonzero(1), -202); 1.353 +assertEq(shifted_udiv_nonzero(-1), 1); 1.354 +assertEq(shifted_udiv_nonzero(0), -202); 1.355 +assertEq(shifted_udiv_nonzero(-0), -202); 1.356 +assertEq(shifted_udiv_nonzero(1.1), -202); 1.357 +assertEq(shifted_udiv_nonzero(-1.1), 1); 1.358 +assertEq(shifted_udiv_nonzero(Infinity), -202); 1.359 +assertEq(shifted_udiv_nonzero(NaN), -202); 1.360 +assertEq(shifted_udiv_nonzero(undefined), -202); 1.361 +assertEq(shifted_udiv_nonzero(null), -202); 1.362 + 1.363 +function smod_truncate_nonzero(y) { 1.364 + if (y == 0) return -202; 1.365 + return (y % y)|0; 1.366 +} 1.367 +assertEq(smod_truncate_nonzero(5), 0); 1.368 +assertEq(smod_truncate_nonzero(1), 0); 1.369 +assertEq(smod_truncate_nonzero(-1), 0); 1.370 +assertEq(smod_truncate_nonzero(0), -202); 1.371 +assertEq(smod_truncate_nonzero(-0), -202); 1.372 +assertEq(smod_truncate_nonzero(1.1), 0); 1.373 +assertEq(smod_truncate_nonzero(-1.1), 0); 1.374 +assertEq(smod_truncate_nonzero(Infinity), 0); 1.375 +assertEq(smod_truncate_nonzero(NaN), 0); 1.376 +assertEq(smod_truncate_nonzero(undefined), 0); 1.377 +assertEq(smod_truncate_nonzero(null), 0); 1.378 + 1.379 +function smod_nonzero(y) { 1.380 + if (y == 0) return -202; 1.381 + return y % y; 1.382 +} 1.383 +assertEq(smod_nonzero(5), 0); 1.384 +assertEq(smod_nonzero(1), 0); 1.385 +assertEq(smod_nonzero(-1), -0); 1.386 +assertEq(smod_nonzero(0), -202); 1.387 +assertEq(smod_nonzero(-0), -202); 1.388 +assertEq(smod_nonzero(1.1), 0); 1.389 +assertEq(smod_nonzero(-1.1), -0); 1.390 +assertEq(smod_nonzero(Infinity), NaN); 1.391 +assertEq(smod_nonzero(NaN), NaN); 1.392 +assertEq(smod_nonzero(undefined), NaN); 1.393 +assertEq(smod_nonzero(null), NaN); 1.394 + 1.395 +function umod_truncate_nonzero(y) { 1.396 + var yu = y>>>0; 1.397 + if (yu == 0) return -202; 1.398 + return (yu % yu)|0; 1.399 +} 1.400 +assertEq(umod_truncate_nonzero(5), 0); 1.401 +assertEq(umod_truncate_nonzero(1), 0); 1.402 +assertEq(umod_truncate_nonzero(-1), 0); 1.403 +assertEq(umod_truncate_nonzero(0), -202); 1.404 +assertEq(umod_truncate_nonzero(-0), -202); 1.405 +assertEq(umod_truncate_nonzero(1.1), 0); 1.406 +assertEq(umod_truncate_nonzero(-1.1), 0); 1.407 +assertEq(umod_truncate_nonzero(Infinity), -202); 1.408 +assertEq(umod_truncate_nonzero(NaN), -202); 1.409 +assertEq(umod_truncate_nonzero(undefined), -202); 1.410 +assertEq(umod_truncate_nonzero(null), -202); 1.411 + 1.412 +function shifted_umod_truncate_nonzero(y) { 1.413 + var yu = y>>>1; 1.414 + if (yu == 0) return -202; 1.415 + return (yu % yu)|0; 1.416 +} 1.417 +assertEq(shifted_umod_truncate_nonzero(5), 0); 1.418 +assertEq(shifted_umod_truncate_nonzero(2), 0); 1.419 +assertEq(shifted_umod_truncate_nonzero(1), -202); 1.420 +assertEq(shifted_umod_truncate_nonzero(-1), 0); 1.421 +assertEq(shifted_umod_truncate_nonzero(0), -202); 1.422 +assertEq(shifted_umod_truncate_nonzero(-0), -202); 1.423 +assertEq(shifted_umod_truncate_nonzero(1.1), -202); 1.424 +assertEq(shifted_umod_truncate_nonzero(-1.1), 0); 1.425 +assertEq(shifted_umod_truncate_nonzero(Infinity), -202); 1.426 +assertEq(shifted_umod_truncate_nonzero(NaN), -202); 1.427 +assertEq(shifted_umod_truncate_nonzero(undefined), -202); 1.428 +assertEq(shifted_umod_truncate_nonzero(null), -202); 1.429 + 1.430 +function umod_nonzero(y) { 1.431 + var yu = y>>>0; 1.432 + if (yu == 0) return -202; 1.433 + return yu % yu; 1.434 +} 1.435 +assertEq(umod_nonzero(5), 0); 1.436 +assertEq(umod_nonzero(1), 0); 1.437 +assertEq(umod_nonzero(-1), 0); 1.438 +assertEq(umod_nonzero(0), -202); 1.439 +assertEq(umod_nonzero(-0), -202); 1.440 +assertEq(umod_nonzero(1.1), 0); 1.441 +assertEq(umod_nonzero(-1.1), 0); 1.442 +assertEq(umod_nonzero(Infinity), -202); 1.443 +assertEq(umod_nonzero(NaN), -202); 1.444 +assertEq(umod_nonzero(undefined), -202); 1.445 +assertEq(umod_nonzero(null), -202); 1.446 + 1.447 +function shifted_umod_nonzero(y) { 1.448 + var yu = y>>>1; 1.449 + if (yu == 0) return -202; 1.450 + return yu % yu; 1.451 +} 1.452 +assertEq(shifted_umod_nonzero(5), 0); 1.453 +assertEq(shifted_umod_nonzero(2), 0); 1.454 +assertEq(shifted_umod_nonzero(1), -202); 1.455 +assertEq(shifted_umod_nonzero(-1), 0); 1.456 +assertEq(shifted_umod_nonzero(0), -202); 1.457 +assertEq(shifted_umod_nonzero(-0), -202); 1.458 +assertEq(shifted_umod_nonzero(1.1), -202); 1.459 +assertEq(shifted_umod_nonzero(-1.1), 0); 1.460 +assertEq(shifted_umod_nonzero(Infinity), -202); 1.461 +assertEq(shifted_umod_nonzero(NaN), -202); 1.462 +assertEq(shifted_umod_nonzero(undefined), -202); 1.463 +assertEq(shifted_umod_nonzero(null), -202); 1.464 + 1.465 +function sdiv_truncate_positive(y) { 1.466 + if (y <= 0) return -202; 1.467 + return (y / y)|0; 1.468 +} 1.469 +assertEq(sdiv_truncate_positive(5), 1); 1.470 +assertEq(sdiv_truncate_positive(1), 1); 1.471 +assertEq(sdiv_truncate_positive(-1), -202); 1.472 +assertEq(sdiv_truncate_positive(0), -202); 1.473 +assertEq(sdiv_truncate_positive(-0), -202); 1.474 +assertEq(sdiv_truncate_positive(1.1), 1); 1.475 +assertEq(sdiv_truncate_positive(-1.1), -202); 1.476 +assertEq(sdiv_truncate_positive(Infinity), 0); 1.477 +assertEq(sdiv_truncate_positive(NaN), 0); 1.478 +assertEq(sdiv_truncate_positive(undefined), 0); 1.479 +assertEq(sdiv_truncate_positive(null), -202); 1.480 + 1.481 +function sdiv_positive(y) { 1.482 + if (y <= 0) return -202; 1.483 + return y / y; 1.484 +} 1.485 +assertEq(sdiv_positive(5), 1); 1.486 +assertEq(sdiv_positive(1), 1); 1.487 +assertEq(sdiv_positive(-1), -202); 1.488 +assertEq(sdiv_positive(0), -202); 1.489 +assertEq(sdiv_positive(-0), -202); 1.490 +assertEq(sdiv_positive(1.1), 1); 1.491 +assertEq(sdiv_positive(-1.1), -202); 1.492 +assertEq(sdiv_positive(Infinity), NaN); 1.493 +assertEq(sdiv_positive(NaN), NaN); 1.494 +assertEq(sdiv_positive(undefined), NaN); 1.495 +assertEq(sdiv_positive(null), -202); 1.496 + 1.497 +function udiv_truncate_positive(y) { 1.498 + var yu = y>>>0; 1.499 + if (yu <= 0) return -202; 1.500 + return (yu / yu)|0; 1.501 +} 1.502 +assertEq(udiv_truncate_positive(5), 1); 1.503 +assertEq(udiv_truncate_positive(1), 1); 1.504 +assertEq(udiv_truncate_positive(-1), 1); 1.505 +assertEq(udiv_truncate_positive(0), -202); 1.506 +assertEq(udiv_truncate_positive(-0), -202); 1.507 +assertEq(udiv_truncate_positive(1.1), 1); 1.508 +assertEq(udiv_truncate_positive(-1.1), 1); 1.509 +assertEq(udiv_truncate_positive(Infinity), -202); 1.510 +assertEq(udiv_truncate_positive(NaN), -202); 1.511 +assertEq(udiv_truncate_positive(undefined), -202); 1.512 +assertEq(udiv_truncate_positive(null), -202); 1.513 + 1.514 +function shifted_udiv_truncate_positive(y) { 1.515 + var yu = y>>>1; 1.516 + if (yu <= 0) return -202; 1.517 + return (yu / yu)|0; 1.518 +} 1.519 +assertEq(shifted_udiv_truncate_positive(5), 1); 1.520 +assertEq(shifted_udiv_truncate_positive(2), 1); 1.521 +assertEq(shifted_udiv_truncate_positive(1), -202); 1.522 +assertEq(shifted_udiv_truncate_positive(-1), 1); 1.523 +assertEq(shifted_udiv_truncate_positive(0), -202); 1.524 +assertEq(shifted_udiv_truncate_positive(-0), -202); 1.525 +assertEq(shifted_udiv_truncate_positive(1.1), -202); 1.526 +assertEq(shifted_udiv_truncate_positive(-1.1), 1); 1.527 +assertEq(shifted_udiv_truncate_positive(Infinity), -202); 1.528 +assertEq(shifted_udiv_truncate_positive(NaN), -202); 1.529 +assertEq(shifted_udiv_truncate_positive(undefined), -202); 1.530 +assertEq(shifted_udiv_truncate_positive(null), -202); 1.531 + 1.532 +function udiv_positive(y) { 1.533 + var yu = y>>>0; 1.534 + if (yu <= 0) return -202; 1.535 + return yu / yu; 1.536 +} 1.537 +assertEq(udiv_positive(5), 1); 1.538 +assertEq(udiv_positive(1), 1); 1.539 +assertEq(udiv_positive(-1), 1); 1.540 +assertEq(udiv_positive(0), -202); 1.541 +assertEq(udiv_positive(-0), -202); 1.542 +assertEq(udiv_positive(1.1), 1); 1.543 +assertEq(udiv_positive(-1.1), 1); 1.544 +assertEq(udiv_positive(Infinity), -202); 1.545 +assertEq(udiv_positive(NaN), -202); 1.546 +assertEq(udiv_positive(undefined), -202); 1.547 +assertEq(udiv_positive(null), -202); 1.548 + 1.549 +function shifted_udiv_positive(y) { 1.550 + var yu = y>>>1; 1.551 + if (yu <= 0) return -202; 1.552 + return yu / yu; 1.553 +} 1.554 +assertEq(shifted_udiv_positive(5), 1); 1.555 +assertEq(shifted_udiv_positive(2), 1); 1.556 +assertEq(shifted_udiv_positive(1), -202); 1.557 +assertEq(shifted_udiv_positive(-1), 1); 1.558 +assertEq(shifted_udiv_positive(0), -202); 1.559 +assertEq(shifted_udiv_positive(-0), -202); 1.560 +assertEq(shifted_udiv_positive(1.1), -202); 1.561 +assertEq(shifted_udiv_positive(-1.1), 1); 1.562 +assertEq(shifted_udiv_positive(Infinity), -202); 1.563 +assertEq(shifted_udiv_positive(NaN), -202); 1.564 +assertEq(shifted_udiv_positive(undefined), -202); 1.565 +assertEq(shifted_udiv_positive(null), -202); 1.566 + 1.567 +function smod_truncate_positive(y) { 1.568 + if (y <= 0) return -202; 1.569 + return (y % y)|0; 1.570 +} 1.571 +assertEq(smod_truncate_positive(5), 0); 1.572 +assertEq(smod_truncate_positive(1), 0); 1.573 +assertEq(smod_truncate_positive(-1), -202); 1.574 +assertEq(smod_truncate_positive(0), -202); 1.575 +assertEq(smod_truncate_positive(-0), -202); 1.576 +assertEq(smod_truncate_positive(1.1), 0); 1.577 +assertEq(smod_truncate_positive(-1.1), -202); 1.578 +assertEq(smod_truncate_positive(Infinity), 0); 1.579 +assertEq(smod_truncate_positive(NaN), 0); 1.580 +assertEq(smod_truncate_positive(undefined), 0); 1.581 +assertEq(smod_truncate_positive(null), -202); 1.582 + 1.583 +function smod_positive(y) { 1.584 + if (y <= 0) return -202; 1.585 + return y % y; 1.586 +} 1.587 +assertEq(smod_positive(5), 0); 1.588 +assertEq(smod_positive(1), 0); 1.589 +assertEq(smod_positive(-1), -202); 1.590 +assertEq(smod_positive(0), -202); 1.591 +assertEq(smod_positive(-0), -202); 1.592 +assertEq(smod_positive(1.1), 0); 1.593 +assertEq(smod_positive(-1.1), -202); 1.594 +assertEq(smod_positive(Infinity), NaN); 1.595 +assertEq(smod_positive(NaN), NaN); 1.596 +assertEq(smod_positive(undefined), NaN); 1.597 +assertEq(smod_positive(null), -202); 1.598 + 1.599 +function umod_truncate_positive(y) { 1.600 + var yu = y>>>0; 1.601 + if (yu <= 0) return -202; 1.602 + return (yu % yu)|0; 1.603 +} 1.604 +assertEq(umod_truncate_positive(5), 0); 1.605 +assertEq(umod_truncate_positive(1), 0); 1.606 +assertEq(umod_truncate_positive(-1), 0); 1.607 +assertEq(umod_truncate_positive(0), -202); 1.608 +assertEq(umod_truncate_positive(-0), -202); 1.609 +assertEq(umod_truncate_positive(1.1), 0); 1.610 +assertEq(umod_truncate_positive(-1.1), 0); 1.611 +assertEq(umod_truncate_positive(Infinity), -202); 1.612 +assertEq(umod_truncate_positive(NaN), -202); 1.613 +assertEq(umod_truncate_positive(undefined), -202); 1.614 +assertEq(umod_truncate_positive(null), -202); 1.615 + 1.616 +function shifted_umod_truncate_positive(y) { 1.617 + var yu = y>>>1; 1.618 + if (yu <= 0) return -202; 1.619 + return (yu % yu)|0; 1.620 +} 1.621 +assertEq(shifted_umod_truncate_positive(5), 0); 1.622 +assertEq(shifted_umod_truncate_positive(2), 0); 1.623 +assertEq(shifted_umod_truncate_positive(1), -202); 1.624 +assertEq(shifted_umod_truncate_positive(-1), 0); 1.625 +assertEq(shifted_umod_truncate_positive(0), -202); 1.626 +assertEq(shifted_umod_truncate_positive(-0), -202); 1.627 +assertEq(shifted_umod_truncate_positive(1.1), -202); 1.628 +assertEq(shifted_umod_truncate_positive(-1.1), 0); 1.629 +assertEq(shifted_umod_truncate_positive(Infinity), -202); 1.630 +assertEq(shifted_umod_truncate_positive(NaN), -202); 1.631 +assertEq(shifted_umod_truncate_positive(undefined), -202); 1.632 +assertEq(shifted_umod_truncate_positive(null), -202); 1.633 + 1.634 +function umod_positive(y) { 1.635 + var yu = y>>>0; 1.636 + if (yu <= 0) return -202; 1.637 + return yu % yu; 1.638 +} 1.639 +assertEq(umod_positive(5), 0); 1.640 +assertEq(umod_positive(1), 0); 1.641 +assertEq(umod_positive(-1), 0); 1.642 +assertEq(umod_positive(0), -202); 1.643 +assertEq(umod_positive(-0), -202); 1.644 +assertEq(umod_positive(1.1), 0); 1.645 +assertEq(umod_positive(-1.1), 0); 1.646 +assertEq(umod_positive(Infinity), -202); 1.647 +assertEq(umod_positive(NaN), -202); 1.648 +assertEq(umod_positive(undefined), -202); 1.649 +assertEq(umod_positive(null), -202); 1.650 + 1.651 +function shifted_umod_positive(y) { 1.652 + var yu = y>>>1; 1.653 + if (yu <= 0) return -202; 1.654 + return yu % yu; 1.655 +} 1.656 +assertEq(shifted_umod_positive(5), 0); 1.657 +assertEq(shifted_umod_positive(2), 0); 1.658 +assertEq(shifted_umod_positive(1), -202); 1.659 +assertEq(shifted_umod_positive(-1), 0); 1.660 +assertEq(shifted_umod_positive(0), -202); 1.661 +assertEq(shifted_umod_positive(-0), -202); 1.662 +assertEq(shifted_umod_positive(1.1), -202); 1.663 +assertEq(shifted_umod_positive(-1.1), 0); 1.664 +assertEq(shifted_umod_positive(Infinity), -202); 1.665 +assertEq(shifted_umod_positive(NaN), -202); 1.666 +assertEq(shifted_umod_positive(undefined), -202); 1.667 +assertEq(shifted_umod_positive(null), -202);