This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.37 in repository libmath-prime-util-perl.
commit 60d376c4c9cf13498567d23cdf09cb716ced1ff4 Author: Dana Jacobsen <d...@acm.org> Date: Wed Jan 22 22:25:32 2014 -0800 Clean up some random / proven primes --- lib/Math/Prime/Util.pm | 27 ++++----------------------- lib/Math/Prime/Util/PrimalityProving.pm | 12 ++++++++++-- lib/Math/Prime/Util/RandomPrimes.pm | 13 ++++++++++++- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm index 79a64f1..1f3fb63 100644 --- a/lib/Math/Prime/Util.pm +++ b/lib/Math/Prime/Util.pm @@ -511,8 +511,7 @@ sub prime_iterator { sub prime_iterator_object { my($start) = @_; - eval { require Math::Prime::Util::PrimeIterator; 1; } - or do { croak "Cannot load Math::Prime::Util::PrimeIterator"; }; + require Math::Prime::Util::PrimeIterator; return Math::Prime::Util::PrimeIterator->new($start); } @@ -623,13 +622,6 @@ sub lucas_sequence { ############################################################################# -# For stripping off the header on certificates so they can be combined. -sub _strip_proof_header { - my $proof = shift; - $proof =~ s/^\[MPU - Primality Certificate\]\nVersion \S+\n+Proof for:\nN (\d+)\n+//ms; - return $proof; -} - # Return just the non-cert portion. sub is_provable_prime { my($n) = @_; @@ -674,10 +666,7 @@ sub is_provable_prime_with_cert { return ($isp, $cert); } # Old version. Convert. - if (!defined $Math::Prime::Util::PrimalityProving::VERSION) { - eval { require Math::Prime::Util::PrimalityProving; 1; } - or do { croak "Cannot load Math::Prime::Util::PrimalityProving"; }; - } + require Math::Prime::Util::PrimalityProving; return ($isp, Math::Prime::Util::PrimalityProving::convert_array_cert_to_string($cert)); } @@ -700,11 +689,7 @@ sub is_provable_prime_with_cert { # AKS horribly slow # See http://primes.utm.edu/prove/merged.html or other sources. - if (!defined $Math::Prime::Util::PrimalityProving::VERSION) { - eval { require Math::Prime::Util::PrimalityProving; 1; } - or do { croak "Cannot load Math::Prime::Util::PrimalityProving"; }; - } - + require Math::Prime::Util::PrimalityProving; #my ($isp, $pref) = Math::Prime::Util::PrimalityProving::primality_proof_lucas($n); my ($isp, $pref) = Math::Prime::Util::PrimalityProving::primality_proof_bls75($n); carp "proved $n is not prime\n" if !$isp; @@ -715,11 +700,7 @@ sub is_provable_prime_with_cert { sub verify_prime { my @cdata = @_; - if (!defined $Math::Prime::Util::PrimalityProving::VERSION) { - eval { require Math::Prime::Util::PrimalityProving; 1; } - or do { croak "Cannot load Math::Prime::Util::PrimalityProving"; }; - } - + require Math::Prime::Util::PrimalityProving; my $cert = ''; if (scalar @cdata == 1 && ref($cdata[0]) eq '') { $cert = $cdata[0]; diff --git a/lib/Math/Prime/Util/PrimalityProving.pm b/lib/Math/Prime/Util/PrimalityProving.pm index 6d270be..e654860 100644 --- a/lib/Math/Prime/Util/PrimalityProving.pm +++ b/lib/Math/Prime/Util/PrimalityProving.pm @@ -57,6 +57,14 @@ sub _small_cert { ""; } +# For stripping off the header on certificates so they can be combined. +sub _strip_proof_header { + my $proof = shift; + $proof =~ s/^\[MPU - Primality Certificate\]\nVersion \S+\n+Proof for:\nN (\d+)\n+//ms; + return $proof; +} + + sub primality_proof_lucas { my ($n) = shift; my @composite = (0, ''); @@ -96,7 +104,7 @@ sub primality_proof_lucas { carp "could not prove primality of $n.\n"; return (1, ''); } - push @fac_proofs, Math::Prime::Util::_strip_proof_header($fproof) if $f > $_smallval; + push @fac_proofs, _strip_proof_header($fproof) if $f > $_smallval; } $cert .= "A $a\n"; foreach my $proof (@fac_proofs) { @@ -230,7 +238,7 @@ sub primality_proof_bls75 { carp "could not prove primality of $n.\n"; return (1, ''); } - push @fac_proofs, Math::Prime::Util::_strip_proof_header($fproof) if $f > $_smallval; + push @fac_proofs, _strip_proof_header($fproof) if $f > $_smallval; } $cert .= $atext; $cert .= "----\n"; diff --git a/lib/Math/Prime/Util/RandomPrimes.pm b/lib/Math/Prime/Util/RandomPrimes.pm index 2b7b0fa..e454b9c 100644 --- a/lib/Math/Prime/Util/RandomPrimes.pm +++ b/lib/Math/Prime/Util/RandomPrimes.pm @@ -689,6 +689,15 @@ sub random_nbit_prime { } } + +# For stripping off the header on certificates so they can be combined. +sub _strip_proof_header { + my $proof = shift; + $proof =~ s/^\[MPU - Primality Certificate\]\nVersion \S+\n+Proof for:\nN (\d+)\n+//ms; + return $proof; +} + + sub random_maurer_prime { my $k = shift; croak "random_maurer_prime, bits must be >= 2" unless $k >= 2; @@ -743,7 +752,9 @@ sub random_maurer_prime_with_cert { } # I've seen +0, +1, and +2 here. Maurer uses +0. Menezes uses +1. - my ($q, $qcert) = random_maurer_prime_with_cert( ($r * $k)->bfloor->binc ); + # We can use +1 because we're using BLS75 theorem 3 later. + my $smallk = int(($r * $k)->bfloor->bstr) + 1; + my ($q, $qcert) = random_maurer_prime_with_cert($smallk); $q = Math::BigInt->new("$q") unless ref($q) eq 'Math::BigInt'; my $I = Math::BigInt->new(2)->bpow($k-2)->bdiv($q)->bfloor->as_int(); print "r = $r k = $k q = $q I = $I\n" if $verbose && $verbose != 3; -- 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