fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / number.t
blob36c87423db5bbfa1323657e71d5e5302b1083940
1 #!./parrot
2 # Copyright (C) 2001-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/number.t - Number Registers
9 =head1 SYNOPSIS
11     % prove t/op/number.t
13 =head1 DESCRIPTION
15 Tests the use of Parrot floating-point number registers.
17 =cut
19 .sub main :main
20     .include 'test_more.pir'
22     plan(126)
23     test_set_n_nc()
24     test_set_n()
25     test_add_n_n_n()
26     test_add_n_n()
27     test_sub_n_n_n()
28     test_sub_n_n()
29     test_abs_n_i_ic_n_nc()
30     test_mul_i()
31     test_div_i()
32     test_mod_n()
33     test_eq_n_ic()
34     test_eq_nc_ic()
35     test_ne_n_ic()
36     test_ne_n_nc_ic()
37     test_lt_n_ic()
38     test_lt_nc_ic()
39     test_le_n_ic()
40     test_le_nc_ic()
41     test_gt_n_ic()
42     test_gt_nc_ic()
43     test_ge_n_ic()
44     test_ge_nc_ic()
45     test_if_n_ic()
46     test_inc_n()
47     test_dec_n()
48     test_set_i_n()
49     test_neg_n()
50     test_neg_0_dot_0()
51     test_mul_n_n()
52     test_op_n_nc_nc()
53     test_lt_nc_nc_ic()
54     test_string_gt_num()
55     test_null()
56     test_dot_dig_parsing()
57     test_sqrt_n_n()
58     test_exception_div_n_n_by_zero()
59     test_exception_div_n_nc_by_zero()
60     test_exception_div_n_n_n_by_zero()
61     test_exception_div_n_nc_n_by_zero()
62     test_exception_div_n_n_nc_by_zero()
63     test_exception_fdiv_n_n_by_zero()
64     test_exception_fdiv_n_nc_by_zero()
65     test_exception_fdiv_n_n_n_by_zero()
66     test_exception_fdiv_n_nc_n_by_zero()
67     test_exception_fdiv_n_n_nc_by_zero()
68     test_mod_n_n_n_by_zero()
69     test_mod_n_nc_n_by_zero()
70     test_mod_n_n_nc_by_zero()
71     # END_OF_TESTS
72 .end
74 .macro exception_is ( M )
75     .local pmc exception
76     .local string message
77     .get_results (exception)
79     message = exception['message']
80     is( message, .M, .M )
81 .endm
83 .sub test_set_n_nc
84     set     $N0, 1.0
85     set     $N1, 4.0
86     set     $N2, 16.0
87     set     $N3, 64.0
88     set     $N4, 256.0
89     set     $N5, 1024.0
90     set     $N6, 4096.0
91     set     $N7, 16384.0
92     set     $N8, 65536.0
93     set     $N9, 262144.0
94     set     $N10, 1048576.0
95     set     $N11, 4194304.0
96     set     $N12, 16777216.0
97     set     $N13, 67108864.0
98     set     $N14, 268435456.0
99     set     $N15, 1073741824.0
100     set     $N16, 4294967296.0
101     set     $N17, 17179869184.0
102     set     $N18, 68719476736.0
103     set     $N19, 274877906944.0
104     set     $N20, 1099511627776.0
105     set     $N21, 4398046511104.0
106     set     $N22, 17592186044416.0
107     set     $N23, 70368744177664.0
108     set     $N24, 281474976710656.0
109     set     $N25, 1.12589990684262e+15
110     is( $N0, "1", 'set_n_nc' )
111     is( $N1, "4", 'set_n_nc' )
112     is( $N2, "16", 'set_n_nc' )
113     is( $N3, "64", 'set_n_nc' )
114     is( $N4, "256", 'set_n_nc' )
115     is( $N5, "1024", 'set_n_nc' )
116     is( $N6, "4096", 'set_n_nc' )
117     is( $N7, "16384", 'set_n_nc' )
118     is( $N8, "65536", 'set_n_nc' )
119     is( $N9, "262144", 'set_n_nc' )
120     is( $N10, "1048576", 'set_n_nc' )
121     is( $N11, "4194304", 'set_n_nc' )
122     is( $N12, "16777216", 'set_n_nc' )
123     is( $N13, "67108864", 'set_n_nc' )
124     is( $N14, "268435456", 'set_n_nc' )
125     is( $N15, "1073741824", 'set_n_nc' )
126     is( $N16, "4294967296", 'set_n_nc' )
127     is( $N17, "17179869184", 'set_n_nc' )
128     is( $N18, "68719476736", 'set_n_nc' )
129     is( $N19, "274877906944", 'set_n_nc' )
130     is( $N20, "1099511627776", 'set_n_nc' )
131     is( $N21, "4398046511104", 'set_n_nc' )
132     is( $N22, "17592186044416", 'set_n_nc' )
133     is( $N23, "70368744177664", 'set_n_nc' )
134     is( $N24, "281474976710656", 'set_n_nc' )
135     is( $N25, "1.12589990684262e+15", 'set_n_nc' )
136 .end
138 .sub test_set_n
139     set     $N0, 42.0
140     set     $N1, $N0
141     is( $N1, "42", 'set_n' )
142 .end
144 .sub test_add_n_n_n
145     set     $N0, 1.0
146     add     $N1, $N0, $N0
147     is( $N1, "2", 'add_n_n_n' )
148     add     $N2, $N0, $N1
149     is( $N2, "3", 'add_n_n_n' )
150     add     $N2, $N2, $N2
151     is( $N2, "6", 'add_n_n_n' )
152 .end
154 .sub test_add_n_n
155     set     $N0, 1.0
156     add     $N0, $N0
157     is( $N0, "2", 'add_n_n' )
158     set     $N1, 1.0
159     add     $N0, $N1
160     is( $N0, "3", 'add_n_n' )
161     add     $N0, 3.0
162     is( $N0, "6", 'add_n_n' )
163 .end
165 .sub test_sub_n_n_n
166     set     $N0, 424242.0
167     set     $N1, 4200.0
168     sub     $N2, $N0, $N1
169     is( $N2, "420042", 'sub_n_n_n' )
170 .end
172 .sub test_sub_n_n
173     set     $N0, 424242.0
174     set     $N1, 4200.0
175     sub     $N0, $N1
176     is( $N0, "420042", 'sub_n_n' )
177     sub     $N0, $N0
178     is( $N0, "0", 'sub_n_n' )
179 .end
181 .sub test_abs_n_i_ic_n_nc
182     set     $I0, -1
183     abs     $N0, $I0
184     abs     $N1, -1
185     set     $I1, 1
186     abs     $N2, $I1
187     abs     $N3, 1
188     set     $N4, -1
189     abs     $N4, $N4
190     abs     $N5, -1.0
191     set     $N6, 1.0
192     abs     $N6, $N6
193     abs     $N7, 1.0
194     is( $N0, "1", 'abs(n, i|ic|n|nc)' )
195     is( $N1, "1", 'abs(n, i|ic|n|nc)' )
196     is( $N2, "1", 'abs(n, i|ic|n|nc)' )
197     is( $N3, "1", 'abs(n, i|ic|n|nc)' )
198     is( $N4, "1", 'abs(n, i|ic|n|nc)' )
199     is( $N5, "1", 'abs(n, i|ic|n|nc)' )
200     is( $N6, "1", 'abs(n, i|ic|n|nc)' )
201     is( $N7, "1", 'abs(n, i|ic|n|nc)' )
202 .end
204 .sub test_mul_i
205     set     $N0, 2.0
206     mul     $N1, $N0, $N0
207     mul     $N1, $N1, $N0
208     mul     $N1, $N1, $N0
209     mul     $N1, $N1, $N0
210     mul     $N1, $N1, $N0
211     mul     $N1, $N1, $N0
212     mul     $N1, $N1, $N0
213     is( $N1, "256", 'mul_i' )
214 .end
216 .sub test_div_i
217     set     $N0, 10.0
218     set     $N1, 2.0
219     div     $N2, $N0, $N1
220     is( $N2, "5", 'div_i' )
221     set     $N3, 7.0
222     set     $N4, 2.0
223     div     $N3, $N3, $N4
224     is( $N3, "3.5", 'div_i' )
225     set     $N5, 9.0
226     set     $N6, -4.0
227     div     $N7, $N5, $N6
228     is( $N7, "-2.25", 'div_i' )
229 .end
231 .sub test_mod_n
232     set     $N0, 5.0
233     set     $N1, 0.0
234     mod     $N2, $N0, $N1
235     is( $N2, "5", 'mod_n' )
236     set     $N0, 0.0
237     set     $N1, 3.0
238     mod     $N2, $N0, $N1
239     is( $N2, "0", 'mod_n' )
240     set     $N0, 5.0
241     set     $N1, 3.0
242     mod     $N2, $N0, $N1
243     is( $N2, "2", 'mod_n' )
244     set     $N0, 5.0
245     set     $N1, -3.0
246     mod     $N2, $N0, $N1
247     is( $N2, "-1", 'mod_n' )
248     set     $N0, -5.0
249     set     $N1, 3.0
250     mod     $N2, $N0, $N1
251     is( $N2, "1", 'mod_n' )
252     set     $N0, -5.0
253     set     $N1, -3.0
254     mod     $N2, $N0, $N1
255     is( $N2, "-2", 'mod_n' )
256 .end
258 .sub test_eq_n_ic
259     set     $N0, 5.000001
260     set     $N1, 5.000001
261     set     $N2, 5.000002
262     eq      $N0, $N1, ONE
263     branch  ERROR
264     ok( 0, 'test eq_n_ic bad' )
265   ONE:
266     ok( 1, 'eq_n_ic ok 1')
267     eq      $N1, $N2, ERROR
268     branch  TWO
269     ok( 0, 'eq_n_ic bad 1' )
270   TWO:
271     ok( 1, 'eq_n_ic ok 2')
272     goto END
273   ERROR:
274     ok( 0, 'eq_n_ic bad 2' )
275   END:
276 .end
278 .sub test_eq_nc_ic
279     set     $N0, 1.000001
280     eq      $N0, 1, ERROR
281     branch  ONE
282     ok( 0, 'eq_nc_ic')
283   ONE:
284     ok( 1, 'eq_nc_ic ok 1')
285     eq      $N0, 1.000001, TWO
286     branch  ERROR
287     ok( 0, 'eq_nc_ic')
288   TWO:
289     ok( 1, 'eq_nc_ic ok 2')
290     goto END
291   ERROR:
292     ok( 0, 'eq_nc_ic')
293   END:
294 .end
296 .sub test_ne_n_ic
297     set     $N0, -22.222222
298     set     $N1, -22.222222
299     set     $N2, 0.0
300     ne      $N0, $N2, ONE
301     branch  ERROR
302     ok( 0, 'ne_n_ic')
303   ONE:
304     ok( 1, 'ne_n_ic ok 1')
305     ne      $N0, $N1, ERROR
306     branch  TWO
307     ok( 0, 'ne_n_ic')
308   TWO:
309     ok( 1, 'ne_n_ic ok 2')
310     goto END
311   ERROR:
312     ok( 0, 'ne_n_ic')
313   END:
314 .end
316 .sub test_ne_n_nc_ic
317     set     $N0, 1073741824.0
318     ne      $N0, 1073741824.0, nok1
319     ok( 1, 'ne_n_nc_ic ok 1')
320     branch  ONE
321   nok1:
322     ok( 0, 'ne_n_nc_ic')
323   ONE:
324     ne      $N0, 0.0, TWO
325     branch  ERROR
326   TWO:
327     ok( 1, 'ne_n_nc_ic ok 2')
328     goto END
329   ERROR:
330     ok( 0, 'ne_n_nc_ic')
331   END:
332 .end
334 .sub test_lt_n_ic
335     set     $N0, 1000.0
336     set     $N1, 500.0
337     set     $N2, 0.0
338     set     $N3, 0.0
339     lt      $N1, $N0, ONE
340     branch  ERROR
341     ok( 0, 'lt_n_ic')
342   ONE:
343     ok( 1, 'lt_n_ic ok 1')
344     lt      $N0, $N1, ERROR
345     branch  TWO
346     ok( 0, 'lt_n_ic')
347   TWO:
348     ok( 1, 'lt_n_ic ok 2')
349     lt      $N2, $N3, ERROR
350     branch  THREE
351     ok( 0, 'lt_n_ic')
352   THREE:
353     ok( 1, 'lt_n_ic ok 3')
354     goto END
355   ERROR:
356     ok( 0, 'lt_n_ic')
357   END:
358 .end
360 .sub test_lt_nc_ic
361     set     $N0, 1000.0
362     set     $N1, 500.0
363     set     $N2, 0.0
364     lt      $N0, 500.0, ERROR
365     branch  ONE
366     ok( 0, 'lt_nc_ic')
367   ONE:
368     ok( 1, 'lt_nc_ic ok 1')
369     lt      $N1, 1000.0, TWO
370     branch  ERROR
371     ok( 0, 'lt_nc_ic')
372   TWO:
373     ok( 1, 'lt_nc_ic ok 2')
374     lt      $N0, 0.0, ERROR
375     branch  THREE
376     ok( 0, 'lt_nc_ic')
377   THREE:
378     ok( 1, 'lt_nc_ic ok 3')
379     goto END
380   ERROR:
381     ok( 0, 'lt_nc_ic')
382   END:
383 .end
385 .sub test_le_n_ic
386     set     $N0, 1000.0
387     set     $N1, 500.0
388     set     $N2, 0.0
389     set     $N3, 0.0
390     le      $N1, $N0, ONE
391     branch  ERROR
392     ok( 0, 'le_n_ic')
393   ONE:
394     ok( 1, 'le_n_ic ok 1')
395     le      $N0, $N1, ERROR
396     branch  TWO
397     ok( 0, 'le_n_ic')
398   TWO:
399     ok( 1, 'le_n_ic ok 2')
400     le      $N2, $N3, THREE
401     branch  ERROR
402     ok( 0, 'le_n_ic')
403   THREE:
404     ok( 1, 'le_n_ic ok 3')
405     goto END
406   ERROR:
407     ok( 0, 'le_n_ic')
408   END:
409 .end
411 .sub test_le_nc_ic
412     set     $N0, 1000.0
413     set     $N1, 500.0
414     set     $N2, 0.0
415     le      $N0, 500.0, ERROR
416     branch  ONE
417     ok( 0, 'le_nc_ic')
418   ONE:
419     ok( 1, 'le_nc_ic ok 1')
420     le      $N1, 1000.0, TWO
421     branch  ERROR
422     ok( 0, 'le_nc_ic')
423   TWO:
424     ok( 1, 'le_nc_ic ok 2')
425     le      $N2, 0.0, THREE
426     branch  ERROR
427     ok( 0, 'le_nc_ic')
428   THREE:
429     ok( 1, 'le_nc_ic ok 3')
430     goto END
431   ERROR:
432     ok( 0, 'le_nc_ic')
433   END:
434 .end
436 .sub test_gt_n_ic
437     set     $N0, 500.0
438     set     $N1, 1000.0
439     set     $N2, 0.0
440     set     $N3, 0.0
441     gt      $N1, $N0, ONE
442     branch  ERROR
443     ok( 0, 'gt_n_ic')
444   ONE:
445     ok( 1, 'gt_n_ic ok 1')
446     gt      $N0, $N1, ERROR
447     branch  TWO
448     ok( 0, 'gt_n_ic')
449   TWO:
450     ok( 1, 'gt_n_ic ok 2')
451     gt      $N2, $N3, ERROR
452     branch  THREE
453     ok( 0, 'gt_n_ic')
454   THREE:
455     ok( 1, 'gt_n_ic ok 3')
456     goto END
457   ERROR:
458     ok( 0, 'gt_n_ic')
459   END:
460 .end
462 .sub test_gt_nc_ic
463     set     $N0, 500.0
464     set     $N1, 1000.0
465     set     $N2, 0.0
466     gt      $N0, 1000.0, ERROR
467     branch  ONE
468     ok( 0, 'gt_nc_ic')
469   ONE:
470     ok( 1, 'gt_nc_ic ok 1')
471     gt      $N1, 500.0, TWO
472     branch  ERROR
473     ok( 0, 'gt_nc_ic')
474   TWO:
475     ok( 1, 'gt_nc_ic ok 2')
476     gt      $N2, 0.0, ERROR
477     branch  THREE
478     ok( 0, 'gt_nc_ic')
479   THREE:
480     ok( 1, 'gt_nc_ic ok 3')
481     goto END
482   ERROR:
483     ok( 0, 'gt_nc_ic')
484   END:
485 .end
487 .sub test_ge_n_ic
488     set     $N0, 500.0
489     set     $N1, 1000.0
490     set     $N2, 0.0
491     set     $N3, 0.0
492     ge      $N1, $N0, ONE
493     branch  ERROR
494     ok( 0, 'ge_n_ic')
495   ONE:
496     ok( 1, 'ge_n_ic ok 1')
497     ge      $N0, $N1, ERROR
498     branch  TWO
499     ok( 0, 'ge_n_ic')
500   TWO:
501     ok( 1, 'ge_n_ic ok 2')
502     ge      $N2, $N3, THREE
503     branch  ERROR
504     ok( 0, 'ge_n_ic')
505   THREE:
506     ok( 1, 'ge_n_ic ok 3')
507     goto END
508   ERROR:
509     ok( 0, 'ge_n_ic')
510   END:
511 .end
513 .sub test_ge_nc_ic
514     set     $N0, 500.0
515     set     $N1, 1000.0
516     set     $N2, 0.0
517     ge      $N0, 1000.0, ERROR
518     branch  ONE
519     ok( 0, 'ge_nc_ic')
520   ONE:
521     ok( 1, 'ge_nc_ic ok 1')
522     ge      $N1, 500.0, TWO
523     branch  ERROR
524     ok( 0, 'ge_nc_ic')
525   TWO:
526     ok( 1, 'ge_nc_ic ok 2')
527     ge      $N2, 0.0, THREE
528     branch  ERROR
529     ok( 0, 'ge_nc_ic')
530   THREE:
531     ok( 1, 'ge_nc_ic ok 3')
532     goto END
533   ERROR:
534     ok( 0, 'ge_nc_ic')
535   END:
536 .end
538 .sub test_if_n_ic
539     set     $N0, 1000.0
540     set     $N1, 500.0
541     set     $N2, 0.0
542     if      $N0, ONE
543     branch  ERROR
544     ok( 0, 'if_n_ic')
545   ONE:
546     ok( 1, 'if_n_ic ok 1')
547     if      $N1, TWO
548     branch  ERROR
549     ok( 0, 'if_n_ic')
550   TWO:
551     ok( 1, 'if_n_ic ok 2')
552     if      $N2, ERROR
553     branch  THREE
554     ok( 0, 'if_n_ic')
555   THREE:
556     ok( 1, 'if_n_ic ok 3')
557     goto END
558   ERROR:
559     ok( 0, 'if_n_ic')
560   END:
561 .end
563 .sub test_inc_n
564     set     $N0, 0.0
565     inc     $N0
566     is( $N0, "1", 'inc_n' )
567     inc     $N0
568     inc     $N0
569     inc     $N0
570     inc     $N0
571     is( $N0, "5", 'inc_n' )
572 .end
574 .sub test_dec_n
575     set     $N0, 0.0
576     dec     $N0
577     is( $N0, "-1", 'dec_n' )
578     dec     $N0
579     dec     $N0
580     dec     $N0
581     dec     $N0
582     is( $N0, "-5", 'dec_n' )
583 .end
585 .sub test_set_i_n
586     set     $N0, 0.0
587     set     $I0, $N0
588     is( $I0, "0", 'set_i_n' )
589     set     $N1, 2147483647.0
590     set     $I1, $N1
591     is( $I1, "2147483647", 'set_i_n' )
592     set     $N2, -2147483648.0
593     set     $I2, $N2
594     is( $I2, "-2147483648", 'set_i_n' )
595 .end
597 .sub test_neg_n
598     neg $N0,3.0
599     neg $N0,$N0
600     neg $N0
601     is( $N0, "-3", 'neg_n' )
602 .end
604 .sub test_neg_0_dot_0
605     load_bytecode 'config.pbc'
606     $P1 = _config()
607     $P2 = $P1['has_negative_zero']
608     unless $P2 goto negative_zero_todoed
610     set $N1, 0
611     neg $N1
612     is( $N1, "-0", 'neg 0.0' )
613     .return ()
615   negative_zero_todoed:
616     todo(0, '-0.0 not implemented, TT #313')
617 .end
619 .sub test_mul_n_n
620     set $N0,3.0
621     set $N1,4.0
622     mul $N0,$N1
623     is( $N0, "12", 'mul_n_n' )
624 .end
626 .sub test_op_n_nc_nc
627     add $N1, 2.0, 3.0
628     is( $N1, "5", 'op_n_nc_nc' )
629     sub $N1, 2.0, 4.0
630     is( $N1, "-2", 'op_n_nc_nc' )
631 .end
633 .sub test_lt_nc_nc_ic
634     lt 2.0, 1.0, nok
635     ok( 1, 'lt_nc_nc_ic ok 1')
636     lt 3.0, 4.0, ok_2
637   nok:
638     ok( 0, 'lt_nc_nc_ic')
639     goto END
640   ok_2:
641     ok( 1, 'lt_nc_nc_ic ok 2')
642   END:
643 .end
645 .sub test_string_gt_num
646     set $S0, "1"
647     set $S1, "12.0"
648     set $S2, "-2.45"
649     set $S3, "25e2"
650     set $S4, "Banana"
651     set $N0, $S0
652     set $N1, $S1
653     set $N2, $S2
654     set $N3, $S3
655     set $N4, $S4
656     is( $N0, "1", 'string -> num' )
657     is( $N1, "12", 'string -> num' )
658     is( $N2, "-2.45", 'string -> num' )
659     is( $N3, "2500", 'string -> num' )
660     is( $N4, "0", 'string -> num' )
661 .end
663 .sub test_null
664     set $N31, 12.5
665     is( $N31, "12.5", 'null' )
666     null $N31
667     is( $N31, "0", 'null' )
668 .end
670 .sub test_dot_dig_parsing
671     set $N0, .5
672     is( $N0, "0.5", '.dig parsing' )
673 .end
675 # Don't check exact string representation. Last digit part can be different */
676 .sub test_sqrt_n_n
677     $P0 = new 'Float'
678     $N1 = 2
679     $N2 = sqrt $N1
680     $P0 = $N2
681     is( $P0, 1.414213562373, 'sqrt_n_n',1e-6 )
683     $N2 = sqrt 2.0
684     $P0 = $N2
685     is( $P0, 1.414213562373, 'sqrt_n_n',1e-6 )
686 .end
688 .sub test_exception_div_n_n_by_zero
689     push_eh handler
690     set $N0, 0
691     set $N1, 10
692     div $N1, $N0
693   handler:
694     .exception_is( 'Divide by zero' )
695 .end
697 .sub test_exception_div_n_nc_by_zero
698     push_eh handler
699     set $N1, 10
700     div $N1, 0
701   handler:
702     .exception_is( 'Divide by zero' )
703 .end
705 .sub test_exception_div_n_n_n_by_zero
706     push_eh handler
707     set $N0, 0
708     set $N1, 10
709     div $N2, $N1, $N0
710   handler:
711     .exception_is( 'Divide by zero' )
712 .end
714 .sub test_exception_div_n_nc_n_by_zero
715     push_eh handler
716     set $N0, 0
717     div $N2, 10, $N0
718   handler:
719     .exception_is( 'Divide by zero' )
720 .end
722 .sub test_exception_div_n_n_nc_by_zero
723     push_eh handler
724     set $N1, 10
725     div $N2, $N1, 0
726   handler:
727     .exception_is( 'Divide by zero' )
728 .end
730 .sub test_exception_fdiv_n_n_by_zero
731     push_eh handler
732     set $N0, 0
733     set $N1, 10
734     fdiv $N1, $N0
735   handler:
736     .exception_is( 'Divide by zero' )
737 .end
739 .sub test_exception_fdiv_n_nc_by_zero
740     push_eh handler
741     set $N1, 10
742     fdiv $N1, 0
743   handler:
744     .exception_is( 'Divide by zero' )
745 .end
747 .sub test_exception_fdiv_n_n_n_by_zero
748     push_eh handler
749     set $N0, 0
750     set $N1, 10
751     fdiv $N2, $N1, $N0
752   handler:
753     .exception_is( 'Divide by zero' )
754 .end
756 .sub test_exception_fdiv_n_nc_n_by_zero
757     push_eh handler
758     set $N0, 0
759     fdiv $N2, 10, $N0
760   handler:
761     .exception_is( 'Divide by zero' )
762 .end
764 .sub test_exception_fdiv_n_n_nc_by_zero
765     push_eh handler
766     set $N1, 10
767     fdiv $N2, $N1, 0
768   handler:
769     .exception_is( 'Divide by zero' )
770 .end
772 .sub test_mod_n_n_n_by_zero
773     set $N0, 0
774     set $N1, 10
775     mod $N2, $N1, $N0
776     is( $N2, "10", 'mod_n_n_n by zero' )
777 .end
779 .sub test_mod_n_nc_n_by_zero
780     set $N0, 0
781     mod $N2, 10, $N0
782     is( $N2, 10, 'mod_n_nc_n by zero' )
783 .end
785 .sub test_mod_n_n_nc_by_zero
786     set $N1, 10
787     mod $N2, $N1, 0
788     is( $N2, '10', 'mod_n_n_nc by zero' )
789 .end
791 # Local Variables:
792 #   mode: pir
793 #   fill-column: 100
794 # End:
795 # vim: expandtab shiftwidth=4 ft=pir: