This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.37 in repository libmath-prime-util-perl.
commit a17fe6b2c4a897a52ad15802e9d676f5eecc8f16 Author: Dana Jacobsen <d...@acm.org> Date: Fri Jan 17 16:11:41 2014 -0800 Adjust factor recipe, 3-5% faster for large inputs. --- factor.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/factor.c b/factor.c index 690e3f6..32ac323 100644 --- a/factor.c +++ b/factor.c @@ -93,7 +93,7 @@ int factor(UV n, UV *factors) while ( (n >= f*f) && (!_XS_is_prime(n)) ) { int split_success = 0; /* Adjust the number of rounds based on the number size */ - UV const br_rounds = ((n>>29) < 100000) ? 1500 : 2000; + UV const br_rounds = ((n>>29) < 100000) ? 1500 : 4000; UV const sq_rounds =100000; /* 20k 91%, 40k 98%, 80k 99.9%, 120k 99.99% */ /* 99.7% of 32-bit, 94% of 64-bit random inputs factored here */ @@ -107,21 +107,18 @@ int factor(UV n, UV *factors) if (verbose) printf("squfof %d\n", split_success); } /* At this point we should only have 16+ digit semiprimes. */ - /* This p-1 gets about 2/3 of what makes it through the above */ if (!split_success) { - split_success = pminus1_factor(n, tofac_stack+ntofac, 5000, 100000)-1; + split_success = pminus1_factor(n, tofac_stack+ntofac, 8000, 120000)-1; if (verbose) printf("pminus1 %d\n", split_success); - } - /* Some rounds of HOLF, good for close to perfect squares which are - * the worst case for the next step */ - if (!split_success) { - split_success = holf_factor(n, tofac_stack+ntofac, 2000)-1; - if (verbose) printf("holf %d\n", split_success); - } - /* The catch-all. Should factor anything. */ - if (!split_success) { - split_success = prho_factor(n, tofac_stack+ntofac, 256*1024)-1; - if (verbose) printf("long prho %d\n", split_success); + /* Get the stragglers */ + if (!split_success) { + split_success = prho_factor(n, tofac_stack+ntofac, 120000)-1; + if (verbose) printf("long prho %d\n", split_success); + if (!split_success) { + split_success = pbrent_factor(n, tofac_stack+ntofac, 500000, 7)-1; + if (verbose) printf("long pbrent %d\n", split_success); + } + } } if (split_success) { -- 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