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
index a031919..b301536 100644 (file)
@@ -3,9 +3,9 @@
 use strict;
 use warnings;
 
-our ($CLASS, $try, $x, $y, $z, $f, @args, $want, $got, $setup, $CALC);
+our ($CLASS, $try, $x, $y, $z, $f, @args, $want, $got, $setup, $LIB);
 
-is($CLASS->config()->{lib}, $CALC);
+is($CLASS->config()->{lib}, $LIB);
 
 $setup = '';
 
@@ -40,8 +40,6 @@ while (<DATA>) {
     } elsif ($f eq "finf") {
         my $a = $args[1] || '';
         $try .= qq| \$x->binf("$a");|;
-    } elsif ($f eq "is_inf") {
-        $try .= qq| \$x->is_inf("$args[1]");|;
     } elsif ($f eq "fone") {
         $try .= qq| \$x->bone("$args[1]");|;
     } elsif ($f eq "fstr") {
@@ -66,8 +64,11 @@ while (<DATA>) {
     } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) {
         $try .= " \$x = $f(\$x);";
         # some is_xxx test function
-    } elsif ($f =~ /^is_(zero|one|pos|neg|negative|positive|odd|even|nan|int)\z/) {
+    } elsif ($f =~ /^is_(zero|pos|neg|negative|positive|odd|even|nan|int)\z/) {
         $try .= " \$x->$f();";
+    } elsif ($f =~ /^is_(one|inf)$/) {
+        $try .= @args == 1 ? qq| \$x->$f();|
+                           : qq| \$x->$f("$args[1]");|;
     } elsif ($f =~ /^(as_number|as_int)\z/) {
         $try .= " \$x->$1();";
     } elsif ($f eq "finc") {
@@ -93,8 +94,6 @@ while (<DATA>) {
         } elsif ($f eq "bacmp") {
             $try .= ' $x->bacmp($y);';
         } elsif ($f eq "bpow") {
-            $try .= ' $x ** $y;';
-        } elsif ($f eq "fpow") {
             $try .= ' $x->bpow($y);';
         } elsif ($f eq "badd") {
             $try .= ' $x + $y;';
@@ -179,6 +178,7 @@ is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_a}|);
 is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_p}|);
 
 __DATA__
+
 &digit
 123:2:1
 1234:0:4
@@ -191,6 +191,7 @@ __DATA__
 1234:-4:4
 0:0:0
 0:1:0
+
 &bmodinv
 # format: number:modulus:result
 # bmodinv Data errors
@@ -211,6 +212,7 @@ inf:5:NaN
 5:inf:NaN
 -inf:5:NaN
 5:-inf:NaN
+
 &as_number
 144/7:20
 12/1:12
@@ -219,6 +221,7 @@ inf:5:NaN
 NaN:NaN
 +inf:inf
 -inf:-inf
+
 &as_int
 144/7:20
 12/1:12
@@ -227,6 +230,7 @@ NaN:NaN
 NaN:NaN
 +inf:inf
 -inf:-inf
+
 &bmodpow
 # format: number:exponent:modulus:result
 # bmodpow Data errors
@@ -249,6 +253,7 @@ abc:5:5:NaN
 8:-1:16:NaN
 inf:5:13:NaN
 5:inf:13:NaN
+
 &bmod
 NaN:1:NaN
 1:NaN:NaN
@@ -268,6 +273,7 @@ NaN:1:NaN
 -7/4:4/28:3/28
 7/4:-4/28:-3/28
 -7/4:-4/28:-1/28
+
 &fsqrt
 1:1
 0:0
@@ -279,10 +285,16 @@ NaN:NaN
 144/4:6
 25/16:5/4
 -3:NaN
+4/9:2/3
+36/49:6/7
+49/121:7/11
+999966000289/99999820000081:999983/9999991
+
 &flog
 NaN:NaN
 0:-inf
 -2:NaN
+
 &blog
 NaN:NaN:NaN
 0:NaN:NaN
@@ -292,10 +304,12 @@ NaN:1:NaN
 0:2:-inf
 0:-2:NaN
 3:-2:NaN
+
 &finf
 1:+:inf
 2:-:-inf
 3:abc:inf
+
 &numify
 0:0
 +1:1
@@ -307,11 +321,13 @@ NaN:1:NaN
 NaN:NaN
 +inf:inf
 -inf:-inf
+
 &fnan
 abc:NaN
 2:NaN
 -2:NaN
 0:NaN
+
 &fone
 2:+:1
 -2:-:-1
