|
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); |