Multiple consecutive writes on PerlIO::Scalar
[p5sagit/p5-mst-13.2.git] / t / lib / bigfltpm.t
index a8fb192..18bab4f 100755 (executable)
@@ -9,9 +9,9 @@ use Math::BigFloat;
 
 $test = 0;
 $| = 1;
-print "1..362\n";
+print "1..414\n";
 while (<DATA>) {
-       chop;
+       chomp;
        if (s/^&//) {
                $f = $_;
        } elsif (/^\$.*/) {
@@ -33,6 +33,8 @@ while (<DATA>) {
                    $try .= "-\$x;";
                } elsif ($f eq "fabs") {
                    $try .= "abs \$x;";
+               } elsif ($f eq "fint") {
+                   $try .= "int \$x;";
                } elsif ($f eq "fround") {
                    $try .= "0+\$x->fround($args[1]);";
                } elsif ($f eq "ffround") {
@@ -51,6 +53,8 @@ while (<DATA>) {
                        $try .= "\$x * \$y;";
                    } elsif ($f eq "fdiv") {
                        $try .= "\$x / \$y;";
+                   } elsif ($f eq "fmod") {
+                       $try .= "\$x % \$y;";
                    } else { warn "Unknown op"; }
                }
                #print ">>>",$try,"<<<\n";
@@ -65,22 +69,45 @@ while (<DATA>) {
                        print "# '$try' expected: /$pat/ got: '$ans1'\n";
                   }
               }
-               elsif ("$ans1" eq $ans) { #bug!
-                       print "ok $test\n";
-               } else {
-                       print "not ok $test\n";
-                       print "# '$try' expected: '$ans' got: '$ans1'\n";
-               }
+                else {
+
+                       $ans1_str = defined $ans1? "$ans1" : "";
+                       if ($ans1_str eq $ans) { #bug!
+                              print "ok $test\n";
+                      } else {
+                              print "not ok $test\n";
+                              print "# '$try' expected: '$ans' got: '$ans1'\n";
+                      }
+              }
        }
-} 
+}
+
+{
+  use Math::BigFloat ':constant';
+
+  $test++;
+  # print "# " . 2. * '1427247692705959881058285969449495136382746624' . "\n";
+  print "not "
+    unless 2. * '1427247692705959881058285969449495136382746624'
+           == "2854495385411919762116571938898990272765493248.";
+  print "ok $test\n";
+  $test++;
+  @a = ();
+  for ($i = 1.; $i < 10; $i++) {
+    push @a, $i;
+  }
+  print "not " unless "@a" eq "1. 2. 3. 4. 5. 6. 7. 8. 9.";
+  print "ok $test\n";
+}
+
 __END__
 &fnorm
-abc:NaN.
-   1 a:NaN.
-1bcd2:NaN.
-11111b:NaN.
-+1z:NaN.
--1z:NaN.
+abc:NaN
+   1 a:NaN
+1bcd2:NaN
+11111b:NaN
++1z:NaN
+-1z:NaN
 0:0.
 +0:0.
 +00:0.
@@ -98,7 +125,7 @@ abc:NaN.
 -001:-1.
 -123456789:-123456789.
 -00000100000:-100000.
-123.456a:NaN.
+123.456a:NaN
 123.456:123.456
 0.01:.01
 .002:.002
@@ -113,7 +140,7 @@ abc:NaN.
 -3e111:-3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.
 -4e-1111:-.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
 &fneg
-abd:NaN.
+abc:NaN
 +0:0.
 +1:-1.
 -1:1.
@@ -122,7 +149,7 @@ abd:NaN.
 +123.456789:-123.456789
 -123456.789:123456.789
 &fabs
-abc:NaN.
+abc:NaN
 +0:0.
 +1:1.
 -1:1.
@@ -164,15 +191,15 @@ $Math::BigFloat::rnd_mode = 'odd'
 -50123456789:5:-50123000000
 +50123456789:9:50123456800
 -50123456789:9:-50123456800
-+501234500:6:501234000
--501234500:6:-501234000
++501234500:6:501235000
+-501234500:6:-501235000
 $Math::BigFloat::rnd_mode = 'even'
 +60123456789:5:60123000000
 -60123456789:5:-60123000000
 +60123456789:9:60123456800
 -60123456789:9:-60123456800
-+601234500:6:601235000
--601234500:6:-601235000
++601234500:6:601234000
+-601234500:6:-601234000
 &ffround
 $Math::BigFloat::rnd_mode = 'trunc'
 +1.23:-1:1.2
@@ -235,13 +262,13 @@ $Math::BigFloat::rnd_mode = 'odd'
 -5.23:-1:/-5.2(?:0{5}\d+)?
 +5.27:-1:/5.(?:3|29{5}\d+)
 -5.27:-1:/-5.(?:3|29{5}\d+)
-+5.25:-1:/5.(?:2|29{5}\d+)
--5.25:-1:/-5.(?:2|29{5}\d+)
-+5.35:-1:/5.(?:4|29{5}\d+)
--5.35:-1:/-5.(?:4|29{5}\d+)
++5.25:-1:/5.(?:3|29{5}\d+)
+-5.25:-1:/-5.(?:3|29{5}\d+)
++5.35:-1:/5.(?:3|29{5}\d+)
+-5.35:-1:/-5.(?:3|29{5}\d+)
 -0.0065:-1:0
 -0.0065:-2:/-0\.01|-1e-02
--0.0065:-3:/-0\.006|-6e-03
+-0.0065:-3:/-0\.007|-7e-03
 -0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
 -0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
 $Math::BigFloat::rnd_mode = 'even'
@@ -249,13 +276,13 @@ $Math::BigFloat::rnd_mode = 'even'
 -6.23:-1:/-6.2(?:0{5}\d+)?
 +6.27:-1:/6.(?:3|29{5}\d+)
 -6.27:-1:/-6.(?:3|29{5}\d+)