@@ -321,6 +337,7 @@ abc:NaN
 -2::1
 abc::1
 2:abc:1
+
 &fsstr
 +inf:inf
 -inf:-inf
@@ -328,6 +345,7 @@ abcfsstr:NaN
 1:1/1
 3/1:3/1
 0.1:1/10
+
 &bnorm
 1:1
 -0:0
@@ -403,6 +421,7 @@ abc:NaN
 1 / 3:1/3
 1/ 3:1/3
 1 /3:1/3
+
 &fneg
 fnegNaN:NaN
 +inf:-inf
@@ -417,6 +436,7 @@ fnegNaN:NaN
 123/7:-123/7
 -123/7:123/7
 123/-7:123/7
+
 &fabs
 fabsNaN:NaN
 +inf:inf
@@ -428,6 +448,7 @@ fabsNaN:NaN
 -123456789:123456789
 +123.456789:123456789/1000000
 -123456.789:123456789/1000
+
 &badd
 abc:abc:NaN
 abc:+0:NaN
@@ -476,6 +497,7 @@ baddNaN:+inf:NaN
 +123456789:-987654321:-864197532
 1/3:1/3:2/3
 2/3:-1/3:1/3
+
 &bsub
 abc:abc:NaN
 abc:+0:NaN
@@ -528,6 +550,7 @@ baddNaN:+inf:NaN
 -2/3:-2/3:0
 0:-123:123
 0:123:-123
+
 &bmul
 abc:abc:NaN
 abc:+0:NaN
@@ -580,6 +603,7 @@ NaNmul:-inf:NaN
 6:120:720
 10:10000:100000
 1/4:1/3:1/12
+
 &bdiv-list
 0:0:NaN,0
 0:1:0,0
@@ -591,6 +615,7 @@ NaNmul:-inf:NaN
 -9:-4:2,-1
 11/7:2/3:2,5/21
 -11/7:2/3:-3,3/7
+
 &bdiv
 $div_scale = 40; $round_mode = "even"
 abc:abc:NaN
@@ -641,24 +666,41 @@ abc:+1:abc:NaN
 1/4:1/3:3/4
 # reset scale for further tests
 $div_scale = 40
+
 &is_nan
 123:0
 abc:1
 NaN:1
 -123:0
+
 &is_inf
-+inf::1
--inf::1
-abc::0
-1::0
-NaN::0
--1::0
-+inf:-:0
+# without sign argument
+abc:0
+NaN:0
++inf:1
+-inf:1
+-1:0
+0:0
+1:0
+# with sign argument "+"
+abc:+:0
+NaN:+:0
 +inf:+:1
--inf:-:1
 -inf:+:0
-+infinity::1
--infinity::1
+-1:+:0
+0:+:0
+1:+:0
+# with sign argument "-"
+abc:-:0
+NaN:-:0
++inf:-:0
+-inf:-:1
+-1:-:0
+0:-:0
+1:-:0
++infinity:1
+-infinity:1
+
 &is_odd
 abc:0
 0:0
@@ -673,6 +715,7 @@ abc:0
 123.45:0
 -123.45:0
 2:0
+
 &is_int
 NaNis_int:0
 0:1
@@ -687,6 +730,7 @@ NaNis_int:0
 -0.002:0
 1/3:0
 3/1:1
+
 &is_even
 abc:0
 0:1
@@ -706,6 +750,7 @@ abc:0
 120:1
 1200:1
 -1200:1
+
 &is_pos
 0:0
 1:1
@@ -714,6 +759,7 @@ abc:0
 NaN:0
 -inf:0
 +inf:1
+
 &is_positive
 0:0
 1:1
@@ -722,6 +768,7 @@ NaN:0
 NaN:0
 -inf:0
 +inf:1
+
 &is_neg
 0:0
 1:0
@@ -730,6 +777,7 @@ NaN:0
 NaN:0
 -inf:1
 +inf:0
+
 &is_negative
 0:0
 1:0
@@ -738,6 +786,7 @@ NaN:0
 NaN:0
 -inf:1
 +inf:0
+
 &parts
 0:0 1
 1:1 1
@@ -749,12 +798,14 @@ NaN:0
 NaNparts:NaN NaN
 +inf:inf inf
 -inf:-inf inf
+
 &length
 123:3
 -123:3
 0:1
 1:1
 12345678901234567890:20
+
 &is_zero
 NaNzero:0
 +inf:0
@@ -766,19 +817,43 @@ NaNzero:0
 1/3:0
 -0/3:1
 5/inf:1
