This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.32 in repository libmath-prime-util-perl.
commit 7791b3cf4303fd3c1038d7a2c7b70674f4b58d68 Author: Dana Jacobsen <d...@acm.org> Date: Wed Aug 14 00:59:11 2013 -0700 Turn off F&T A2, need to make sure top bit is set --- lib/Math/Prime/Util.pm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm index 621f42d..c24f73f 100644 --- a/lib/Math/Prime/Util.pm +++ b/lib/Math/Prime/Util.pm @@ -838,7 +838,8 @@ sub primes { _validate_num($bits, 2) || _validate_positive_integer($bits, 2); # Fouque and Tobouchi (2011) Algorithm 2 - if (1 && $bits > 256) { + # TODO: Make sure the top bit is set. + if (0 && $bits > 256) { if (!defined $Math::BigInt::VERSION) { eval { require Math::BigInt; Math::BigInt->import(try=>'GMP,Pari'); 1; } or do { croak "Cannot load Math::BigInt"; }; @@ -851,12 +852,13 @@ sub primes { my $target = $bits - $_Config{'maxbits'}; my $beta = 2; $m = Math::BigInt->new(2); + $lambda = Math::BigInt->bone; while ($m->copy->blog(2)->badd(1) <= $target) { $beta = next_prime($beta); $m *= $beta; + $lambda = Math::BigInt::blcm($lambda, $beta-1); } - # Calculate Carmichael Lambda (used to create b) and arange. - $lambda = Math::BigInt::blcm( map { $_-1 } @{primes(3, $beta)} ); + # Lambda should now equal carmichael_lambda($m) $arange = Math::BigInt->new(2)->bpow($bits)->bdiv($m)->bsub(1); my $arange_bits = $arange->copy->blog(2)->badd(1); die "Incorrect arange" if $arange_bits > $_Config{'maxbits'}; @@ -878,7 +880,8 @@ sub primes { my $loop_limit = 1_000_000; while ($loop_limit-- > 0) { my $a = $irandf->($arange); - my $p = $m * $a + $b; + # Without wrapping $a like this, Math::BigInt::GMP will segfault. + my $p = $m * Math::BigInt->new("$a") + $b; if ($_HAVE_GMP) { next unless Math::Prime::Util::GMP::is_prime($p); } else { -- 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