This is an automated email from the git hooks/post-receive script.

ppm-guest pushed a commit to annotated tag v0.29
in repository libmath-prime-util-perl.

commit 7b239a7ebacbf0dfbc6782050eb6c6f486a0ec93
Author: Dana Jacobsen <d...@acm.org>
Date:   Wed May 29 22:36:45 2013 -0700

    Fixes for 5.6 (sigh)
---
 lib/Math/Prime/Util/PP.pm | 17 ++++++++++-------
 t/81-bignum.t             |  1 +
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/lib/Math/Prime/Util/PP.pm b/lib/Math/Prime/Util/PP.pm
index c28e983..adcddf6 100644
--- a/lib/Math/Prime/Util/PP.pm
+++ b/lib/Math/Prime/Util/PP.pm
@@ -83,13 +83,13 @@ sub _validate_positive_integer {
   croak "Parameter '$n' must be <= $max" if defined $max && $n > $max;
   if (ref($_[0])) {
     $_[0] = Math::BigInt->new("$_[0]") unless ref($_[0]) eq 'Math::BigInt';
-    # Stupid workaround for Math::BigInt::GMP RT # 71548
+    # Workarounds for Math::BigInt::GMP RT # 71548 and Perl 5.6
     if ($_[0]->bacmp(''.~0) <= 0) {
-      $_[0] = int($_[0]->bstr);
-      croak "Didn't convert!" if ref($_[0]);
-    } else {
-      $_[0]->upgrade(undef) if $_[0]->upgrade();  # Stop BigFloat upgrade
+      my $intn = int($_[0]->bstr);
+      $_[0] = $intn if $_[0]->bcmp("$intn") == 0;
     }
+    # Stop BigFloat upgrade
+    $_[0]->upgrade(undef) if ref($_[0]) && $_[0]->upgrade();
   } else {
     if ($n > ~0) {
       croak "Parameter '$n' outside of integer range" if !defined 
$bigint::VERSION;
@@ -950,8 +950,11 @@ sub is_strong_lucas_pseudoprime {
   #   my $d=$m->copy; my $s=0; while ($d->is_even) { $s++; $d->brsft(1); }
   #   die "Invalid $m, $d, $s\n" unless $m == $d * 2**$s;
   my $dstr = substr($m->as_bin, 2);
-  $dstr =~ s/(0*)$// unless $doweak;
-  my $s = length($1);
+  my $s = 0;
+  if (!$doweak) {
+    $dstr =~ s/(0*)$//;
+    $s = length($1);
+  }
 
   my $ZERO = $n->copy->bzero;
   my $U = $ZERO + 1;
diff --git a/t/81-bignum.t b/t/81-bignum.t
index 977d7f0..e06ee79 100644
--- a/t/81-bignum.t
+++ b/t/81-bignum.t
@@ -145,6 +145,7 @@ foreach my $n (@proveprimes) {
   SKIP: {
     skip "Large proof on 32-bit machine.", 1
       if !$use64 && !$extra && $n > 2**66;
+    skip "Skipping provable primes on broken 64-bit", 1 if $broken64;
     ok( is_provable_prime($n), "$n is provably prime" );
   }
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libmath-prime-util-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to