+
 &is_one
-NaNone:0
+# with no sign argument
+invalid:0
+NaN:0
 +inf:0
 -inf:0
+-2:0
+-1:0
 0:0
-2:0
 1:1
--1:0
 -2:0
+# with sign argument "+"
+invalid:+:0
+NaN:+:0
++inf:+:0
+-inf:+:0
+-2:+:0
+-1:+:0
+0:+:0
+1:+:1
+-2:+:0
+# with sign argument "-"
+invalid:-:0
+NaN:-:0
++inf:-:0
+-inf:-:0
+-2:-:0
+-1:-:1
+0:-:0
+1:-:0
+-2:-:0
 1/3:0
 100/100:1
 0.1/0.1:1
 5/inf:0
+
 &ffloor
 0:0
 abc:NaN
@@ -802,6 +877,7 @@ abc:NaN
 -13/7:-2
 -14/7:-2
 -15/7:-3
+
 &fceil
 0:0
 abc:NaN
@@ -823,14 +899,227 @@ abc:NaN
 -13/7:-1
 -14/7:-2
 -15/7:-2
+
 &ffac
 NaN:NaN
 1:1
 -1:NaN
+
 &bpow
-# bpow test for overload of **
+#
+abc:123:NaN
+123:abc:NaN
+#
+-inf:-inf:0
+-inf:-3:0
+-inf:-2:0
+-inf:-3/2:0
+-inf:-1:0
+-inf:-1/2:0
+-inf:0:NaN
+-inf:1/2:inf    # directed infinity
+-inf:1:-inf
+-inf:3/2:inf    # directed infinity
+-inf:2:inf
+-inf:3:-inf
+-inf:inf:inf    # complex infinity
+-inf:NaN:NaN
+#
+-3:-inf:0
+-3:-3:-1/27
+-3:-2:1/9
+-3:-3/2:NaN
+-3:-1:-1/3
+-3:-1/2:NaN
+-3:0:1
+-3:1/2:NaN
+-3:1:-3
+-3:3/2:NaN
+-3:2:9
+-3:3:-27
+-3:inf:inf      # complex infinity
+-3:NaN:NaN
+#
+-2:-inf:0
+-2:-3:-1/8
+-2:-2:1/4
+-2:-3/2:NaN
+-2:-1:-1/2
+-2:-1/2:NaN
+-2:0:1
+-2:1/2:NaN
+-2:1:-2
+-2:3/2:NaN
+-2:2:4
+-2:3:-8
+-2:inf:inf      # complex infinity
+-2:NaN:NaN
+#
+-3/2:-inf:0
+-3/2:-3:-8/27
+-3/2:-2:4/9
+-3/2:-3/2:NaN
+-3/2:-1:-2/3
+-3/2:-1/2:NaN
+-3/2:0:1
+-3/2:1/2:NaN
+-3/2:1:-3/2
+-3/2:3/2:NaN
+-3/2:2:9/4
+-3/2:3:-27/8
+-3/2:inf:inf    # complex infinity
+-3/2:NaN:NaN
+#
+-1:-inf:NaN
+-1:-3:-1
+-1:-2:1
+-1:-3/2:NaN
+-1:-1:-1
+-1:-1/2:NaN
+-1:0:1
+-1:1/2:NaN
+-1:1:-1
+-1:3/2:NaN
+-1:2:1
+-1:3:-1
+-1:inf:NaN
+-1:NaN:NaN
+#
+-1/2:-inf:inf   # complex infinity
+-1/2:-3:-8
+-1/2:-2:4
+-1/2:-3/2:NaN
+-1/2:-1:-2
+-1/2:-1/2:NaN
+-1/2:0:1
+-1/2:1/2:NaN
+-1/2:1:-1/2
+-1/2:3/2:NaN
+-1/2:2:1/4
+-1/2:3:-1/8
+-1/2:inf:0
+-1/2:NaN:NaN
+#
+0:-inf:inf      # complex infinity
+0:-3:inf        # complex infinity
+0:-2:inf        # complex infinity
+0:-3/2:inf      # complex infinity
+0:-1:inf        # complex infinity
+0:-1/2:inf      # complex infinity
+0:0:1
+0:1/2:0
+0:1:0
+0:3/2:0
+0:2:0
+0:3:0
+0:inf:0
+0:NaN:NaN
+#
+1/2:-inf:inf
+1/2:-3:8
+1/2:-2:4
+#1/2:-3/2:2.828427124746190097603377448419396157139
+1/2:-1:2
+#1/2:-1/2:1.41421356237309504880168872420969807857
+1/2:0:1
+#1/2:1/2:0.7071067811865475244008443621048490392848
+1/2:1:1/2
+#1/2:3/2:0.3535533905932737622004221810524245196424
+1/2:2:1/4
+1/2:3:1/8
+1/2:inf:0
+1/2:NaN:NaN
+#
+1:-inf:1
+1:-3:1
+1:-2:1
+1:-3/2:1
+1:-1:1
+1:-1/2:1
+1:0:1
+1:1/2:1
+1:1:1
+1:3/2:1
+1:2:1
+1:3:1
+1:inf:1
+1:NaN:NaN
+#
+3/2:-inf:0
+3/2:-3:8/27
+3/2:-2:4/9
+#3/2:-3/2:0.5443310539518173551549520166013091982147
+3/2:-1:2/3
+#3/2:-1/2:0.816496580927726032732428024901963797322
+3/2:0:1
+#3/2:1/2:1.224744871391589049098642037352945695983
+3/2:1:3/2
+#3/2:3/2:1.837117307087383573647963056029418543974
+3/2:2:9/4
+3/2:3:27/8
+3/2:inf:inf
+3/2:NaN:NaN
+#
+2:-inf:0
+2:-3:1/8
+2:-2:1/4
+#2:-3/2:0.3535533905932737622004221810524245196424
+2:-1:1/2
+#2:-1/2:0.7071067811865475244008443621048490392848
+2:0:1
+#2:1/2:1.41421356237309504880168872420969807857
+2:1:2
+#2:3/2:2.828427124746190097603377448419396157139
 2:2:4
