[libmath-prime-util-perl] 16/55: Full trial divide of small factor inputs
Partha P. Mukherjee
ppm-guest at moszumanska.debian.org
Thu May 21 18:53:40 UTC 2015
This is an automated email from the git hooks/post-receive script.
ppm-guest pushed a commit to annotated tag v0.41
in repository libmath-prime-util-perl.
commit d605825e71a6eebe4d8661555dc90946deb89215
Author: Dana Jacobsen <dana at acm.org>
Date: Thu May 1 17:17:25 2014 -0700
Full trial divide of small factor inputs
---
Changes | 3 +++
factor.c | 6 ++----
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/Changes b/Changes
index d0017d3..5b377b2 100644
--- a/Changes
+++ b/Changes
@@ -13,6 +13,9 @@ Revision history for Perl module Math::Prime::Util
changes in the Montgomery math section -- an improvement to mont_prod64
and using a new modular inverse from W. Izykowski based on Arazi (1994).
+ - factoring small inputs (n < 20M) is ~10% faster, which speeds up some
+ misc functions (e.g. euler_phi, divisor_sum) for small inputs.
+
- Small improvement to twin_prime_count_approx and nth_twin_prime_approx.
- Better AKS testing in xt/primality-aks.pl.
diff --git a/factor.c b/factor.c
index 29c3c7f..5e4c35a 100644
--- a/factor.c
+++ b/factor.c
@@ -16,9 +16,6 @@
#define FUNC_clz 1
#include "util.h"
-/* factor will do trial division through this prime index, must be in table */
-#define TRIAL_TO_PRIME 84
-
/*
* You need to remember to use UV for unsigned and IV for signed types that
* are large enough to hold our data.
@@ -67,7 +64,8 @@ int factor(UV n, UV *factors)
if (f*f <= n) {
UV sp = 3;
- while (++sp < TRIAL_TO_PRIME) {
+ UV const lastsp = (n < 20000000) ? NPRIMES_SMALL-1 : 83;
+ while (++sp < lastsp) {
f = primes_small[sp];
if (f*f > n) break;
while ( (n%f) == 0 ) {
--
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