Forgot from #12843.
[p5sagit/p5-mst-13.2.git] / lib / Math / BigInt / t / bigfltpm.inc
CommitLineData
ee15d750 1#include this file into another test for subclass testing...
2while (<DATA>)
3 {
4 chop;
5 $_ =~ s/#.*$//; # remove comments
6 $_ =~ s/\s+$//; # trailing spaces
7 next if /^$/; # skip empty lines & comments
8 if (s/^&//)
9 {
10 $f = $_;
11 }
12 elsif (/^\$/)
13 {
14 $setup = $_; $setup =~ s/\$/\$${class}::/g; # round_mode, div_scale
15 #print "\$setup== $setup\n";
16 }
17 else
18 {
19 if (m|^(.*?):(/.+)$|)
20 {
21 $ans = $2;
22 @args = split(/:/,$1,99);
23 }
24 else
25 {
26 @args = split(/:/,$_,99); $ans = pop(@args);
27 }
28 $try = "\$x = new $class \"$args[0]\";";
29 if ($f eq "fnorm")
30 {
31 $try .= "\$x;";
32 } elsif ($f eq "finf") {
33 $try .= "\$x->finf('$args[1]');";
34 } elsif ($f eq "fnan") {
35 $try .= "\$x->fnan();";
36 } elsif ($f eq "numify") {
37 $try .= "\$x->numify();";
38 } elsif ($f eq "fone") {
39 $try .= "\$x->bone('$args[1]');";
40 } elsif ($f eq "fstr") {
41 $try .= "\$x->accuracy($args[1]); \$x->precision($args[2]);";
42 $try .= '$x->fstr();';
43 } elsif ($f eq "fsstr") {
44 $try .= '$x->fsstr();';
45 } elsif ($f eq "parts") {
46 # ->bstr() to see if a BigFloat is returned
47 $try .= '($a,$b) = $x->parts(); $a = $a->bstr(); $b = $b->bstr();';
48 $try .= '"$a $b";';
49 } elsif ($f eq "length") {
50 $try .= '$x->length();';
51 } elsif ($f eq "exponent") {
52 # ->bstr() to see if a BigFloat is returned
53 $try .= '$x->exponent()->bstr();';
54 } elsif ($f eq "mantissa") {
55 # ->bstr() to see if a BigFloat is returned
56 $try .= '$x->mantissa()->bstr();';
57 } elsif ($f eq "fneg") {
58 $try .= '$x->bneg();';
59 } elsif ($f eq "fnorm") {
60 $try .= '$x->fnorm();';
61 } elsif ($f eq "bfloor") {
62 $try .= '$x->ffloor();';
63 } elsif ($f eq "bceil") {
64 $try .= '$x->fceil();';
65 } elsif ($f eq "is_zero") {
66 $try .= '$x->is_zero();';
67 } elsif ($f eq "is_one") {
68 $try .= '$x->is_one();';
69 } elsif ($f eq "is_positive") {
70 $try .= '$x->is_positive();';
71 } elsif ($f eq "is_negative") {
72 $try .= '$x->is_negative();';
73 } elsif ($f eq "is_odd") {
74 $try .= '$x->is_odd();';
75 } elsif ($f eq "is_even") {
76 $try .= '$x->is_even();';
77 } elsif ($f eq "as_number") {
78 $try .= '$x->as_number();';
79 } elsif ($f eq "fabs") {
80 $try .= '$x->fabs();';
81 } elsif ($f eq "finc") {
82 $try .= '++$x;';
83 } elsif ($f eq "fdec") {
84 $try .= '--$x;';
85 }elsif ($f eq "fround") {
86 $try .= "$setup; \$x->fround($args[1]);";
87 } elsif ($f eq "ffround") {
88 $try .= "$setup; \$x->ffround($args[1]);";
89 } elsif ($f eq "fsqrt") {
90 $try .= "$setup; \$x->fsqrt();";
91 }
92 else
93 {
94 $try .= "\$y = new $class \"$args[1]\";";
95 if ($f eq "fcmp") {
96 $try .= '$x <=> $y;';
97 } elsif ($f eq "facmp") {
98 $try .= '$x->facmp($y);';
99 } elsif ($f eq "fpow") {
100 $try .= '$x ** $y;';
101 } elsif ($f eq "fadd") {
102 $try .= '$x + $y;';
103 } elsif ($f eq "fsub") {
104 $try .= '$x - $y;';
105 } elsif ($f eq "fmul") {
106 $try .= '$x * $y;';
107 } elsif ($f eq "fdiv") {
108 $try .= "$setup; \$x / \$y;";
109 } elsif ($f eq "fmod") {
110 $try .= '$x % $y;';
111 } else { warn "Unknown op '$f'"; }
112 }
113 $ans1 = eval $try;
114 if ($ans =~ m|^/(.*)$|)
115 {
116 my $pat = $1;
117 if ($ans1 =~ /$pat/)
118 {
119 ok (1,1);
120 }
121 else
122 {
123 print "# '$try' expected: /$pat/ got: '$ans1'\n" if !ok(1,0);
124 }
125 }
126 else
127 {
128 if ($ans eq "")
129 {
130 ok_undef ($ans1);
131 }
132 else
133 {
134 print "# Tried: '$try'\n" if !ok ($ans1, $ans);
135 if (ref($ans1) eq "$class")
136 {
137 #print $ans1->_trailing_zeros(),"\n";
138 print "# Has trailing zeros after '$try'\n"
139 if !ok ($ans1->{_m}->_trailing_zeros(), 0);
140 }
141 }
142 } # end pattern or string
143 }
144 } # end while
145
146# check whether new() for BigInts destroys them ($y == 12 in this case)
147$x = Math::BigInt->new(1200); $y = $class->new($x);
148ok ($y,1200); ok ($x,1200);
149
150###############################################################################
151# fdiv() in list context
152$x = $class->bzero(); ($x,$y) = $x->fdiv(0);
153ok ($x,'NaN'); ok ($y,'NaN');
154
155# fdiv() in list context
156$x = $class->bzero(); ($x,$y) = $x->fdiv(1);
157ok ($x,0); ok ($y,0);
158
159# all done
160
161###############################################################################
162# Perl 5.005 does not like ok ($x,undef)
163
164sub ok_undef
165 {
166 my $x = shift;
167
168 ok (1,1) and return if !defined $x;
169 ok ($x,'undef');
170 }
171
172__DATA__
173&fnorm
1741:1
175-0:0
176fnormNaN:NaN
177+inf:inf
178-inf:-inf
179123:123
180-123.4567:-123.4567
181&as_number
1820:0
1831:1
1841.2:1
1852.345:2
186-2:-2
187-123.456:-123
188-200:-200
189&finf
1901:+:inf
1912:-:-inf
1923:abc:inf
193&numify
1940:0e+1
195+1:1e+0
1961234:1234e+0
197NaN:NaN
198+inf:inf
199-inf:-inf
200&fnan
201abc:NaN
2022:NaN
203-2:NaN
2040:NaN
205&fone
2062:+:1
207-2:-:-1
208-2:+:1
2092:-:-1
2100::1
211-2::1
212abc::1
2132:abc:1
214&fsstr
215+inf:inf
216-inf:-inf
217abcfsstr:NaN
2181234.567:1234567e-3
219&fstr
220+inf:::inf
221-inf:::-inf
222abcfstr:::NaN
2231234.567:9::1234.56700
2241234.567::-6:1234.567000
22512345:5::12345
2260.001234:6::0.00123400
2270.001234::-8:0.00123400
2280:4::0
2290::-4:0.0000
230&fnorm
231inf:inf
232+inf:inf
233-inf:-inf
234+infinity:NaN
235+-inf:NaN
236abc:NaN
237 1 a:NaN
2381bcd2:NaN
23911111b:NaN
240+1z:NaN
241-1z:NaN
2420:0
243+0:0
244+00:0
245+0_0_0:0
246000000_0000000_00000:0
247-0:0
248-0000:0
249+1:1
250+01:1
251+001:1
252+00000100000:100000
253123456789:123456789
254-1:-1
255-01:-1
256-001:-1
257-123456789:-123456789
258-00000100000:-100000
259123.456a:NaN
260123.456:123.456
2610.01:0.01
262.002:0.002
263+.2:0.2
264-0.0003:-0.0003
265-.0000000004:-0.0000000004
266123456E2:12345600
267123456E-2:1234.56
268-123456E2:-12345600
269-123456E-2:-1234.56
2701e1:10
2712e-11:0.00000000002
272# excercise _split
273 .02e-1:0.002
274 000001:1
275 -00001:-1
276 -1:-1
277 000.01:0.01
278 -000.0023:-0.0023
279 1.1e1:11
280-3e111:-3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
281-4e-1111:-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
282&fpow
2832:2:4
2841:2:1
2851:3:1
286-1:2:1
287-1:3:-1
288123.456:2:15241.383936
2892:-2:0.25
2902:-3:0.125
291128:-2:0.00006103515625
292abc:123.456:NaN
293123.456:abc:NaN
294+inf:123.45:inf
295-inf:123.45:-inf
296+inf:-123.45:inf
297-inf:-123.45:-inf
298&fneg
299fnegNaN:NaN
300+inf:-inf
301-inf:inf
302+0:0
303+1:-1
304-1:1
305+123456789:-123456789
306-123456789:123456789
307+123.456789:-123.456789
308-123456.789:123456.789
309&fabs
310fabsNaN:NaN
311+inf:inf
312-inf:inf
313+0:0
314+1:1
315-1:1
316+123456789:123456789
317-123456789:123456789
318+123.456789:123.456789
319-123456.789:123456.789
320&fround
321$round_mode = "trunc"
322+inf:5:inf
323-inf:5:-inf
3240:5:0
325NaNfround:5:NaN
326+10123456789:5:10123000000
327-10123456789:5:-10123000000
328+10123456789.123:5:10123000000
329-10123456789.123:5:-10123000000
330+10123456789:9:10123456700
331-10123456789:9:-10123456700
332+101234500:6:101234000
333-101234500:6:-101234000
334$round_mode = "zero"
335+20123456789:5:20123000000
336-20123456789:5:-20123000000
337+20123456789.123:5:20123000000
338-20123456789.123:5:-20123000000
339+20123456789:9:20123456800
340-20123456789:9:-20123456800
341+201234500:6:201234000
342-201234500:6:-201234000
343$round_mode = "+inf"
344+30123456789:5:30123000000
345-30123456789:5:-30123000000
346+30123456789.123:5:30123000000
347-30123456789.123:5:-30123000000
348+30123456789:9:30123456800
349-30123456789:9:-30123456800
350+301234500:6:301235000
351-301234500:6:-301234000
352$round_mode = "-inf"
353+40123456789:5:40123000000
354-40123456789:5:-40123000000
355+40123456789.123:5:40123000000
356-40123456789.123:5:-40123000000
357+40123456789:9:40123456800
358-40123456789:9:-40123456800
359+401234500:6:401234000
360-401234500:6:-401235000
361$round_mode = "odd"
362+50123456789:5:50123000000
363-50123456789:5:-50123000000
364+50123456789.123:5:50123000000
365-50123456789.123:5:-50123000000
366+50123456789:9:50123456800
367-50123456789:9:-50123456800
368+501234500:6:501235000
369-501234500:6:-501235000
370$round_mode = "even"
371+60123456789:5:60123000000
372-60123456789:5:-60123000000
373+60123456789:9:60123456800
374-60123456789:9:-60123456800
375+601234500:6:601234000
376-601234500:6:-601234000
377+60123456789.0123:5:60123000000
378-60123456789.0123:5:-60123000000
379&ffround
380$round_mode = "trunc"
381+inf:5:inf
382-inf:5:-inf
3830:5:0
384NaNffround:5:NaN
385+1.23:-1:1.2
386+1.234:-1:1.2
387+1.2345:-1:1.2
388+1.23:-2:1.23
389+1.234:-2:1.23
390+1.2345:-2:1.23
391+1.23:-3:1.230
392+1.234:-3:1.234
393+1.2345:-3:1.234
394-1.23:-1:-1.2
395+1.27:-1:1.2
396-1.27:-1:-1.2
397+1.25:-1:1.2
398-1.25:-1:-1.2
399+1.35:-1:1.3
400-1.35:-1:-1.3
401-0.0061234567890:-1:0.0
402-0.0061:-1:0.0
403-0.00612:-1:0.0
404-0.00612:-2:0.00
405-0.006:-1:0.0
406-0.006:-2:0.00
407-0.0006:-2:0.00
408-0.0006:-3:0.000
409-0.0065:-3:/-0\.006|-6e-03
410-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
411-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
4120.05:0:0
4130.5:0:0
4140.51:0:0
4150.41:0:0
416$round_mode = "zero"
417+2.23:-1:/2.2(?:0{5}\d+)?
418-2.23:-1:/-2.2(?:0{5}\d+)?
419+2.27:-1:/2.(?:3|29{5}\d+)
420-2.27:-1:/-2.(?:3|29{5}\d+)
421+2.25:-1:/2.2(?:0{5}\d+)?
422-2.25:-1:/-2.2(?:0{5}\d+)?
423+2.35:-1:/2.(?:3|29{5}\d+)
424-2.35:-1:/-2.(?:3|29{5}\d+)
425-0.0065:-1:0.0
426-0.0065:-2:/-0\.01|-1e-02
427-0.0065:-3:/-0\.006|-6e-03
428-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
429-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
4300.05:0:0
4310.5:0:0
4320.51:0:1
4330.41:0:0
434$round_mode = "+inf"
435+3.23:-1:/3.2(?:0{5}\d+)?
436-3.23:-1:/-3.2(?:0{5}\d+)?
437+3.27:-1:/3.(?:3|29{5}\d+)
438-3.27:-1:/-3.(?:3|29{5}\d+)
439+3.25:-1:/3.(?:3|29{5}\d+)
440-3.25:-1:/-3.2(?:0{5}\d+)?
441+3.35:-1:/3.(?:4|39{5}\d+)
442-3.35:-1:/-3.(?:3|29{5}\d+)
443-0.0065:-1:0.0
444-0.0065:-2:/-0\.01|-1e-02
445-0.0065:-3:/-0\.006|-6e-03
446-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
447-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
4480.05:0:0
4490.5:0:1
4500.51:0:1
4510.41:0:0
452$round_mode = "-inf"
453+4.23:-1:/4.2(?:0{5}\d+)?
454-4.23:-1:/-4.2(?:0{5}\d+)?
455+4.27:-1:/4.(?:3|29{5}\d+)
456-4.27:-1:/-4.(?:3|29{5}\d+)
457+4.25:-1:/4.2(?:0{5}\d+)?
458-4.25:-1:/-4.(?:3|29{5}\d+)
459+4.35:-1:/4.(?:3|29{5}\d+)
460-4.35:-1:/-4.(?:4|39{5}\d+)
461-0.0065:-1:0.0
462-0.0065:-2:/-0\.01|-1e-02
463-0.0065:-3:/-0\.007|-7e-03
464-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
465-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
4660.05:0:0
4670.5:0:0
4680.51:0:1
4690.41:0:0
470$round_mode = "odd"
471+5.23:-1:/5.2(?:0{5}\d+)?
472-5.23:-1:/-5.2(?:0{5}\d+)?
473+5.27:-1:/5.(?:3|29{5}\d+)
474-5.27:-1:/-5.(?:3|29{5}\d+)
475+5.25:-1:/5.(?:3|29{5}\d+)
476-5.25:-1:/-5.(?:3|29{5}\d+)
477+5.35:-1:/5.(?:3|29{5}\d+)
478-5.35:-1:/-5.(?:3|29{5}\d+)
479-0.0065:-1:0.0
480-0.0065:-2:/-0\.01|-1e-02
481-0.0065:-3:/-0\.007|-7e-03
482-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
483-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
4840.05:0:0
4850.5:0:1
4860.51:0:1
4870.41:0:0
488$round_mode = "even"
489+6.23:-1:/6.2(?:0{5}\d+)?
490-6.23:-1:/-6.2(?:0{5}\d+)?
491+6.27:-1:/6.(?:3|29{5}\d+)
492-6.27:-1:/-6.(?:3|29{5}\d+)
493+6.25:-1:/6.(?:2(?:0{5}\d+)?|29{5}\d+)
494-6.25:-1:/-6.(?:2(?:0{5}\d+)?|29{5}\d+)
495+6.35:-1:/6.(?:4|39{5}\d+|29{8}\d+)
496-6.35:-1:/-6.(?:4|39{5}\d+|29{8}\d+)
497-0.0065:-1:0.0
498-0.0065:-2:/-0\.01|-1e-02
499-0.0065:-3:/-0\.006|-7e-03
500-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
501-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
5020.05:0:0
5030.5:0:0
5040.51:0:1
5050.41:0:0
5060.01234567:-3:0.012
5070.01234567:-4:0.0123
5080.01234567:-5:0.01235
5090.01234567:-6:0.012346
5100.01234567:-7:0.0123457
5110.01234567:-8:0.01234567
5120.01234567:-9:0.012345670
5130.01234567:-12:0.012345670000
514&fcmp
515fcmpNaN:fcmpNaN:
516fcmpNaN:+0:
517+0:fcmpNaN:
518+0:+0:0
519-1:+0:-1
520+0:-1:1
521+1:+0:1
522+0:+1:-1
523-1:+1:-1
524+1:-1:1
525-1:-1:0
526+1:+1:0
527-1.1:0:-1
528+0:-1.1:1
529+1.1:+0:1
530+0:+1.1:-1
531+123:+123:0
532+123:+12:1
533+12:+123:-1
534-123:-123:0
535-123:-12:-1
536-12:-123:1
537+123:+124:-1
538+124:+123:1
539-123:-124:1
540-124:-123:-1
5410:0.01:-1
5420:0.0001:-1
5430:-0.0001:1
5440:-0.1:1
5450.1:0:1
5460.00001:0:1
547-0.0001:0:-1
548-0.1:0:-1
5490:0.0001234:-1
5500:-0.0001234:1
5510.0001234:0:1
552-0.0001234:0:-1
5530.0001:0.0005:-1
5540.0005:0.0001:1
5550.005:0.0001:1
5560.001:0.0005:1
5570.000001:0.0005:-1
5580.00000123:0.0005:-1
5590.00512:0.0001:1
5600.005:0.000112:1
5610.00123:0.0005:1
5621.5:2:-1
5632:1.5:1
5641.54321:234:-1
565234:1.54321:1
566# infinity
567-inf:5432112345:-1
568+inf:5432112345:1
569-inf:-5432112345:-1
570+inf:-5432112345:1
571-inf:54321.12345:-1
572+inf:54321.12345:1
573-inf:-54321.12345:-1
574+inf:-54321.12345:1
575+inf:+inf:0
576-inf:-inf:0
577+inf:-inf:1
578-inf:+inf:-1
579# return undef
580+inf:NaN:
581NaN:inf:
582-inf:NaN:
583NaN:-inf:
584&facmp
585fcmpNaN:fcmpNaN:
586fcmpNaN:+0:
587+0:fcmpNaN:
588+0:+0:0
589-1:+0:1
590+0:-1:-1
591+1:+0:1
592+0:+1:-1
593-1:+1:0
594+1:-1:0
595-1:-1:0
596+1:+1:0
597-1.1:0:1
598+0:-1.1:-1
599+1.1:+0:1
600+0:+1.1:-1
601+123:+123:0
602+123:+12:1
603+12:+123:-1
604-123:-123:0
605-123:-12:1
606-12:-123:-1
607+123:+124:-1
608+124:+123:1
609-123:-124:-1
610-124:-123:1
6110:0.01:-1
6120:0.0001:-1
6130:-0.0001:-1
6140:-0.1:-1
6150.1:0:1
6160.00001:0:1
617-0.0001:0:1
618-0.1:0:1
6190:0.0001234:-1
6200:-0.0001234:-1
6210.0001234:0:1
622-0.0001234:0:1
6230.0001:0.0005:-1
6240.0005:0.0001:1
6250.005:0.0001:1
6260.001:0.0005:1
6270.000001:0.0005:-1
6280.00000123:0.0005:-1
6290.00512:0.0001:1
6300.005:0.000112:1
6310.00123:0.0005:1
6321.5:2:-1
6332:1.5:1
6341.54321:234:-1
635234:1.54321:1
636# infinity
637-inf:5432112345:1
638+inf:5432112345:1
639-inf:-5432112345:1
640+inf:-5432112345:1
641-inf:54321.12345:1
642+inf:54321.12345:1
643-inf:-54321.12345:1
644+inf:-54321.12345:1
645+inf:+inf:0
646-inf:-inf:0
647+inf:-inf:0
648-inf:+inf:0
649# return undef
650+inf:facmpNaN:
651facmpNaN:inf:
652-inf:facmpNaN:
653facmpNaN:-inf:
654&fdec
655fdecNaN:NaN
656+inf:inf
657-inf:-inf
658+0:-1
659+1:0
660-1:-2
6611.23:0.23
662-1.23:-2.23
663&finc
664fincNaN:NaN
665+inf:inf
666-inf:-inf
667+0:1
668+1:2
669-1:0
6701.23:2.23
671-1.23:-0.23
672&fadd
673abc:abc:NaN
674abc:+0:NaN
675+0:abc:NaN
676+inf:-inf:0
677-inf:+inf:0
678+inf:+inf:inf
679-inf:-inf:-inf
680baddNaN:+inf:NaN
681baddNaN:+inf:NaN
682+inf:baddNaN:NaN
683-inf:baddNaN:NaN
684+0:+0:0
685+1:+0:1
686+0:+1:1
687+1:+1:2
688-1:+0:-1
689+0:-1:-1
690-1:-1:-2
691-1:+1:0
692+1:-1:0
693+9:+1:10
694+99:+1:100
695+999:+1:1000
696+9999:+1:10000
697+99999:+1:100000
698+999999:+1:1000000
699+9999999:+1:10000000
700+99999999:+1:100000000
701+999999999:+1:1000000000
702+9999999999:+1:10000000000
703+99999999999:+1:100000000000
704+10:-1:9
705+100:-1:99
706+1000:-1:999
707+10000:-1:9999
708+100000:-1:99999
709+1000000:-1:999999
710+10000000:-1:9999999
711+100000000:-1:99999999
712+1000000000:-1:999999999
713+10000000000:-1:9999999999
714+123456789:+987654321:1111111110
715-123456789:+987654321:864197532
716-123456789:-987654321:-1111111110
717+123456789:-987654321:-864197532
7180.001234:0.0001234:0.0013574
719&fsub
720abc:abc:NaN
721abc:+0:NaN
722+0:abc:NaN
723+inf:-inf:inf
724-inf:+inf:-inf
725+inf:+inf:0
726-inf:-inf:0
727baddNaN:+inf:NaN
728baddNaN:+inf:NaN
729+inf:baddNaN:NaN
730-inf:baddNaN:NaN
731+0:+0:0
732+1:+0:1
733+0:+1:-1
734+1:+1:0
735-1:+0:-1
736+0:-1:1
737-1:-1:0
738-1:+1:-2
739+1:-1:2
740+9:+1:8
741+99:+1:98
742+999:+1:998
743+9999:+1:9998
744+99999:+1:99998
745+999999:+1:999998
746+9999999:+1:9999998
747+99999999:+1:99999998
748+999999999:+1:999999998
749+9999999999:+1:9999999998
750+99999999999:+1:99999999998
751+10:-1:11
752+100:-1:101
753+1000:-1:1001
754+10000:-1:10001
755+100000:-1:100001
756+1000000:-1:1000001
757+10000000:-1:10000001
758+100000000:-1:100000001
759+1000000000:-1:1000000001
760+10000000000:-1:10000000001
761+123456789:+987654321:-864197532
762-123456789:+987654321:-1111111110
763-123456789:-987654321:864197532
764+123456789:-987654321:1111111110
765&fmul
766abc:abc:NaN
767abc:+0:NaN
768+0:abc:NaN
769+inf:NaNmul:NaN
770+inf:NaNmul:NaN
771NaNmul:+inf:NaN
772NaNmul:-inf:NaN
773+inf:+inf:inf
774+inf:-inf:-inf
775+inf:-inf:-inf
776+inf:+inf:inf
777+inf:123.34:inf
778+inf:-123.34:-inf
779-inf:123.34:-inf
780-inf:-123.34:inf
781123.34:+inf:inf
782-123.34:+inf:-inf
783123.34:-inf:-inf
784-123.34:-inf:inf
785+0:+0:0
786+0:+1:0
787+1:+0:0
788+0:-1:0
789-1:+0:0
790+123456789123456789:+0:0
791+0:+123456789123456789:0
792-1:-1:1
793-1:+1:-1
794+1:-1:-1
795+1:+1:1
796+2:+3:6
797-2:+3:-6
798+2:-3:-6
799-2:-3:6
800+111:+111:12321
801+10101:+10101:102030201
802+1001001:+1001001:1002003002001
803+100010001:+100010001:10002000300020001
804+10000100001:+10000100001:100002000030000200001
805+11111111111:+9:99999999999
806+22222222222:+9:199999999998
807+33333333333:+9:299999999997
808+44444444444:+9:399999999996
809+55555555555:+9:499999999995
810+66666666666:+9:599999999994
811+77777777777:+9:699999999993
812+88888888888:+9:799999999992
813+99999999999:+9:899999999991
8146:120:720
81510:10000:100000
816&fdiv
817$div_scale = 40; $round_mode = 'even'
818abc:abc:NaN
819abc:+1:abc:NaN
820+1:abc:NaN
821-1:abc:NaN
8220:abc:NaN
823+0:+0:NaN
824+0:+1:0
825+1:+0:inf
826+3214:+0:inf
827+0:-1:0
828-1:+0:-inf
829-3214:+0:-inf
830+1:+1:1
831-1:-1:1
832+1:-1:-1
833-1:+1:-1
834+1:+2:0.5
835+2:+1:2
836123:+inf:0
837123:-inf:0
838+10:+5:2
839+100:+4:25
840+1000:+8:125
841+10000:+16:625
842+10000:-16:-625
843+999999999999:+9:111111111111
844+999999999999:+99:10101010101
845+999999999999:+999:1001001001
846+999999999999:+9999:100010001
847+999999999999999:+99999:10000100001
848+1000000000:+9:111111111.1111111111111111111111111111111
849+2000000000:+9:222222222.2222222222222222222222222222222
850+3000000000:+9:333333333.3333333333333333333333333333333
851+4000000000:+9:444444444.4444444444444444444444444444444
852+5000000000:+9:555555555.5555555555555555555555555555556
853+6000000000:+9:666666666.6666666666666666666666666666667
854+7000000000:+9:777777777.7777777777777777777777777777778
855+8000000000:+9:888888888.8888888888888888888888888888889
856+9000000000:+9:1000000000
857+35500000:+113:314159.2920353982300884955752212389380531
858+71000000:+226:314159.2920353982300884955752212389380531
859+106500000:+339:314159.2920353982300884955752212389380531
860+1000000000:+3:333333333.3333333333333333333333333333333
8612:25.024996000799840031993601279744051189762:0.07992009269196593320152084692285869265447
862$div_scale = 20
863+1000000000:+9:111111111.11111111111
864+2000000000:+9:222222222.22222222222
865+3000000000:+9:333333333.33333333333
866+4000000000:+9:444444444.44444444444
867+5000000000:+9:555555555.55555555556
868+6000000000:+9:666666666.66666666667
869+7000000000:+9:777777777.77777777778
870+8000000000:+9:888888888.88888888889
871+9000000000:+9:1000000000
8721:10:0.1
8731:100:0.01
8741:1000:0.001
8751:10000:0.0001
8761:504:0.001984126984126984127
8772:1.987654321:1.0062111801179738436
878# the next two cases are the "old" behaviour, but are now (>v0.01) different
879#+35500000:+113:314159.292035398230088
880#+71000000:+226:314159.292035398230088
881+35500000:+113:314159.29203539823009
882+71000000:+226:314159.29203539823009
883+106500000:+339:314159.29203539823009
884+1000000000:+3:333333333.33333333333
885$div_scale = 1
886# round to accuracy 1 after bdiv
887+124:+3:40
888# reset scale for further tests
889$div_scale = 40
890&fmod
891+0:0:NaN
892+0:1:0
893+3:1:0
894#+5:2:1
895#+9:4:1
896#+9:5:4
897#+9000:56:40
898#+56:9000:56
899&fsqrt
900+0:0
901-1:NaN
902-2:NaN
903-16:NaN
904-123.45:NaN
905nanfsqrt:NaN
906+inf:inf
907-inf:NaN
908+1:1
909+2:1.41421356237309504880168872420969807857
910+4:2
911+16:4
912+100:10
913+123.456:11.11107555549866648462149404118219234119
914+15241.38393:123.4559999756998444766131352122991626468
915+1.44:1.2
916&is_odd
917abc:0
9180:0
919-1:1
920-3:1
9211:1
9223:1
9231000001:1
9241000002:0
925+inf:0
926-inf:0
927123.45:0
928-123.45:0
9292:0
930&is_even
931abc:0
9320:1
933-1:0
934-3:0
9351:0
9363:0
9371000001:0
9381000002:1
9392:1
940+inf:0
941-inf:0
942123.456:0
943-123.456:0
944&is_positive
9450:1
9461:1
947-1:0
948-123:0
949NaN:0
950-inf:0
951+inf:1
952&is_negative
9530:0
9541:0
955-1:1
956-123:1
957NaN:0
958-inf:1
959+inf:0
960&parts
9610:0 1
9621:1 0
963123:123 0
964-123:-123 0
965-1200:-12 2
966NaNparts:NaN NaN
967+inf:inf inf
968-inf:-inf inf
969&exponent
9700:1
9711:0
972123:0
973-123:0
974-1200:2
975+inf:inf
976-inf:inf
977NaNexponent:NaN
978&mantissa
9790:0
9801:1
981123:123
982-123:-123
983-1200:-12
984+inf:inf
985-inf:-inf
986NaNmantissa:NaN
987&length
988123:3
989-123:3
9900:1
9911:1
99212345678901234567890:20
993&is_zero
994NaNzero:0
995+inf:0
996-inf:0
9970:1
998-1:0
9991:0
1000&is_one
1001NaNone:0
1002+inf:0
1003-inf:0
10040:0
10052:0
10061:1
1007-1:0
1008-2:0
1009&bfloor
10100:0
1011abc:NaN
1012+inf:inf
1013-inf:-inf
10141:1
1015-51:-51
1016-51.2:-52
101712.2:12
1018&bceil
10190:0
1020abc:NaN
1021+inf:inf
1022-inf:-inf
10231:1
1024-51:-51
1025-51.2:-51
102612.2:13