+2:3:8
+2:inf:inf
+2:NaN:NaN
+#
+3:-inf:0
+3:-3:1/27
+3:-2:1/9
+#3:-3/2:0.1924500897298752548363829268339858185492
+3:-1:1/3
+#3:-1/2:0.5773502691896257645091487805019574556476
+3:0:1
+#3:1/2:1.732050807568877293527446341505872366943
+3:1:3
+#3:3/2:5.196152422706631880582339024517617100828
+3:2:9
 3:3:27
+3:inf:inf
+3:NaN:NaN
+#
+inf:-inf:0
+inf:-3:0
+inf:-2:0
+inf:-3/2:0
+inf:-1:0
+inf:-1/2:0
+inf:0:NaN
+inf:1/2:inf
+inf:1:inf
+inf:3/2:inf
+inf:2:inf
+inf:3:inf
+inf:inf:inf
+inf:NaN:NaN
+#
+NaN:-inf:NaN
+NaN:-3:NaN
+NaN:-2:NaN
+NaN:-3/2:NaN
+NaN:-1:NaN
+NaN:-1/2:NaN
+NaN:0:NaN
+NaN:1/2:NaN
+NaN:1:NaN
+NaN:3/2:NaN
+NaN:2:NaN
+NaN:3:NaN
+NaN:inf:NaN
+NaN:NaN:NaN
+
 &bacmp
 +0:-0:0
 +0:+1:-1
@@ -884,19 +1173,7 @@ NaN:-inf:
 1/3:2/3:-1
 2/3:1/3:1
 2/3:2/3:0
-&fpow
-2/1:3/1:8
-3/1:3/1:27
-5/2:3/1:125/8
--2/1:3/1:-8
--3/1:3/1:-27
--5/2:3/1:-125/8
--2/1:4/1:16
--3/1:4/1:81
--5/2:4/1:625/16
--5/2:-4/1:16/625
-1/5:-3:125
--1/5:-3:-125
+
 &numerator
 NaN:NaN
 inf:inf
@@ -906,6 +1183,7 @@ inf:inf
 0:0
 1:1
 5/-3:-5
+
 &denominator
 NaN:NaN
 inf:1
@@ -916,18 +1194,21 @@ inf:1
 -1/1:1
 -3/7:7
 4/-5:5
+
 &finc
 3/2:5/2
 -15/6:-3/2
 NaN:NaN
 -1/3:2/3
 -2/7:5/7
+
 &fdec
 15/6:3/2
 -3/2:-5/2
 1/3:-2/3
 2/7:-5/7
 NaN:NaN
+
 &log
 -1:NaN
 0:-inf
@@ -936,10 +1217,17 @@ NaN:NaN
 -inf:inf
 inf:inf
 NaN:NaN
+
 &exp
+
 &sin
+
 &cos
+
 &atan2
+
 &int
+
 &abs
+
 &sqrt