[libmath-prime-util-perl] 06/59: Style change for is_prime -- no performance difference

Partha P. Mukherjee ppm-guest at moszumanska.debian.org
Thu May 21 18:44:51 UTC 2015


This is an automated email from the git hooks/post-receive script.

ppm-guest pushed a commit to annotated tag v0.10
in repository libmath-prime-util-perl.

commit 1670eb89526939b873b680583e6f8141cf3221ea
Author: Dana Jacobsen <dana at acm.org>
Date:   Thu Jun 28 12:15:32 2012 -0600

    Style change for is_prime -- no performance difference
---
 util.c | 46 ++++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/util.c b/util.c
index 4cff197..460f2ec 100644
--- a/util.c
+++ b/util.c
@@ -33,41 +33,43 @@ static UV count_zero_bits(const unsigned char* m, UV nbytes)
 
 
 /* Does trial division, assuming x not divisible by 2, 3, or 5 */
-static int _is_trial_prime7(UV x)
+static int _is_trial_prime7(UV n)
 {
-  UV q, i;
+  UV limit, i;
+  limit = sqrt(n);
   i = 7;
   while (1) {   /* trial division, skipping multiples of 2/3/5 */
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 6;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 6;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 6;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 6;
   }
   return 2;
 }
 
 /* Does trial division or prob tests, assuming x not divisible by 2, 3, or 5 */
-static int _is_prime7(UV x)
+static int _is_prime7(UV n)
 {
-  UV q, i;
+  UV limit, i;
 
-  if (x > MPU_PROB_PRIME_BEST)
-    return is_prob_prime(x);  /* We know this works for all 64-bit n */
+  if (n > MPU_PROB_PRIME_BEST)
+    return is_prob_prime(n);  /* We know this works for all 64-bit n */
 
+  limit = sqrt(n);
   i = 7;
   while (1) {   /* trial division, skipping multiples of 2/3/5 */
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 4;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 6;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 2;
-    q = x/i;  if (q<i) break;  if (x==(q*i)) return 0;   i += 6;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 4;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 6;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 2;
+    if (i > limit) break;  if ((n % i) == 0) return 0;  i += 6;
   }
   return 2;
 }

-- 
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