This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.19 in repository libmath-prime-util-perl.
commit 7f2819e61d671538d469f61f156bb866f8321f89 Author: Dana Jacobsen <d...@acm.org> Date: Wed Jan 23 23:35:26 2013 -0800 Update MR bases --- Changes | 2 +- MANIFEST | 1 + examples/test-primality-small.pl | 42 ++++++++++++++++++++++++++++++++++++++++ factor.c | 6 +++--- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/Changes b/Changes index 108703b..4d678e8 100644 --- a/Changes +++ b/Changes @@ -2,7 +2,7 @@ Revision history for Perl extension Math::Prime::Util. 0.19 ?? January 2012 - - Update MR bases. + - Update MR bases with newest from http://miller-rabin.appspot.com/. - Fixed some issues when using bignum and Calc BigInt backend, and bignum and Perl 5.6. diff --git a/MANIFEST b/MANIFEST index d0f6e0b..2e04349 100644 --- a/MANIFEST +++ b/MANIFEST @@ -46,6 +46,7 @@ examples/test-primes-yafu.pl examples/test-holf.pl examples/test-nthapprox.pl examples/test-pcapprox.pl +examples/test-primality-small.pl examples/sophie_germain.pl examples/twin_primes.pl examples/find_mr_bases.pl diff --git a/examples/test-primality-small.pl b/examples/test-primality-small.pl new file mode 100755 index 0000000..a3f145c --- /dev/null +++ b/examples/test-primality-small.pl @@ -0,0 +1,42 @@ +#!/usr/bin/env perl +use strict; +use warnings; +$| = 1; # fast pipes + +# Make sure the is_prob_prime functionality is working for small inputs. +# Good for making sure the first few M-R bases are set up correctly. + +use Math::Prime::Util qw/is_prob_prime/; +use Math::Prime::Util::PrimeArray; + +my @primes; tie @primes, 'Math::Prime::Util::PrimeArray'; + +# Test just primes +if (0) { + foreach my $i (1 .. 10000000) { + my $n = shift @primes; + die unless is_prob_prime($n); + #print "." unless $i % 16384; + print "$i $n\n" unless $i % 262144; + } +} + +# Test every number up to the 100Mth prime (about 2000M) +if (1) { + die "2 should be prime" unless is_prob_prime(2); + shift @primes; + my $n = shift @primes; + foreach my $i (2 .. 100_000_000) { + die "$n should be prime" unless is_prob_prime($n); + print "$i $n\n" unless $i % 262144; + my $next = shift @primes; + my $diff = ($next - $n) >> 1; + if ($diff > 1) { + foreach my $d (1 .. $diff-1) { + my $cn = $n + 2*$d; + die "$cn should be composite" if is_prob_prime($cn); + } + } + $n = $next; + } +} diff --git a/factor.c b/factor.c index 8cad533..59c246b 100644 --- a/factor.c +++ b/factor.c @@ -208,9 +208,9 @@ int _XS_is_prob_prime(UV n) } #else #if 1 - /* Better bases from http://miller-rabin.appspot.com/, 15 Jan 2013 */ - if (n < UVCONST(218245)) { - bases[0] = UVCONST(34933608779780163); + /* Better bases from http://miller-rabin.appspot.com/, 23 Jan 2013 */ + if (n < UVCONST(272161)) { + bases[0] = UVCONST(62769592775616394); nbases = 1; } else if (n < UVCONST(466758181)) { bases[0] = UVCONST( 91869414 ); -- 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