-+6.25:-1:/6.(?:3(?:0{5}\d+)?|29{5}\d+)
--6.25:-1:/-6.(?:3(?:0{5}\d+)?|29{5}\d+)
-+6.35:-1:/6.(?:3|39{5}\d+|29{8}\d+)
--6.35:-1:/-6.(?:3|39{5}\d+|29{8}\d+)
++6.25:-1:/6.(?:2(?:0{5}\d+)?|29{5}\d+)
+-6.25:-1:/-6.(?:2(?:0{5}\d+)?|29{5}\d+)
++6.35:-1:/6.(?:4|39{5}\d+|29{8}\d+)
+-6.35:-1:/-6.(?:4|39{5}\d+|29{8}\d+)
 -0.0065:-1:0
 -0.0065:-2:/-0\.01|-1e-02
--0.0065:-3:/-0\.007|-7e-03
+-0.0065:-3:/-0\.006|-7e-03
 -0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
 -0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
 &fcmp
@@ -286,9 +313,9 @@ abc:+0:
 -123:-124:1
 -124:-123:-1
 &fadd
-abc:abc:NaN.
-abc:+0:NaN.
-+0:abc:NaN.
+abc:abc:NaN
+abc:+0:NaN
++0:abc:NaN
 +0:+0:0.
 +1:+0:1.
 +0:+1:1.
@@ -324,9 +351,9 @@ abc:+0:NaN.
 -123456789:-987654321:-1111111110.
 +123456789:-987654321:-864197532.
 &fsub
-abc:abc:NaN.
-abc:+0:NaN.
-+0:abc:NaN.
+abc:abc:NaN
+abc:+0:NaN
++0:abc:NaN
 +0:+0:0.
 +1:+0:1.
 +0:+1:-1.
@@ -362,9 +389,9 @@ abc:+0:NaN.
 -123456789:-987654321:864197532.
 +123456789:-987654321:1111111110.
 &fmul
-abc:abc:NaN.
-abc:+0:NaN.
-+0:abc:NaN.
+abc:abc:NaN
+abc:+0:NaN
++0:abc:NaN
 +0:+0:0.
 +0:+1:0.
 +1:+0:0.
@@ -395,14 +422,14 @@ abc:+0:NaN.
 +88888888888:+9:799999999992.
 +99999999999:+9:899999999991.
 &fdiv
-abc:abc:NaN.
-abc:+1:abc:NaN.
-+1:abc:NaN.
-+0:+0:NaN.
+abc:abc:NaN
+abc:+1:abc:NaN
++1:abc:NaN
++0:+0:NaN
 +0:+1:0.
-+1:+0:NaN.
++1:+0:NaN
 +0:-1:0.
--1:+0:NaN.
+-1:+0:NaN
 +1:+1:1.
 -1:-1:1.
 +1:-1:-1.
@@ -449,10 +476,10 @@ $Math::BigFloat::div_scale = 20
 $Math::BigFloat::div_scale = 40
 &fsqrt
 +0:0
--1:/^(?i:0|\?|NaNQ?|-n\.an)$
--2:/^(?i:0|\?|NaNQ?|-n\.an)$
--16:/^(?i:0|\?|NaNQ?|-n\.an)$
--123.456:/^(?i:0|\?|NaNQ?|-n\.an)$
+-1:/^(?i:0|\?|NaNQ?)$
+-2:/^(?i:0|\?|NaNQ?)$
+-16:/^(?i:0|\?|NaNQ?)$
+-123.456:/^(?i:0|\?|NaNQ?)$
 +1:1.
 +1.44:1.2
 +2:1.41421356237309504880168872420969807857
@@ -461,3 +488,55 @@ $Math::BigFloat::div_scale = 40
 +100:10.
 +123.456:11.11107555549866648462149404118219234119
 +15241.383936:123.456
+&fint
++0:+0
++1:+1
++11111111111111111234:+11111111111111111234
+-1:-1
+-11111111111111111234:-11111111111111111234
++0.3:+0
++1.3:+1
++23.3:+23
++12345678901234567890:+12345678901234567890
++12345678901234567.890:+12345678901234567
++12345678901234567890E13:+123456789012345678900000000000000
++12345678901234567.890E13:+123456789012345678900000000000
++12345678901234567890E-3:+12345678901234567
++12345678901234567.890E-3:+12345678901234
++12345678901234567890E-13:+1234567
++12345678901234567.890E-13:+1234
++12345678901234567890E-17:+123
++12345678901234567.890E-16:+1
++12345678901234567.890E-17:+0
++12345678901234567890E-19:+1
++12345678901234567890E-20:+0
++12345678901234567890E-21:+0
++12345678901234567890E-225:+0
+-0:+0
+-0.3:+0
+-1.3:-1
+-23.3:-23
+-12345678901234567890:-12345678901234567890
+-12345678901234567.890:-12345678901234567
+-12345678901234567890E13:-123456789012345678900000000000000
+-12345678901234567.890E13:-123456789012345678900000000000
+-12345678901234567890E-3:-12345678901234567
+-12345678901234567.890E-3:-12345678901234
+-12345678901234567890E-13:-1234567
+-12345678901234567.890E-13:-1234
+-12345678901234567890E-17:-123
+-12345678901234567.890E-16:-1
+-12345678901234567.890E-17:+0
+-12345678901234567890E-19:-1
+-12345678901234567890E-20:+0
+-12345678901234567890E-21:+0
+-12345678901234567890E-225:+0
+&fmod
++0:0:NaN
++0:1:0.
++3:1:0.
++5:2:1.
++9:4:1.
++9:5:4.
++9000:56:40.
++56:9000:56.