[libmath-prime-util-perl] 01/02: Remove an extra loop from PP M-R
Partha P. Mukherjee
ppm-guest at moszumanska.debian.org
Thu May 21 18:46:25 UTC 2015
This is an automated email from the git hooks/post-receive script.
ppm-guest pushed a commit to annotated tag v0.16
in repository libmath-prime-util-perl.
commit 82af23f5829ffc78f65f549e810f914d71c00a66
Author: Dana Jacobsen <dana at acm.org>
Date: Tue Dec 11 03:31:20 2012 -0800
Remove an extra loop from PP M-R
---
lib/Math/Prime/Util/PP.pm | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/lib/Math/Prime/Util/PP.pm b/lib/Math/Prime/Util/PP.pm
index 5de0e92..3a3d296 100644
--- a/lib/Math/Prime/Util/PP.pm
+++ b/lib/Math/Prime/Util/PP.pm
@@ -721,13 +721,10 @@ sub miller_rabin {
foreach my $a (@bases) {
my $x = $n->copy->bzero->badd($a)->bmodpow($d,$n);
next if ($x->is_one) || ($x->bcmp($nminus1) == 0);
- foreach my $r (1 .. $s) {
+ foreach my $r (1 .. $s-1) {
$x->bmul($x); $x->bmod($n);
return 0 if $x->is_one;
- if ($x->bcmp($nminus1) == 0) {
- $a = 0;
- last;
- }
+ do { $a = 0; last; } if $x->bcmp($nminus1) == 0;
}
return 0 if $a != 0;
}
@@ -745,30 +742,24 @@ sub miller_rabin {
foreach my $a (@bases) {
my $x = _native_powmod($a, $d, $n);
next if ($x == 1) || ($x == ($n-1));
- foreach my $r (1 .. $s) {
+ foreach my $r (1 .. $s-1) {
$x = ($x*$x) % $n;
return 0 if $x == 1;
- if ($x == ($n-1)) {
- $a = 0;
- last;
- }
+ last if $x == $n-1;
}
- return 0 if $a != 0;
+ return 0 if $x != $n-1;
}
} else {
foreach my $a (@bases) {
my $x = _powmod($a, $d, $n);
next if ($x == 1) || ($x == ($n-1));
- foreach my $r (1 .. $s) {
+ foreach my $r (1 .. $s-1) {
$x = ($x < $_half_word) ? ($x*$x) % $n : _mulmod($x, $x, $n);
return 0 if $x == 1;
- if ($x == ($n-1)) {
- $a = 0;
- last;
- }
+ last if $x == $n-1;
}
- return 0 if $a != 0;
+ return 0 if $x != $n-1;
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmath-prime-util-perl.git
More information about the Pkg-perl-cvs-commits
mailing list