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

Reply via email to