This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.36 in repository libmath-prime-util-perl.
commit a0d9c79ce007be5e4f4d1d5224ac0e1e5865c050 Author: Dana Jacobsen <d...@acm.org> Date: Wed Jan 8 19:40:45 2014 -0800 Trim some tests, convert some proofs to new cert format, more tests work with pre-5.8 64-bit --- t/23-primality-proofs.t | 180 +++++++++++++++++++++++++++++++++--------------- t/80-pp.t | 42 +++++------ 2 files changed, 147 insertions(+), 75 deletions(-) diff --git a/t/23-primality-proofs.t b/t/23-primality-proofs.t index 25edfde..cdc5912 100644 --- a/t/23-primality-proofs.t +++ b/t/23-primality-proofs.t @@ -15,12 +15,21 @@ BEGIN { $use_test_warn = $@ ? 0 : 1; } -my $extra = defined $ENV{EXTENDED_TESTING} && $ENV{EXTENDED_TESTING}; +my $extra = 0+(defined $ENV{EXTENDED_TESTING} && $ENV{EXTENDED_TESTING}); my $use64 = ~0 > 4294967295; my $broken64 = (18446744073709550592 == ~0); +# Do some tests only if: +# EXTENDED_TESTING is on OR we have the GMP backend +# Note that with Calc, these things are incredibly slow. +my $doexpensive = 0 + ($extra || ( (!$use64 || !$broken64) && Math::BigInt->config()->{lib} eq 'Math::BigInt::GMP' )); -my @plist = qw/20907001 809120722675364249 677826928624294778921 - 980098182126316404630169387/; +my @plist = qw/20907001 809120722675364249/; +if ($extra || $use64) { + push @plist, "677826928624294778921"; +} +if ($extra || prime_get_config->{'gmp'}) { + push @plist, "980098182126316404630169387"; +} ## This is too slow without Math::Prime::Util::GMP. #push @plist, '3364125245431456304736426076174232972735419017865223025179282077503701' @@ -39,12 +48,17 @@ my @plist = qw/20907001 809120722675364249 677826928624294778921 plan tests => 0 + 2 # is_provable_prime - + 5 * scalar(@plist) - + 6 # hand-done proofs + + 6 * scalar(@plist) + # hand-done proofs + + 1*$doexpensive # n-1 for 2^521-1 + + 1*$extra # n-1 for 2^607-1 + #+ (($doexpensive && !$broken64) ? 1 : 0) # n-1 proof + + (($doexpensive) ? 1 : 0) # n-1 proof + + 2 # Pratt and ECPP + 28 # borked up certificates generate warnings + 6 # verification failures (tiny/BPSW) + 8 # verification failures (Lucas/Pratt) - + 11 # verification failures (n-1) + + 8 # verification failures (n-1) + 7 # verification failures (ECPP) + 3 # Verious other types + 0; @@ -56,12 +70,8 @@ foreach my $p (@plist) { SKIP: { skip "Broken 64-bit causes trial factor to barf", 6 - if $broken64 && $p > 2**48; + if $broken64 && $p > 2**60; ok( is_prime($p), "$p is prime" ); - skip "These take a long time on non-64-bit. Skipping", 5 - if !$use64 && !$extra && $p =~ /^(6778|9800)/; - skip "Skipping a certificate without GMP", 5 - if !prime_get_config->{'gmp'} && !$extra && $p =~ /^9800/; my($isp, $cert) = is_provable_prime_with_cert($p); is( $isp, 2, " is_provable_prime_with_cert returns 2" ); ok( defined($cert) && $cert =~ /^Type/m, @@ -69,7 +79,7 @@ foreach my $p (@plist) { prime_set_config(verbose=>1); ok( verify_prime($cert), " verification of certificate for $p done" ); prime_set_config(verbose=>0); - # Note, in some cases the two certs could be non-equal (but both must be valid!) + # Note, in some cases the certs could be non-equal (but both must be valid!) my $cert2 = prime_certificate($p); ok( defined($cert2) && $cert2 =~ /^Type/m, " prime_certificate is also non-null" ); @@ -81,47 +91,81 @@ foreach my $p (@plist) { } } -# TODO: All these proofs are using the old format. That's ok for now, -# as verify_prime will convert them for us. But we really should do -# testing with the new format, including possible errors it could have. - # Some hand-done proofs -SKIP: { - skip "Skipping 2**521-1 verification without Math::BigInt::GMP", 1 - unless Math::BigInt->config()->{lib} eq 'Math::BigInt::GMP'; - my @proof = ('6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151', 'n-1', - [ 2,3,5,11,17,31,41,53,131,157,521,1613,61681,8191,42641,858001,51481, '7623851', '308761441' ], - [ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 ] ); - ok( verify_prime(@proof), "2**521-1 primality proof verified" ); -} -SKIP: { - skip "Skipping 2**607-1 verification without Math::BigInt::GMP", 1 - unless Math::BigInt->config()->{lib} eq 'Math::BigInt::GMP'; - skip "Skipping 2**607-1 verification on broken Perl", 1 if $broken64; - my @proof = ('531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127', 'n-1', - [ 2,3,7,607,'112102729', '341117531003194129', '7432339208719', - ['845100400152152934331135470251', 'n-1', - [2,5,11,31,41,101,251,601,1801], - [2,3,3,3,3,2,3,3,3] - ] ], - [ 3,5,3,2,3,3,3,3 ] ); - ok( verify_prime(@proof), "2**607-1 primality proof verified" ); +if ($doexpensive) { + my $proof = <<EOPROOF; +[MPU - Primality Certificate] +Version 1.0 + +Proof for: +N 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151 + +Type BLS5 +N 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151 +Q[1] 65427463921 +Q[2] 308761441 +Q[3] 7623851 +Q[4] 409891 +Q[5] 61681 +Q[6] 1613 +Q[7] 521 +Q[8] 157 +Q[9] 131 +Q[10] 53 +Q[11] 41 +Q[12] 31 +Q[13] 17 +A[0] 3 +A[1] 3 +A[2] 3 +A[3] 3 +A[4] 3 +A[5] 3 +A[6] 3 +A[8] 3 +A[9] 3 +A[10] 3 +A[11] 3 +A[12] 3 +A[13] 3 +---- +EOPROOF + ok( verify_prime($proof), "2**521-1 primality proof verified" ); } -#{ -# my @proof = ('809120722675364249', "n-1", ["B", 20000, '22233477760919', 2], [2, 4549], [3, 2]); -# ok( verify_prime(@proof), "n-1 T7 primality proof of 809120722675364249 verified" ); -#} -{ - my @proof = (20907001, "Pratt", [ 2, - 3, - 5, - [23,"Pratt",[2,[11,"Pratt",[2,5],2]],5], - [101, "Pratt", [2, 5], 2], - ], 14 ); - ok( verify_prime(@proof), "simple Lucas/Pratt proof verified" ); +if ($extra) { + my $proof = <<EOPROOF; +[MPU - Primality Certificate] +Version 1.0 + +Proof for: +N 531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127 + +Type BLS5 +N 531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127 +Q[1] 845100400152152934331135470251 +Q[2] 341117531003194129 +Q[3] 7432339208719 +Q[4] 607 +A[0] 3 +A[1] 3 +A[2] 3 +A[3] 3 +---- + +Type BLS5 +N 845100400152152934331135470251 +Q[1] 1801 +Q[2] 601 +Q[3] 251 +Q[4] 101 +A[1] 3 +A[2] 3 +A[3] 3 +---- +EOPROOF + ok( verify_prime($proof), "2**607-1 primality proof verified" ); } -SKIP: { - skip "Skipping n-1 verification on broken Perl", 1 if $broken64; +if ($doexpensive) { my @proof = ('3364125245431456304736426076174232972735419017865223025179282077503701', 'n-1', [2,5,127, ['28432789963853652887491983185920687231739655787', 'n-1', [ 2,3,163,650933, [ '44662634059309451871488121651101494489', 'n-1', @@ -135,9 +179,38 @@ SKIP: { ok( verify_prime(@proof), "simple n-1 proof verified" ); } { - my @proof = ('677826928624294778921',"AGKM", ['677826928624294778921', '404277700094248015180', '599134911995823048257', '677826928656744857936', '104088901820753203', ['2293544533', '356794037129589115041']], ['104088901820753203', '0', '73704321689372825', '104088902465395836', '1112795797', ['3380482019', '53320146243107032']], ['1112795797', '0', '638297481', '1112860899', '39019', ['166385704', '356512285']]); - ok( verify_prime(@proof), "ECPP primality proof of 677826928624294778921 verified" ); + my @proof = (20907001, "Pratt", [ 2, + 3, + 5, + [23,"Pratt",[2,[11,"Pratt",[2,5],2]],5], + [101, "Pratt", [2, 5], 2], + ], 14 ); + ok( verify_prime(@proof), "simple Lucas/Pratt proof verified" ); } +{ + my $proof = <<EOPROOF; +[MPU - Primality Certificate] +Version 1.0 + +Proof for: +N 1030291136596639351761062717 + +Type ECPP +N 1030291136596639351761062717 +A 1030291136596639351761062709 +B 0 +M 1030291136596575744618987466 +Q 317851433704525489 +X 4215121326 +Y 246323849244309081587435955 +EOPROOF + + ok( verify_prime($proof), "ECPP primality proof of 1030291136596639351761062717 verified" ); +} +#{ +# my @proof = ('809120722675364249', "n-1", ["B", 20000, '22233477760919', 2], [2, 4549], [3, 2]); +# ok( verify_prime(@proof), "n-1 T7 primality proof of 809120722675364249 verified" ); +#} # Failures for verify_prime @@ -265,8 +338,7 @@ is( verify_prime([1490266103, "ECPP", [694361, 694358, 0, 695162, [26737, "n-1", [2],[2]], [348008, 638945]]]), 0, "ECPP non-prime last q" ); -SKIP: { - skip "Skipping additional verifications on broken Perl", 3 if $broken64; +{ my $header = "[MPU - Primality Certificate]\nVersion 1.0\nProof for:"; { my $cert = join "\n", $header, diff --git a/t/80-pp.t b/t/80-pp.t index fc937c1..fa5340a 100644 --- a/t/80-pp.t +++ b/t/80-pp.t @@ -41,27 +41,27 @@ my @composites = qw/ # pseudoprimes to various small prime bases my %pseudoprimes = ( - 2 => [ qw/2047 3277 4033 4681 8321 15841 29341 42799 49141 52633 65281 74665 80581 85489 88357 90751/ ], - 3 => [ qw/121 703 1891 3281 8401 8911 10585 12403 87913 88573 97567/ ], - 5 => [ qw/781 1541 5461 5611 7813 13021 14981 44801 53971 79381/ ], - 7 => [ qw/25 325 703 2101 2353 4525 11041 79381 87673 88399 88831/ ], - 11 => [ qw/133 793 2047 4577 5041 12403 13333 86347 87913 88831/ ], - 13 => [ qw/85 1099 5149 7107 8911 9637 13019 75241 83333 85285 86347/ ], - 17 => [ qw/9 91 145 781 1111 2821 4033 4187 78881 88831 96433 97921 98671/ ], - 19 => [ qw/9 49 169 343 1849 2353 2701 4033 66421 68257 73555 96049/ ], - 23 => [ qw/169 265 553 1271 2701 4033 4371 62849 82513 96049/ ], - 29 => [ qw/15 91 341 469 871 2257 4371 4411 48133 49141 54913 79003/ ], - 31 => [ qw/15 49 133 481 931 6241 8911 9131 79003 83333 87061 88183/ ], - 37 => [ qw/9 451 469 589 685 817 1333 3781 79501 83333 84151 96727/ ], - 61 => [ qw/217 341 1261 2701 3661 6541 6697 76301 77421 79381 80041/ ], - 73 => [ qw/205 259 533 1441 1921 2665 3439 67069 76429 79501 93521/ ], - psp2 => [ qw/341 561 645 1105 1387 1729 8321 8481 8911 10261 10585/ ], - psp3 => [ qw/91 121 286 671 703 949 1105 7381 8401 8911 10585 11011/ ], - lucas => [ qw/9179 10877 11419 11663 13919 18407 18971 19043/ ], - slucas => [ qw/5459 5777 10877 16109 18971 40309 58519 75077/ ], - eslucas => [ qw/989 3239 5777 10877 27971 72389 73919 75077 100127/ ], - aeslucas1 => [ qw/989 3239 5777 10469 10877 27971 29681 30739 31631 39059 72389 73919 75077 100127/ ], - aeslucas2 => [ qw/3239 4531 5777 10877 12209 36079 37949 47849 50959/ ], + 2 => [ qw/2047 42799 4335241 1078467589/ ], + 3 => [ qw/121 44287 4252381 1075490821/ ], + 5 => [ qw/781 38081 4265257 1075156291/ ], + 7 => [ qw/25 325 29857 4411681 1074439981/ ], + 11 => [ qw/133 43213 4224533 1076929261/ ], + 13 => [ qw/85 35371 4336879 1079159203/ ], + 17 => [ qw/9 91 71071 4224533 1076237119/ ], + 19 => [ qw/9 49 49771 4384693 1074718783/ ], + 23 => [ qw/169 25201 4219129 1079063371/ ], + 29 => [ qw/15 91 48133 4219129 1075151447/ ], + 31 => [ qw/15 49 29341 4270657 1073833843/ ], + 37 => [ qw/9 451 59563 4287817 1075430539/ ], + 61 => [ qw/217 79381 4219129 1079326249/ ], + 73 => [ qw/205 34219 4321153 1074220489/ ], + psp2 => [ qw/341 561 29341 4259905 1073823745/ ], + psp3 => [ qw/91 121 44287 4252381 1073827147/ ], + lucas => [ qw/9179 10877 44099 4259789 1074039119/ ], + slucas => [ qw/5459 5777 75077 4309631 1080085439/ ], + eslucas => [ qw/989 3239 5777 72389 4226777 1076503199/ ], + aeslucas1 => [ qw/989 10469 39059 4269341 1076503199/ ], + aeslucas2 => [ qw/4531 12209 62479 4403027 1074695441/ ], ); # Test a pseudoprime larger than 2^32. push @{$pseudoprimes{2}}, 75792980677 if $use64; -- 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