This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Math::BigRat from version 0.2613 to 0.2614
[perl5.git] / cpan / Math-BigRat / t / bigratpm.inc
CommitLineData
184f15d5
JH
1#include this file into another test for subclass testing...
2
11c955be
SH
3use strict;
4use warnings;
5
3cc1ad36 6our ($CLASS, $try, $x, $y, $z, $f, @args, $want, $got, $setup, $LIB);
11c955be 7
3cc1ad36 8is($CLASS->config()->{lib}, $LIB);
184f15d5 9
990fb837
RGS
10$setup = '';
11
11c955be
SH
12while (<DATA>) {
13 s/#.*$//; # remove comments
14 s/\s+$//; # remove trailing whitespace
15 next unless length; # skip empty lines
16
17 if (s/^&//) {
18 $f = $_;
19 next;
20 }
21
22 if (/^\$/) {
23 $setup = $_;
24 $setup =~ s/\$/\$${CLASS}::/g; # round_mode, div_scale
25 #print "\$setup== $setup\n";
26 next;
184f15d5 27 }
11c955be
SH
28
29 if (m|^(.*?):(/.+)$|) {
30 $want = $2;
31 @args = split(/:/, $1, 99);
32 } else {
33 @args = split(/:/, $_, 99);
34 $want = pop(@args);
184f15d5 35 }
11c955be
SH
36
37 $try = qq|\$x = $CLASS->new("$args[0]");|;
38 if ($f eq "bnorm") {
39 $try .= " \$x;";
40 } elsif ($f eq "finf") {
990fb837 41 my $a = $args[1] || '';
11c955be 42 $try .= qq| \$x->binf("$a");|;
11c955be
SH
43 } elsif ($f eq "fone") {
44 $try .= qq| \$x->bone("$args[1]");|;
45 } elsif ($f eq "fstr") {
46 $try .= " \$x->accuracy($args[1]); \$x->precision($args[2]);";
47 $try .= ' $x->bstr();';
48 } elsif ($f eq "parts") {
184f15d5 49 # ->bstr() to see if an object is returned
11c955be
SH
50 $try .= ' ($a,$b) = $x->parts(); $a = $a->bstr(); $b = $b->bstr();';
51 $try .= ' "$a $b";';
52 } elsif ($f eq "numerator") {
184f15d5 53 # ->bstr() to see if an object is returned
11c955be
SH
54 $try .= ' $x->numerator()->bstr();';
55 } elsif ($f eq "denominator") {
184f15d5 56 # ->bstr() to see if an object is returned
11c955be
SH
57 $try .= ' $x->denominator()->bstr();';
58 } elsif ($f =~ /^(length|numify)$/) {
59 $try .= " \$x->$f();";
60 # some unary ops (can't test the fxxx form, since no AUTOLOAD in BigRat)
61 } elsif ($f =~ /^f(nan|sstr|neg|floor|ceil|abs)$/) {
62 $try .= " \$x->b$1();";
63 # overloaded functions
64 } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) {
65 $try .= " \$x = $f(\$x);";
66 # some is_xxx test function
3cc1ad36 67 } elsif ($f =~ /^is_(zero|pos|neg|negative|positive|odd|even|nan|int)\z/) {
11c955be 68 $try .= " \$x->$f();";
3cc1ad36
SH
69 } elsif ($f =~ /^is_(one|inf)$/) {
70 $try .= @args == 1 ? qq| \$x->$f();|
71 : qq| \$x->$f("$args[1]");|;
11c955be
SH
72 } elsif ($f =~ /^(as_number|as_int)\z/) {
73 $try .= " \$x->$1();";
74 } elsif ($f eq "finc") {
75 $try .= ' ++$x;';
76 } elsif ($f eq "fdec") {
77 $try .= ' --$x;';
78 } elsif ($f eq "digit") {
79 $try .= " \$x->digit($args[1]);";
80 } elsif ($f eq "fround") {
81 $try .= " $setup; \$x->bround($args[1]);";
82 } elsif ($f eq "ffround") {
83 $try .= " $setup; \$x->bfround($args[1]);";
84 } elsif ($f eq "fsqrt") {
85 $try .= " $setup; \$x->bsqrt();";
86 } elsif ($f eq "flog") {
87 $try .= " $setup; \$x->blog();";
88 } elsif ($f eq "ffac") {
89 $try .= " $setup; \$x->bfac();";
90 } else {
91 $try .= qq| \$y = $CLASS->new("$args[1]");|;
92 if ($f eq "bcmp") {
93 $try .= ' $x <=> $y;';
94 } elsif ($f eq "bacmp") {
95 $try .= ' $x->bacmp($y);';
96 } elsif ($f eq "bpow") {
11c955be
SH
97 $try .= ' $x->bpow($y);';
98 } elsif ($f eq "badd") {
99 $try .= ' $x + $y;';
100 } elsif ($f eq "bsub") {
101 $try .= ' $x - $y;';
102 } elsif ($f eq "bmul") {
103 $try .= ' $x * $y;';
104 } elsif ($f eq "bdiv") {
105 $try .= " $setup; \$x / \$y;";
106 } elsif ($f eq "bdiv-list") {
107 $try .= qq| $setup; join(",", \$x->bdiv(\$y));|;
108 } elsif ($f eq "brsft") {
109 $try .= ' $x >> $y;';
110 } elsif ($f eq "blsft") {
111 $try .= ' $x << $y;';
112 } elsif ($f eq "bmod") {
113 $try .= ' $x % $y;';
114 } elsif ($f eq "bmodinv") {
115 $try .= " \$x->bmodinv(\$y);";
116 } elsif ($f eq "blog") {
117 $try .= " \$x->blog(\$y);";
118 } else {
119 $try .= qq| \$z = $CLASS->new("$args[2]");|;
7afd7a91 120
11c955be
SH
121 # Functions with three arguments
122 if ($f eq "bmodpow") {
123 $try .= " \$x->bmodpow(\$y, \$z);";
124 } else {
125 warn "Unknown op '$f'";
126 }
127 }
184f15d5
JH
128 }
129 # print "# Trying: '$try'\n";
11c955be
SH
130 $got = eval $try;
131 if ($want =~ m|^/(.*)$|) {
132 my $pat = $1;
133 like($got, qr/$pat/, $try);
134 } else {
135 if ($want eq "") {
136 is($got, undef, $try);
137 } else {
138 is($got, $want, $try);
139 #if (ref($got) eq "$CLASS") {
140 # # float numbers are normalized (for now), so mantissa shouldn't have
141 # # trailing zeros
142 # #print $got->_trailing_zeros(), "\n";
143 # print "# Has trailing zeros after '$try'\n"
144 # if !is($got->{_m}->_trailing_zeros(), 0);
145 #}
184f15d5 146 }
11c955be
SH
147 } # end pattern or string
148} # end while
184f15d5 149
11c955be 150# check whether $CLASS->new(Math::BigInt->new()) destroys it
184f15d5 151# ($y == 12 in this case)
11c955be
SH
152$x = Math::BigInt->new(1200);
153$y = $CLASS->new($x);
154is($y, 1200, qq|\$x = Math::BigInt->new(1200); \$y = $CLASS->new(\$x); $y|);
155is($x, 1200, qq|\$x = Math::BigInt->new(1200); \$y = $CLASS->new(\$x); $x|);
184f15d5
JH
156
157###############################################################################
11c955be 158# zero, inf, one, nan
184f15d5 159
11c955be
SH
160$x = $CLASS->new(2);
161$x->bzero();
162is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bzero(); \$x->{_a}|);
163is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bzero(); \$x->{_p}|);
164
165$x = $CLASS->new(2);
166$x->binf();
167is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->binf(); \$x->{_a}|);
168is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->binf(); \$x->{_p}|);
169
170$x = $CLASS->new(2);
171$x->bone();
172is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bone(); \$x->{_a}|);
173is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bone(); \$x->{_p}|);
174
175$x = $CLASS->new(2);
176$x->bnan();
177is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_a}|);
178is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_p}|);
184f15d5
JH
179
180__DATA__
3cc1ad36 181
12fc2493
AMS
182&digit
183123:2:1
1841234:0:4
1851234:1:3
1861234:2:2
1871234:3:1
1881234:-1:1
1891234:-2:2
1901234:-3:3
1911234:-4:4
1920:0:0
1930:1:0
3cc1ad36 194
7afd7a91
T
195&bmodinv
196# format: number:modulus:result
197# bmodinv Data errors
198abc:abc:NaN
199abc:5:NaN
2005:abc:NaN
201# bmodinv Expected Results from normal use
2021:5:1
2033:5:2
487de07a 2043:-5:-3
7afd7a91
T
205-2:5:2
2068:5033:4404
2071234567891:13:6
208-1234567891:13:7
209324958749843759385732954874325984357439658735983745:2348249874968739:1741662881064902
210## bmodinv Error cases / useless use of function
7afd7a91
T
211inf:5:NaN
2125:inf:NaN
213-inf:5:NaN
2145:-inf:NaN
3cc1ad36 215
990fb837
RGS
216&as_number
217144/7:20
b68b7ab1
T
21812/1:12
219-12/1:-12
220-12/3:-4
221NaN:NaN
222+inf:inf
223-inf:-inf
3cc1ad36 224
b68b7ab1
T
225&as_int
226144/7:20
22712/1:12
228-12/1:-12
229-12/3:-4
990fb837
RGS
230NaN:NaN
231+inf:inf
232-inf:-inf
3cc1ad36 233
7afd7a91
T
234&bmodpow
235# format: number:exponent:modulus:result
236# bmodpow Data errors
237abc:abc:abc:NaN
2385:abc:abc:NaN
239abc:5:abc:NaN
240abc:abc:5:NaN
2415:5:abc:NaN
2425:abc:5:NaN
243abc:5:5:NaN
244# bmodpow Expected results
2450:0:2:1
2461:0:2:1
2470:0:1:0
2488:7:5032:3840
2498:-1:5033:4404
116f6d6b 2508:8:-5:-4
7afd7a91
T
25198436739867439843769485798542749827593285729587325:43698764986460981048259837659386739857456983759328457:6943857329857295827698367:3104744730915914415259518
252# bmodpow Error cases
7afd7a91
T
2538:-1:16:NaN
254inf:5:13:NaN
2555:inf:13:NaN
3cc1ad36 256
990fb837
RGS
257&bmod
258NaN:1:NaN
2591:NaN:NaN
2601:1:0
2612:2:0
26212:6:0
2637/4:4/14:1/28
2647/4:4/16:0
265-7/4:4/16:0
266-7/4:-4/16:0
2677/4:-4/16:0
2687/4:4/32:0
269-7/4:4/32:0
270-7/4:-4/32:0
2717/4:-4/32:0
2727/4:4/28:1/28
3f185657
PJA
273-7/4:4/28:3/28
2747/4:-4/28:-3/28
990fb837 275-7/4:-4/28:-1/28
3cc1ad36 276
990fb837
RGS
277&fsqrt
2781:1
2790:0
280NaN:NaN
281+inf:inf
282-inf:NaN
283144:12
284# sqrt(144) / sqrt(4) = 12/2 = 6/1
285144/4:6
28625/16:5/4
287-3:NaN
3cc1ad36
SH
2884/9:2/3
28936/49:6/7
29049/121:7/11
291999966000289/99999820000081:999983/9999991
292
990fb837
RGS
293&flog
294NaN:NaN
11c955be 2950:-inf
7afd7a91 296-2:NaN
3cc1ad36 297
7afd7a91
T
298&blog
299NaN:NaN:NaN
3000:NaN:NaN
301NaN:0:NaN
302NaN:1:NaN
3031:NaN:NaN
11c955be 3040:2:-inf
7afd7a91
T
3050:-2:NaN
3063:-2:NaN
3cc1ad36 307
184f15d5
JH
308&finf
3091:+:inf
3102:-:-inf
3113:abc:inf
3cc1ad36 312
990fb837 313&numify
93c87d9d
T
3140:0
315+1:1
3161234:1234
3173/4:0.75
3185/2:2.5
3193/2:1.5
3205/4:1.25
990fb837 321NaN:NaN
93c87d9d
T
322+inf:inf
323-inf:-inf
3cc1ad36 324
184f15d5
JH
325&fnan
326abc:NaN
3272:NaN
328-2:NaN
3290:NaN
3cc1ad36 330
184f15d5
JH
331&fone
3322:+:1
333-2:-:-1
334-2:+:1
3352:-:-1
3360::1
337-2::1
338abc::1
3392:abc:1
3cc1ad36 340
184f15d5
JH
341&fsstr
342+inf:inf
343-inf:-inf
344abcfsstr:NaN
3451:1/1
3463/1:3/1
3470.1:1/10
3cc1ad36 348
184f15d5
JH
349&bnorm
3501:1
351-0:0
352bnormNaN:NaN
353+inf:inf
354-inf:-inf
7afd7a91
T
355inf/inf:NaN
3565/inf:0
3575/-inf:0
358inf/5:inf
359-inf/5:-inf
360inf/-5:-inf
361-inf/-5:inf
184f15d5
JH
362123:123
363-123.4567:-1234567/10000
364# invalid inputs
3651__2:NaN
3661E1__2:NaN
36711__2E2:NaN
368#1.E3:NaN
369.2E-3.:NaN
370#1e3e4:NaN
371.2E2:20
372inf:inf
373+inf:inf
374-inf:-inf
11c955be 375+InFiNiTy:inf
184f15d5
JH
376+-inf:NaN
377abc:NaN
378 1 a:NaN
3791bcd2:NaN
38011111b:NaN
381+1z:NaN
382-1z:NaN
3830:0
384+0:0
385+00:0
386+0_0_0:0
387000000_0000000_00000:0
388-0:0
389-0000:0
390+1:1
391+01:1
392+001:1
393+00000100000:100000
12fc2493
AMS
394+00000800/00000010:80
395-00000800/00000010:-80
396+00000800/-00000010:-80
397-00000800/-00000010:80
184f15d5
JH
398123456789:123456789
399-1:-1
400-01:-1
401-001:-1
402-123456789:-123456789
403-00000100000:-100000
404123.456a:NaN
405123.456:15432/125
4060.01:1/100
407.002:1/500
408+.2:1/5
409-0.0003:-3/10000
410-.0000000004:-1/2500000000
411123456E2:12345600
412123456E-2:30864/25
413-123456E2:-12345600
414-123456E-2:-30864/25
4151e1:10
4162e-11:1/50000000000
41712/10:6/5
4180.1/0.1:1
419100/0.1:1000
4200.1/10:1/100
4211 / 3:1/3
4221/ 3:1/3
4231 /3:1/3
3cc1ad36 424
184f15d5
JH
425&fneg
426fnegNaN:NaN
427+inf:-inf
428-inf:inf
429+0:0
430+1:-1
431-1:1
432+123456789:-123456789
433-123456789:123456789
434+123.456789:-123456789/1000000
435-123456.789:123456789/1000
b68b7ab1
T
436123/7:-123/7
437-123/7:123/7
438123/-7:123/7
3cc1ad36 439
184f15d5
JH
440&fabs
441fabsNaN:NaN
442+inf:inf
443-inf:inf
444+0:0
445+1:1
446-1:1
447+123456789:123456789
448-123456789:123456789
449+123.456789:123456789/1000000
450-123456.789:123456789/1000
3cc1ad36 451
184f15d5
JH
452&badd
453abc:abc:NaN
454abc:+0:NaN
455+0:abc:NaN
456+inf:-inf:NaN
457-inf:+inf:NaN
458+inf:+inf:inf
459-inf:-inf:-inf
460baddNaN:+inf:NaN
461baddNaN:+inf:NaN
462+inf:baddNaN:NaN
463-inf:baddNaN:NaN
464+0:+0:0
465+1:+0:1
466+0:+1:1
467+1:+1:2
468-1:+0:-1
469+0:-1:-1
470-1:-1:-2
471-1:+1:0
472+1:-1:0
473+9:+1:10
474+99:+1:100
475+999:+1:1000
476+9999:+1:10000
477+99999:+1:100000
478+999999:+1:1000000
479+9999999:+1:10000000
480+99999999:+1:100000000
481+999999999:+1:1000000000
482+9999999999:+1:10000000000
483+99999999999:+1:100000000000
484+10:-1:9
485+100:-1:99
486+1000:-1:999
487+10000:-1:9999
488+100000:-1:99999
489+1000000:-1:999999
490+10000000:-1:9999999
491+100000000:-1:99999999
492+1000000000:-1:999999999
493+10000000000:-1:9999999999
494+123456789:+987654321:1111111110
495-123456789:+987654321:864197532
496-123456789:-987654321:-1111111110
497+123456789:-987654321:-864197532
4981/3:1/3:2/3
4992/3:-1/3:1/3
3cc1ad36 500
184f15d5
JH
501&bsub
502abc:abc:NaN
503abc:+0:NaN
504+0:abc:NaN
505+inf:-inf:inf
506-inf:+inf:-inf
507+inf:+inf:NaN
508-inf:-inf:NaN
509baddNaN:+inf:NaN
510baddNaN:+inf:NaN
511+inf:baddNaN:NaN
512-inf:baddNaN:NaN
513+0:+0:0
514+1:+0:1
515+0:+1:-1
516+1:+1:0
517-1:+0:-1
518+0:-1:1
519-1:-1:0
520-1:+1:-2
521+1:-1:2
522+9:+1:8
523+99:+1:98
524+999:+1:998
525+9999:+1:9998
526+99999:+1:99998
527+999999:+1:999998
528+9999999:+1:9999998
529+99999999:+1:99999998
530+999999999:+1:999999998
531+9999999999:+1:9999999998
532+99999999999:+1:99999999998
533+10:-1:11
534+100:-1:101
535+1000:-1:1001
536+10000:-1:10001
537+100000:-1:100001
538+1000000:-1:1000001
539+10000000:-1:10000001
540+100000000:-1:100000001
541+1000000000:-1:1000000001
542+10000000000:-1:10000000001
543+123456789:+987654321:-864197532
544-123456789:+987654321:-1111111110
545-123456789:-987654321:864197532
546+123456789:-987654321:1111111110
5472/3:1/3:1/3
5487/27:3/54:11/54
549-2/3:+2/3:-4/3
550-2/3:-2/3:0
7afd7a91
T
5510:-123:123
5520:123:-123
3cc1ad36 553
184f15d5
JH
554&bmul
555abc:abc:NaN
556abc:+0:NaN
557+0:abc:NaN
558+inf:NaNmul:NaN
559+inf:NaNmul:NaN
560NaNmul:+inf:NaN
561NaNmul:-inf:NaN
562+inf:+inf:inf
563+inf:-inf:-inf
564+inf:-inf:-inf
565+inf:+inf:inf
566+inf:123.34:inf
567+inf:-123.34:-inf
568-inf:123.34:-inf
569-inf:-123.34:inf
570123.34:+inf:inf
571-123.34:+inf:-inf
572123.34:-inf:-inf
573-123.34:-inf:inf
574+0:+0:0
575+0:+1:0
576+1:+0:0
577+0:-1:0
578-1:+0:0
579+123456789123456789:+0:0
580+0:+123456789123456789:0
581-1:-1:1
582-1:+1:-1
583+1:-1:-1
584+1:+1:1
585+2:+3:6
586-2:+3:-6
587+2:-3:-6
588-2:-3:6
589+111:+111:12321
590+10101:+10101:102030201
591+1001001:+1001001:1002003002001
592+100010001:+100010001:10002000300020001
593+10000100001:+10000100001:100002000030000200001
594+11111111111:+9:99999999999
595+22222222222:+9:199999999998
596+33333333333:+9:299999999997
597+44444444444:+9:399999999996
598+55555555555:+9:499999999995
599+66666666666:+9:599999999994
600+77777777777:+9:699999999993
601+88888888888:+9:799999999992
602+99999999999:+9:899999999991
6036:120:720
60410:10000:100000
6051/4:1/3:1/12
3cc1ad36 606
3f185657
PJA
607&bdiv-list
6080:0:NaN,0
6090:1:0,0
6101:0:inf,1
611-1:0:-inf,-1
6129:4:2,1
613-9:4:-3,3
6149:-4:-3,-3
615-9:-4:2,-1
61611/7:2/3:2,5/21
617-11/7:2/3:-3,3/7
3cc1ad36 618
184f15d5 619&bdiv
11c955be 620$div_scale = 40; $round_mode = "even"
184f15d5
JH
621abc:abc:NaN
622abc:+1:abc:NaN
623+1:abc:NaN
624-1:abc:NaN
6250:abc:NaN
626+0:+0:NaN
627+0:+1:0
628+1:+0:inf
629+3214:+0:inf
630+0:-1:0
631-1:+0:-inf
632-3214:+0:-inf
633+1:+1:1
634-1:-1:1
635+1:-1:-1
636-1:+1:-1
637+1:+2:1/2
638+2:+1:2
639123:+inf:0
640123:-inf:0
641+10:+5:2
642+100:+4:25
643+1000:+8:125
644+10000:+16:625
645+10000:-16:-625
646+999999999999:+9:111111111111
647+999999999999:+99:10101010101
648+999999999999:+999:1001001001
649+999999999999:+9999:100010001
650+999999999999999:+99999:10000100001
651+1000000000:+9:1000000000/9
652+2000000000:+9:2000000000/9
653+3000000000:+9:1000000000/3
654+4000000000:+9:4000000000/9
655+5000000000:+9:5000000000/9
656+6000000000:+9:2000000000/3
657+7000000000:+9:7000000000/9
658+8000000000:+9:8000000000/9
659+9000000000:+9:1000000000
660+35500000:+113:35500000/113
661+71000000:+226:35500000/113
662+106500000:+339:35500000/113
663+1000000000:+3:1000000000/3
6642:25.024996000799840031993601279744051189762:1000000000000000000000000000000000000000/12512498000399920015996800639872025594881
665123456:1:123456
6661/4:1/3:3/4
667# reset scale for further tests
668$div_scale = 40
3cc1ad36 669
184f15d5
JH
670&is_nan
671123:0
672abc:1
673NaN:1
674-123:0
3cc1ad36 675
184f15d5 676&is_inf
3cc1ad36
SH
677# without sign argument
678abc:0
679NaN:0
680+inf:1
681-inf:1
682-1:0
6830:0
6841:0
685# with sign argument "+"
686abc:+:0
687NaN:+:0
184f15d5 688+inf:+:1
184f15d5 689-inf:+:0
3cc1ad36
SH
690-1:+:0
6910:+:0
6921:+:0
693# with sign argument "-"
694abc:-:0
695NaN:-:0
696+inf:-:0
697-inf:-:1
698-1:-:0
6990:-:0
7001:-:0
701+infinity:1
702-infinity:1
703
184f15d5
JH
704&is_odd
705abc:0
7060:0
707-1:1
708-3:1
7091:1
7103:1
7111000001:1
7121000002:0
713+inf:0
714-inf:0
715123.45:0
716-123.45:0
7172:0
3cc1ad36 718
184f15d5
JH
719&is_int
720NaNis_int:0
7210:1
7221:1
7232:1
724-2:1
725-1:1
726-inf:0
727+inf:0
728123.4567:0
729-0.1:0
730-0.002:0
7311/3:0
7323/1:1
3cc1ad36 733
184f15d5
JH
734&is_even
735abc:0
7360:1
737-1:0
738-3:0
7391:0
7403:0
7411000001:0
7421000002:1
7432:1
744+inf:0
745-inf:0
746123.456:0
747-123.456:0
7480.01:0
749-0.01:0
750120:1
7511200:1
752-1200:1
3cc1ad36 753
b68b7ab1
T
754&is_pos
7550:0
7561:1
757-1:0
758-123:0
759NaN:0
760-inf:0
761+inf:1
3cc1ad36 762
184f15d5 763&is_positive
b68b7ab1 7640:0
184f15d5
JH
7651:1
766-1:0
767-123:0
768NaN:0
769-inf:0
770+inf:1
3cc1ad36 771
b68b7ab1
T
772&is_neg
7730:0
7741:0
775-1:1
776-123:1
777NaN:0
778-inf:1
779+inf:0
3cc1ad36 780
184f15d5
JH
781&is_negative
7820:0
7831:0
784-1:1
785-123:1
786NaN:0
787-inf:1
788+inf:0
3cc1ad36 789
a4e2b1c6
JH
790&parts
7910:0 1
7921:1 1
793123:123 1
794-123:-123 1
795-1200:-1200 1
7965/7:5 7
797-5/7:-5 7
798NaNparts:NaN NaN
799+inf:inf inf
800-inf:-inf inf
3cc1ad36 801
12fc2493
AMS
802&length
803123:3
804-123:3
8050:1
8061:1
80712345678901234567890:20
3cc1ad36 808
184f15d5
JH
809&is_zero
810NaNzero:0
811+inf:0
812-inf:0
8130:1
814-1:0
8151:0
8160/3:1
8171/3:0
7afd7a91
T
818-0/3:1
8195/inf:1
3cc1ad36 820
184f15d5 821&is_one
3cc1ad36
SH
822# with no sign argument
823invalid:0
824NaN:0
184f15d5
JH
825+inf:0
826-inf:0
3cc1ad36
SH
827-2:0
828-1:0
184f15d5 8290:0
184f15d5 8301:1
184f15d5 831-2:0
3cc1ad36
SH
832# with sign argument "+"
833invalid:+:0
834NaN:+:0
835+inf:+:0
836-inf:+:0
837-2:+:0
838-1:+:0
8390:+:0
8401:+:1
841-2:+:0
842# with sign argument "-"
843invalid:-:0
844NaN:-:0
845+inf:-:0
846-inf:-:0
847-2:-:0
848-1:-:1
8490:-:0
8501:-:0
851-2:-:0
184f15d5
JH
8521/3:0
853100/100:1
8540.1/0.1:1
7afd7a91 8555/inf:0
3cc1ad36 856
184f15d5
JH
857&ffloor
8580:0
859abc:NaN
860+inf:inf
861-inf:-inf
8621:1
863-51:-51
864-51.2:-52
86512.2:12
a4e2b1c6
JH
8663/7:0
8676/7:0
8687/7:1
8698/7:1
87013/7:1
87114/7:2
87215/7:2
873-3/7:-1
874-6/7:-1
875-7/1:-7
876-8/7:-2
877-13/7:-2
878-14/7:-2
879-15/7:-3
3cc1ad36 880
184f15d5
JH
881&fceil
8820:0
883abc:NaN
884+inf:inf
885-inf:-inf
8861:1
887-51:-51
888-51.2:-51
88912.2:13
a4e2b1c6
JH
8903/7:1
8916/7:1
8928/7:2
89313/7:2
89414/7:2
89515/7:3
896-3/7:0
897-6/7:0
898-8/7:-1
899-13/7:-1
900-14/7:-2
901-15/7:-2
3cc1ad36 902
a4e2b1c6
JH
903&ffac
904NaN:NaN
9051:1
906-1:NaN
3cc1ad36 907
a4e2b1c6 908&bpow
3cc1ad36
SH
909#
910abc:123:NaN
911123:abc:NaN
912#
913-inf:-inf:0
914-inf:-3:0
915-inf:-2:0
916-inf:-3/2:0
917-inf:-1:0
918-inf:-1/2:0
919-inf:0:NaN
920-inf:1/2:inf # directed infinity
921-inf:1:-inf
922-inf:3/2:inf # directed infinity
923-inf:2:inf
924-inf:3:-inf
925-inf:inf:inf # complex infinity
926-inf:NaN:NaN
927#
928-3:-inf:0
929-3:-3:-1/27
930-3:-2:1/9
931-3:-3/2:NaN
932-3:-1:-1/3
933-3:-1/2:NaN
934-3:0:1
935-3:1/2:NaN
936-3:1:-3
937-3:3/2:NaN
938-3:2:9
939-3:3:-27
940-3:inf:inf # complex infinity
941-3:NaN:NaN
942#
943-2:-inf:0
944-2:-3:-1/8
945-2:-2:1/4
946-2:-3/2:NaN
947-2:-1:-1/2
948-2:-1/2:NaN
949-2:0:1
950-2:1/2:NaN
951-2:1:-2
952-2:3/2:NaN
953-2:2:4
954-2:3:-8
955-2:inf:inf # complex infinity
956-2:NaN:NaN
957#
958-3/2:-inf:0
959-3/2:-3:-8/27
960-3/2:-2:4/9
961-3/2:-3/2:NaN
962-3/2:-1:-2/3
963-3/2:-1/2:NaN
964-3/2:0:1
965-3/2:1/2:NaN
966-3/2:1:-3/2
967-3/2:3/2:NaN
968-3/2:2:9/4
969-3/2:3:-27/8
970-3/2:inf:inf # complex infinity
971-3/2:NaN:NaN
972#
973-1:-inf:NaN
974-1:-3:-1
975-1:-2:1
976-1:-3/2:NaN
977-1:-1:-1
978-1:-1/2:NaN
979-1:0:1
980-1:1/2:NaN
981-1:1:-1
982-1:3/2:NaN
983-1:2:1
984-1:3:-1
985-1:inf:NaN
986-1:NaN:NaN
987#
988-1/2:-inf:inf # complex infinity
989-1/2:-3:-8
990-1/2:-2:4
991-1/2:-3/2:NaN
992-1/2:-1:-2
993-1/2:-1/2:NaN
994-1/2:0:1
995-1/2:1/2:NaN
996-1/2:1:-1/2
997-1/2:3/2:NaN
998-1/2:2:1/4
999-1/2:3:-1/8
1000-1/2:inf:0
1001-1/2:NaN:NaN
1002#
10030:-inf:inf # complex infinity
10040:-3:inf # complex infinity
10050:-2:inf # complex infinity
10060:-3/2:inf # complex infinity
10070:-1:inf # complex infinity
10080:-1/2:inf # complex infinity
10090:0:1
10100:1/2:0
10110:1:0
10120:3/2:0
10130:2:0
10140:3:0
10150:inf:0
10160:NaN:NaN
1017#
10181/2:-inf:inf
10191/2:-3:8
10201/2:-2:4
1021#1/2:-3/2:2.828427124746190097603377448419396157139
10221/2:-1:2
1023#1/2:-1/2:1.41421356237309504880168872420969807857
10241/2:0:1
1025#1/2:1/2:0.7071067811865475244008443621048490392848
10261/2:1:1/2
1027#1/2:3/2:0.3535533905932737622004221810524245196424
10281/2:2:1/4
10291/2:3:1/8
10301/2:inf:0
10311/2:NaN:NaN
1032#
10331:-inf:1
10341:-3:1
10351:-2:1
10361:-3/2:1
10371:-1:1
10381:-1/2:1
10391:0:1
10401:1/2:1
10411:1:1
10421:3/2:1
10431:2:1
10441:3:1
10451:inf:1
10461:NaN:NaN
1047#
10483/2:-inf:0
10493/2:-3:8/27
10503/2:-2:4/9
1051#3/2:-3/2:0.5443310539518173551549520166013091982147
10523/2:-1:2/3
1053#3/2:-1/2:0.816496580927726032732428024901963797322
10543/2:0:1
1055#3/2:1/2:1.224744871391589049098642037352945695983
10563/2:1:3/2
1057#3/2:3/2:1.837117307087383573647963056029418543974
10583/2:2:9/4
10593/2:3:27/8
10603/2:inf:inf
10613/2:NaN:NaN
1062#
10632:-inf:0
10642:-3:1/8
10652:-2:1/4
1066#2:-3/2:0.3535533905932737622004221810524245196424
10672:-1:1/2
1068#2:-1/2:0.7071067811865475244008443621048490392848
10692:0:1
1070#2:1/2:1.41421356237309504880168872420969807857
10712:1:2
1072#2:3/2:2.828427124746190097603377448419396157139
a4e2b1c6 10732:2:4
3cc1ad36
SH
10742:3:8
10752:inf:inf
10762:NaN:NaN
1077#
10783:-inf:0
10793:-3:1/27
10803:-2:1/9
1081#3:-3/2:0.1924500897298752548363829268339858185492
10823:-1:1/3
1083#3:-1/2:0.5773502691896257645091487805019574556476
10843:0:1
1085#3:1/2:1.732050807568877293527446341505872366943
10863:1:3
1087#3:3/2:5.196152422706631880582339024517617100828
10883:2:9
a4e2b1c6 10893:3:27
3cc1ad36
SH
10903:inf:inf
10913:NaN:NaN
1092#
1093inf:-inf:0
1094inf:-3:0
1095inf:-2:0
1096inf:-3/2:0
1097inf:-1:0
1098inf:-1/2:0
1099inf:0:NaN
1100inf:1/2:inf
1101inf:1:inf
1102inf:3/2:inf
1103inf:2:inf
1104inf:3:inf
1105inf:inf:inf
1106inf:NaN:NaN
1107#
1108NaN:-inf:NaN
1109NaN:-3:NaN
1110NaN:-2:NaN
1111NaN:-3/2:NaN
1112NaN:-1:NaN
1113NaN:-1/2:NaN
1114NaN:0:NaN
1115NaN:1/2:NaN
1116NaN:1:NaN
1117NaN:3/2:NaN
1118NaN:2:NaN
1119NaN:3:NaN
1120NaN:inf:NaN
1121NaN:NaN:NaN
1122
7afd7a91
T
1123&bacmp
1124+0:-0:0
1125+0:+1:-1
1126-1:+1:0
1127+1:-1:0
1128-1:+2:-1
1129+2:-1:1
1130-123456789:+987654321:-1
1131+123456789:-987654321:-1
1132+987654321:+123456789:1
1133-987654321:+123456789:1
1134-123:+4567889:-1
1135# NaNs
1136acmpNaN:123:
1137123:acmpNaN:
1138acmpNaN:acmpNaN:
1139# infinity
1140+inf:+inf:0
1141-inf:-inf:0
1142+inf:-inf:0
1143-inf:+inf:0
1144+inf:123:1
1145-inf:123:1
1146+inf:-123:1
1147-inf:-123:1
1148+inf:1/23:1
1149-inf:1/23:1
1150+inf:-1/23:1
1151-inf:-1/23:1
1152+inf:12/3:1
1153-inf:12/3:1
1154+inf:-12/3:1
1155-inf:-12/3:1
1156123:inf:-1
1157-123:inf:-1
1158123:-inf:-1
1159-123:-inf:-1
11601/23:inf:-1
1161-1/23:inf:-1
11621/23:-inf:-1
1163-1/23:-inf:-1
116412/3:inf:-1
1165-12/3:inf:-1
116612/3:-inf:-1
1167-12/3:-inf:-1
1168# return undef
1169+inf:NaN:
1170NaN:inf:
1171-inf:NaN:
1172NaN:-inf:
11731/3:2/3:-1
11742/3:1/3:1
11752/3:2/3:0
3cc1ad36 1176
a4e2b1c6
JH
1177&numerator
1178NaN:NaN
1179inf:inf
1180-inf:-inf
11813/7:3
1182-3/7:-3
11830:0
11841:1
12fc2493 11855/-3:-5
3cc1ad36 1186
a4e2b1c6
JH
1187&denominator
1188NaN:NaN
12fc2493
AMS
1189inf:1
1190-inf:1
a4e2b1c6
JH
11913/7:7
11920:1
11931/1:1
12fc2493 1194-1/1:1
a4e2b1c6 1195-3/7:7
12fc2493 11964/-5:5
3cc1ad36 1197
a4e2b1c6
JH
1198&finc
11993/2:5/2
1200-15/6:-3/2
1201NaN:NaN
1202-1/3:2/3
1203-2/7:5/7
3cc1ad36 1204
a4e2b1c6
JH
1205&fdec
120615/6:3/2
1207-3/2:-5/2
12081/3:-2/3
12092/7:-5/7
1210NaN:NaN
3cc1ad36 1211
11c955be
SH
1212&log
1213-1:NaN
12140:-inf
12151:0
121634803:3267955896544848894312057422508991/312500000000000000000000000000000
1217-inf:inf
1218inf:inf
1219NaN:NaN
3cc1ad36 1220
11c955be 1221&exp
3cc1ad36 1222
11c955be 1223&sin
3cc1ad36 1224
11c955be 1225&cos
3cc1ad36 1226
11c955be 1227&atan2
3cc1ad36 1228
11c955be 1229&int
3cc1ad36 1230
11c955be 1231&abs
3cc1ad36 1232
11c955be 1233&sqrt