[libmath-prime-util-perl] 10/15: Fixes for 5.6 (sigh)
Partha P. Mukherjee
ppm-guest at moszumanska.debian.org
Thu May 21 18:48:46 UTC 2015
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 <dana at 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
More information about the Pkg-perl-cvs-commits
mailing list