This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Math::BigRat from version 0.25 to 0.26
[perl5.git] / cpan / Math-BigRat / t / bigratpm.inc
CommitLineData
184f15d5
JH
1#include this file into another test for subclass testing...
2
c32198f6 3is ($class->config()->{lib},$CL);
184f15d5 4
990fb837
RGS
5$setup = '';
6
184f15d5
JH
7while (<DATA>)
8 {
a4e2b1c6 9 chomp;
184f15d5
JH
10 $_ =~ s/#.*$//; # remove comments
11 $_ =~ s/\s+$//; # trailing spaces
12 next if /^$/; # skip empty lines & comments
13 if (s/^&//)
14 {
15 $f = $_;
16 }
17 elsif (/^\$/)
18 {
19 $setup = $_; $setup =~ s/\$/\$${class}::/g; # round_mode, div_scale
20 #print "\$setup== $setup\n";
21 }
22 else
23 {
24 if (m|^(.*?):(/.+)$|)
25 {
26 $ans = $2;
27 @args = split(/:/,$1,99);
28 }
29 else
30 {
31 @args = split(/:/,$_,99); $ans = pop(@args);
32 }
33 $try = "\$x = new $class \"$args[0]\";";
34 if ($f eq "bnorm")
35 {
36 $try .= "\$x;";
37 } elsif ($f eq "finf") {
990fb837
RGS
38 my $a = $args[1] || '';
39 $try .= "\$x->binf('$a');";
184f15d5
JH
40 } elsif ($f eq "is_inf") {
41 $try .= "\$x->is_inf('$args[1]');";
42 } elsif ($f eq "fone") {
43 $try .= "\$x->bone('$args[1]');";
44 } elsif ($f eq "fstr") {
45 $try .= "\$x->accuracy($args[1]); \$x->precision($args[2]);";
46 $try .= '$x->bstr();';
47 } elsif ($f eq "parts") {
48 # ->bstr() to see if an object is returned
49 $try .= '($a,$b) = $x->parts(); $a = $a->bstr(); $b = $b->bstr();';
50 $try .= '"$a $b";';
51 } elsif ($f eq "numerator") {
52 # ->bstr() to see if an object is returned
53 $try .= '$x->numerator()->bstr();';
54 } elsif ($f eq "denominator") {
55 # ->bstr() to see if an object is returned
56 $try .= '$x->denominator()->bstr();';
7d341013
T
57 } elsif ($f =~ /^(length|numify)$/) {
58 $try .= "\$x->$f();";
59 # some unary ops (can't test the fxxx form, since no AUTOLOAD in BigRat)
184f15d5
JH
60 } elsif ($f =~ /^f(nan|sstr|neg|floor|ceil|abs)$/) {
61 $try .= "\$x->b$1();";
62 # some is_xxx test function
b68b7ab1 63 } elsif ($f =~ /^is_(zero|one|pos|neg|negative|positive|odd|even|nan|int)\z/) {
184f15d5 64 $try .= "\$x->$f();";
b68b7ab1
T
65 } elsif ($f =~ /^(as_number|as_int)\z/){
66 $try .= "\$x->$1();";
184f15d5
JH
67 } elsif ($f eq "finc") {
68 $try .= '++$x;';
69 } elsif ($f eq "fdec") {
70 $try .= '--$x;';
12fc2493
AMS
71 } elsif ($f eq "digit") {
72 $try .= "\$x->digit($args[1]);";
73 } elsif ($f eq "fround") {
184f15d5
JH
74 $try .= "$setup; \$x->bround($args[1]);";
75 } elsif ($f eq "ffround") {
76 $try .= "$setup; \$x->bfround($args[1]);";
77 } elsif ($f eq "fsqrt") {
78 $try .= "$setup; \$x->bsqrt();";
79 } elsif ($f eq "flog") {
80 $try .= "$setup; \$x->blog();";
81 } elsif ($f eq "ffac") {
82 $try .= "$setup; \$x->bfac();";
83 }
84 else
85 {
86 $try .= "\$y = new $class \"$args[1]\";";
7afd7a91 87 if ($f eq "bcmp") {
184f15d5 88 $try .= '$x <=> $y;';
7afd7a91 89 } elsif ($f eq "bacmp") {
184f15d5
JH
90 $try .= '$x->bacmp($y);';
91 } elsif ($f eq "bpow") {
92 $try .= '$x ** $y;';
a4e2b1c6
JH
93 } elsif ($f eq "fpow") {
94 $try .= '$x->bpow($y);';
184f15d5
JH
95 } elsif ($f eq "badd") {
96 $try .= '$x + $y;';
97 } elsif ($f eq "bsub") {
98 $try .= '$x - $y;';
99 } elsif ($f eq "bmul") {
100 $try .= '$x * $y;';
101 } elsif ($f eq "bdiv") {
102 $try .= "$setup; \$x / \$y;";
103 } elsif ($f eq "fdiv-list") {
104 $try .= "$setup; join(',',\$x->bdiv(\$y));";
105 } elsif ($f eq "brsft") {
106 $try .= '$x >> $y;';
107 } elsif ($f eq "blsft") {
108 $try .= '$x << $y;';
109 } elsif ($f eq "bmod") {
110 $try .= '$x % $y;';
7afd7a91
T
111 } elsif( $f eq "bmodinv") {
112 $try .= "\$x->bmodinv(\$y);";
113 } elsif( $f eq "blog") {
114 $try .= "\$x->blog(\$y);";
115 } else {
116 $try .= "\$z = $class->new(\"$args[2]\");";
117
118 # Functions with three arguments
119 if( $f eq "bmodpow") {
120 $try .= "\$x->bmodpow(\$y,\$z);";
121 } else { warn "Unknown op '$f'"; }
122 }
184f15d5
JH
123 }
124 # print "# Trying: '$try'\n";
125 $ans1 = eval $try;
126 if ($ans =~ m|^/(.*)$|)
127 {
128 my $pat = $1;
c32198f6 129 like ($ans1, qr/$pat/);
184f15d5
JH
130 }
131 else
132 {
133 if ($ans eq "")
134 {
c32198f6 135 is ($ans1, undef);
184f15d5
JH
136 }
137 else
138 {
c32198f6 139 is ($ans1, $ans) or diag("Tried: '$try'");
184f15d5
JH
140# if (ref($ans1) eq "$class")
141# {
142# # float numbers are normalized (for now), so mantissa shouldn't have
143# # trailing zeros
144# #print $ans1->_trailing_zeros(),"\n";
145# print "# Has trailing zeros after '$try'\n"
c32198f6 146# if !is ($ans1->{_m}->_trailing_zeros(), 0);
184f15d5
JH
147# }
148 }
149 } # end pattern or string
150 }
151 } # end while
152
153# check whether $class->new( Math::BigInt->new()) destroys it
154# ($y == 12 in this case)
155$x = Math::BigInt->new(1200); $y = $class->new($x);
c32198f6 156is ($y,1200); is ($x,1200);
184f15d5
JH
157
158###############################################################################
159# zero,inf,one,nan
160
c32198f6
FR
161$x = $class->new(2); $x->bzero(); is ($x->{_a}, undef); is ($x->{_p}, undef);
162$x = $class->new(2); $x->binf(); is ($x->{_a}, undef); is ($x->{_p}, undef);
163$x = $class->new(2); $x->bone(); is ($x->{_a}, undef); is ($x->{_p}, undef);
164$x = $class->new(2); $x->bnan(); is ($x->{_a}, undef); is ($x->{_p}, undef);
184f15d5
JH
165
166__DATA__
12fc2493
AMS
167&digit
168123:2:1
1691234:0:4
1701234:1:3
1711234:2:2
1721234:3:1
1731234:-1:1
1741234:-2:2
1751234:-3:3
1761234:-4:4
1770:0:0
1780:1:0
7afd7a91
T
179&bmodinv
180# format: number:modulus:result
181# bmodinv Data errors
182abc:abc:NaN
183abc:5:NaN
1845:abc:NaN
185# bmodinv Expected Results from normal use
1861:5:1
1873:5:2
188-2:5:2
1898:5033:4404
1901234567891:13:6
191-1234567891:13:7
192324958749843759385732954874325984357439658735983745:2348249874968739:1741662881064902
193## bmodinv Error cases / useless use of function
1943:-5:NaN
195inf:5:NaN
1965:inf:NaN
197-inf:5:NaN
1985:-inf:NaN
990fb837
RGS
199&as_number
200144/7:20
b68b7ab1
T
20112/1:12
202-12/1:-12
203-12/3:-4
204NaN:NaN
205+inf:inf
206-inf:-inf
207&as_int
208144/7:20
20912/1:12
210-12/1:-12
211-12/3:-4
990fb837
RGS
212NaN:NaN
213+inf:inf
214-inf:-inf
7afd7a91
T
215&bmodpow
216# format: number:exponent:modulus:result
217# bmodpow Data errors
218abc:abc:abc:NaN
2195:abc:abc:NaN
220abc:5:abc:NaN
221abc:abc:5:NaN
2225:5:abc:NaN
2235:abc:5:NaN
224abc:5:5:NaN
225# bmodpow Expected results
2260:0:2:1
2271:0:2:1
2280:0:1:0
2298:7:5032:3840
2308:-1:5033:4404
23198436739867439843769485798542749827593285729587325:43698764986460981048259837659386739857456983759328457:6943857329857295827698367:3104744730915914415259518
232# bmodpow Error cases
2338:8:-5:NaN
2348:-1:16:NaN
235inf:5:13:NaN
2365:inf:13:NaN
990fb837
RGS
237&bmod
238NaN:1:NaN
2391:NaN:NaN
2401:1:0
2412:2:0
24212:6:0
2437/4:4/14:1/28
2447/4:4/16:0
245-7/4:4/16:0
246-7/4:-4/16:0
2477/4:-4/16:0
2487/4:4/32:0
249-7/4:4/32:0
250-7/4:-4/32:0
2517/4:-4/32:0
2527/4:4/28:1/28
253-7/4:4/28:-1/28
2547/4:-4/28:1/28
255-7/4:-4/28:-1/28
256&fsqrt
2571:1
2580:0
259NaN:NaN
260+inf:inf
261-inf:NaN
262144:12
263# sqrt(144) / sqrt(4) = 12/2 = 6/1
264144/4:6
26525/16:5/4
266-3:NaN
267&flog
268NaN:NaN
2690:NaN
7afd7a91
T
270-2:NaN
271&blog
272NaN:NaN:NaN
2730:NaN:NaN
274NaN:0:NaN
275NaN:1:NaN
2761:NaN:NaN
2770:2:NaN
2780:-2:NaN
2793:-2:NaN
184f15d5
JH
280&finf
2811:+:inf
2822:-:-inf
2833:abc:inf
990fb837 284&numify
93c87d9d
T
2850:0
286+1:1
2871234:1234
2883/4:0.75
2895/2:2.5
2903/2:1.5
2915/4:1.25
990fb837 292NaN:NaN
93c87d9d
T
293+inf:inf
294-inf:-inf
184f15d5
JH
295&fnan
296abc:NaN
2972:NaN
298-2:NaN
2990:NaN
300&fone
3012:+:1
302-2:-:-1
303-2:+:1
3042:-:-1
3050::1
306-2::1
307abc::1
3082:abc:1
309&fsstr
310+inf:inf
311-inf:-inf
312abcfsstr:NaN
3131:1/1
3143/1:3/1
3150.1:1/10
316&bnorm
3171:1
318-0:0
319bnormNaN:NaN
320+inf:inf
321-inf:-inf
7afd7a91
T
322inf/inf:NaN
3235/inf:0
3245/-inf:0
325inf/5:inf
326-inf/5:-inf
327inf/-5:-inf
328-inf/-5:inf
184f15d5
JH
329123:123
330-123.4567:-1234567/10000
331# invalid inputs
3321__2:NaN
3331E1__2:NaN
33411__2E2:NaN
335#1.E3:NaN
336.2E-3.:NaN
337#1e3e4:NaN
338.2E2:20
339inf:inf
340+inf:inf
341-inf:-inf
342+infinity:NaN
343+-inf:NaN
344abc:NaN
345 1 a:NaN
3461bcd2:NaN
34711111b:NaN
348+1z:NaN
349-1z:NaN
3500:0
351+0:0
352+00:0
353+0_0_0:0
354000000_0000000_00000:0
355-0:0
356-0000:0
357+1:1
358+01:1
359+001:1
360+00000100000:100000
12fc2493
AMS
361+00000800/00000010:80
362-00000800/00000010:-80
363+00000800/-00000010:-80
364-00000800/-00000010:80
184f15d5
JH
365123456789:123456789
366-1:-1
367-01:-1
368-001:-1
369-123456789:-123456789
370-00000100000:-100000
371123.456a:NaN
372123.456:15432/125
3730.01:1/100
374.002:1/500
375+.2:1/5
376-0.0003:-3/10000
377-.0000000004:-1/2500000000
378123456E2:12345600
379123456E-2:30864/25
380-123456E2:-12345600
381-123456E-2:-30864/25
3821e1:10
3832e-11:1/50000000000
38412/10:6/5
3850.1/0.1:1
386100/0.1:1000
3870.1/10:1/100
3881 / 3:1/3
3891/ 3:1/3
3901 /3:1/3
391&fneg
392fnegNaN:NaN
393+inf:-inf
394-inf:inf
395+0:0
396+1:-1
397-1:1
398+123456789:-123456789
399-123456789:123456789
400+123.456789:-123456789/1000000
401-123456.789:123456789/1000
b68b7ab1
T
402123/7:-123/7
403-123/7:123/7
404123/-7:123/7
184f15d5
JH
405&fabs
406fabsNaN:NaN
407+inf:inf
408-inf:inf
409+0:0
410+1:1
411-1:1
412+123456789:123456789
413-123456789:123456789
414+123.456789:123456789/1000000
415-123456.789:123456789/1000
416&badd
417abc:abc:NaN
418abc:+0:NaN
419+0:abc:NaN
420+inf:-inf:NaN
421-inf:+inf:NaN
422+inf:+inf:inf
423-inf:-inf:-inf
424baddNaN:+inf:NaN
425baddNaN:+inf:NaN
426+inf:baddNaN:NaN
427-inf:baddNaN:NaN
428+0:+0:0
429+1:+0:1
430+0:+1:1
431+1:+1:2
432-1:+0:-1
433+0:-1:-1
434-1:-1:-2
435-1:+1:0
436+1:-1:0
437+9:+1:10
438+99:+1:100
439+999:+1:1000
440+9999:+1:10000
441+99999:+1:100000
442+999999:+1:1000000
443+9999999:+1:10000000
444+99999999:+1:100000000
445+999999999:+1:1000000000
446+9999999999:+1:10000000000
447+99999999999:+1:100000000000
448+10:-1:9
449+100:-1:99
450+1000:-1:999
451+10000:-1:9999
452+100000:-1:99999
453+1000000:-1:999999
454+10000000:-1:9999999
455+100000000:-1:99999999
456+1000000000:-1:999999999
457+10000000000:-1:9999999999
458+123456789:+987654321:1111111110
459-123456789:+987654321:864197532
460-123456789:-987654321:-1111111110
461+123456789:-987654321:-864197532
4621/3:1/3:2/3
4632/3:-1/3:1/3
464&bsub
465abc:abc:NaN
466abc:+0:NaN
467+0:abc:NaN
468+inf:-inf:inf
469-inf:+inf:-inf
470+inf:+inf:NaN
471-inf:-inf:NaN
472baddNaN:+inf:NaN
473baddNaN:+inf:NaN
474+inf:baddNaN:NaN
475-inf:baddNaN:NaN
476+0:+0:0
477+1:+0:1
478+0:+1:-1
479+1:+1:0
480-1:+0:-1
481+0:-1:1
482-1:-1:0
483-1:+1:-2
484+1:-1:2
485+9:+1:8
486+99:+1:98
487+999:+1:998
488+9999:+1:9998
489+99999:+1:99998
490+999999:+1:999998
491+9999999:+1:9999998
492+99999999:+1:99999998
493+999999999:+1:999999998
494+9999999999:+1:9999999998
495+99999999999:+1:99999999998
496+10:-1:11
497+100:-1:101
498+1000:-1:1001
499+10000:-1:10001
500+100000:-1:100001
501+1000000:-1:1000001
502+10000000:-1:10000001
503+100000000:-1:100000001
504+1000000000:-1:1000000001
505+10000000000:-1:10000000001
506+123456789:+987654321:-864197532
507-123456789:+987654321:-1111111110
508-123456789:-987654321:864197532
509+123456789:-987654321:1111111110
5102/3:1/3:1/3
5117/27:3/54:11/54
512-2/3:+2/3:-4/3
513-2/3:-2/3:0
7afd7a91
T
5140:-123:123
5150:123:-123
184f15d5
JH
516&bmul
517abc:abc:NaN
518abc:+0:NaN
519+0:abc:NaN
520+inf:NaNmul:NaN
521+inf:NaNmul:NaN
522NaNmul:+inf:NaN
523NaNmul:-inf:NaN
524+inf:+inf:inf
525+inf:-inf:-inf
526+inf:-inf:-inf
527+inf:+inf:inf
528+inf:123.34:inf
529+inf:-123.34:-inf
530-inf:123.34:-inf
531-inf:-123.34:inf
532123.34:+inf:inf
533-123.34:+inf:-inf
534123.34:-inf:-inf
535-123.34:-inf:inf
536+0:+0:0
537+0:+1:0
538+1:+0:0
539+0:-1:0
540-1:+0:0
541+123456789123456789:+0:0
542+0:+123456789123456789:0
543-1:-1:1
544-1:+1:-1
545+1:-1:-1
546+1:+1:1
547+2:+3:6
548-2:+3:-6
549+2:-3:-6
550-2:-3:6
551+111:+111:12321
552+10101:+10101:102030201
553+1001001:+1001001:1002003002001
554+100010001:+100010001:10002000300020001
555+10000100001:+10000100001:100002000030000200001
556+11111111111:+9:99999999999
557+22222222222:+9:199999999998
558+33333333333:+9:299999999997
559+44444444444:+9:399999999996
560+55555555555:+9:499999999995
561+66666666666:+9:599999999994
562+77777777777:+9:699999999993
563+88888888888:+9:799999999992
564+99999999999:+9:899999999991
5656:120:720
56610:10000:100000
5671/4:1/3:1/12
568&bdiv
569$div_scale = 40; $round_mode = 'even'
570abc:abc:NaN
571abc:+1:abc:NaN
572+1:abc:NaN
573-1:abc:NaN
5740:abc:NaN
575+0:+0:NaN
576+0:+1:0
577+1:+0:inf
578+3214:+0:inf
579+0:-1:0
580-1:+0:-inf
581-3214:+0:-inf
582+1:+1:1
583-1:-1:1
584+1:-1:-1
585-1:+1:-1
586+1:+2:1/2
587+2:+1:2
588123:+inf:0
589123:-inf:0
590+10:+5:2
591+100:+4:25
592+1000:+8:125
593+10000:+16:625
594+10000:-16:-625
595+999999999999:+9:111111111111
596+999999999999:+99:10101010101
597+999999999999:+999:1001001001
598+999999999999:+9999:100010001
599+999999999999999:+99999:10000100001
600+1000000000:+9:1000000000/9
601+2000000000:+9:2000000000/9
602+3000000000:+9:1000000000/3
603+4000000000:+9:4000000000/9
604+5000000000:+9:5000000000/9
605+6000000000:+9:2000000000/3
606+7000000000:+9:7000000000/9
607+8000000000:+9:8000000000/9
608+9000000000:+9:1000000000
609+35500000:+113:35500000/113
610+71000000:+226:35500000/113
611+106500000:+339:35500000/113
612+1000000000:+3:1000000000/3
6132:25.024996000799840031993601279744051189762:1000000000000000000000000000000000000000/12512498000399920015996800639872025594881
614123456:1:123456
6151/4:1/3:3/4
616# reset scale for further tests
617$div_scale = 40
618&is_nan
619123:0
620abc:1
621NaN:1
622-123:0
623&is_inf
624+inf::1
625-inf::1
626abc::0
6271::0
628NaN::0
629-1::0
630+inf:-:0
631+inf:+:1
632-inf:-:1
633-inf:+:0
634# it must be exactly /^[+-]inf$/
635+infinity::0
636-infinity::0
637&is_odd
638abc:0
6390:0
640-1:1
641-3:1
6421:1
6433:1
6441000001:1
6451000002:0
646+inf:0
647-inf:0
648123.45:0
649-123.45:0
6502:0
651&is_int
652NaNis_int:0
6530:1
6541:1
6552:1
656-2:1
657-1:1
658-inf:0
659+inf:0
660123.4567:0
661-0.1:0
662-0.002:0
6631/3:0
6643/1:1
665&is_even
666abc:0
6670:1
668-1:0
669-3:0
6701:0
6713:0
6721000001:0
6731000002:1
6742:1
675+inf:0
676-inf:0
677123.456:0
678-123.456:0
6790.01:0
680-0.01:0
681120:1
6821200:1
683-1200:1
b68b7ab1
T
684&is_pos
6850:0
6861:1
687-1:0
688-123:0
689NaN:0
690-inf:0
691+inf:1
184f15d5 692&is_positive
b68b7ab1 6930:0
184f15d5
JH
6941:1
695-1:0
696-123:0
697NaN:0
698-inf:0
699+inf:1
b68b7ab1
T
700&is_neg
7010:0
7021:0
703-1:1
704-123:1
705NaN:0
706-inf:1
707+inf:0
184f15d5
JH
708&is_negative
7090:0
7101:0
711-1:1
712-123:1
713NaN:0
714-inf:1
715+inf:0
a4e2b1c6
JH
716&parts
7170:0 1
7181:1 1
719123:123 1
720-123:-123 1
721-1200:-1200 1
7225/7:5 7
723-5/7:-5 7
724NaNparts:NaN NaN
725+inf:inf inf
726-inf:-inf inf
12fc2493
AMS
727&length
728123:3
729-123:3
7300:1
7311:1
73212345678901234567890:20
184f15d5
JH
733&is_zero
734NaNzero:0
735+inf:0
736-inf:0
7370:1
738-1:0
7391:0
7400/3:1
7411/3:0
7afd7a91
T
742-0/3:1
7435/inf:1
184f15d5
JH
744&is_one
745NaNone:0
746+inf:0
747-inf:0
7480:0
7492:0
7501:1
751-1:0
752-2:0
7531/3:0
754100/100:1
7550.1/0.1:1
7afd7a91 7565/inf:0
184f15d5
JH
757&ffloor
7580:0
759abc:NaN
760+inf:inf
761-inf:-inf
7621:1
763-51:-51
764-51.2:-52
76512.2:12
a4e2b1c6
JH
7663/7:0
7676/7:0
7687/7:1
7698/7:1
77013/7:1
77114/7:2
77215/7:2
773-3/7:-1
774-6/7:-1
775-7/1:-7
776-8/7:-2
777-13/7:-2
778-14/7:-2
779-15/7:-3
184f15d5
JH
780&fceil
7810:0
782abc:NaN
783+inf:inf
784-inf:-inf
7851:1
786-51:-51
787-51.2:-51
78812.2:13
a4e2b1c6
JH
7893/7:1
7906/7:1
7918/7:2
79213/7:2
79314/7:2
79415/7:3
795-3/7:0
796-6/7:0
797-8/7:-1
798-13/7:-1
799-14/7:-2
800-15/7:-2
801&ffac
802NaN:NaN
8031:1
804-1:NaN
805&bpow
806# bpow test for overload of **
8072:2:4
8083:3:27
7afd7a91
T
809&bacmp
810+0:-0:0
811+0:+1:-1
812-1:+1:0
813+1:-1:0
814-1:+2:-1
815+2:-1:1
816-123456789:+987654321:-1
817+123456789:-987654321:-1
818+987654321:+123456789:1
819-987654321:+123456789:1
820-123:+4567889:-1
821# NaNs
822acmpNaN:123:
823123:acmpNaN:
824acmpNaN:acmpNaN:
825# infinity
826+inf:+inf:0
827-inf:-inf:0
828+inf:-inf:0
829-inf:+inf:0
830+inf:123:1
831-inf:123:1
832+inf:-123:1
833-inf:-123:1
834+inf:1/23:1
835-inf:1/23:1
836+inf:-1/23:1
837-inf:-1/23:1
838+inf:12/3:1
839-inf:12/3:1
840+inf:-12/3:1
841-inf:-12/3:1
842123:inf:-1
843-123:inf:-1
844123:-inf:-1
845-123:-inf:-1
8461/23:inf:-1
847-1/23:inf:-1
8481/23:-inf:-1
849-1/23:-inf:-1
85012/3:inf:-1
851-12/3:inf:-1
85212/3:-inf:-1
853-12/3:-inf:-1
854# return undef
855+inf:NaN:
856NaN:inf:
857-inf:NaN:
858NaN:-inf:
8591/3:2/3:-1
8602/3:1/3:1
8612/3:2/3:0
a4e2b1c6
JH
862&fpow
8632/1:3/1:8
8643/1:3/1:27
8655/2:3/1:125/8
866-2/1:3/1:-8
867-3/1:3/1:-27
868-5/2:3/1:-125/8
869-2/1:4/1:16
870-3/1:4/1:81
871-5/2:4/1:625/16
872-5/2:-4/1:16/625
8731/5:-3:125
874-1/5:-3:-125
875&numerator
876NaN:NaN
877inf:inf
878-inf:-inf
8793/7:3
880-3/7:-3
8810:0
8821:1
12fc2493 8835/-3:-5
a4e2b1c6
JH
884&denominator
885NaN:NaN
12fc2493
AMS
886inf:1
887-inf:1
a4e2b1c6
JH
8883/7:7
8890:1
8901/1:1
12fc2493 891-1/1:1
a4e2b1c6 892-3/7:7
12fc2493 8934/-5:5
a4e2b1c6
JH
894&finc
8953/2:5/2
896-15/6:-3/2
897NaN:NaN
898-1/3:2/3
899-2/7:5/7
900&fdec
90115/6:3/2
902-3/2:-5/2
9031/3:-2/3
9042/7:-5/7
905NaN:NaN