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 0885daa6974e5bff4dd2efbf2cf4903a1465d862 Author: Dana Jacobsen <d...@acm.org> Date: Tue Dec 31 20:14:25 2013 -0800 More updates from bulk88 suggestions --- XS.xs | 7 +++++-- factor.c | 16 ++++++++-------- primality.c | 5 +++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/XS.xs b/XS.xs index d3233c3..b908084 100644 --- a/XS.xs +++ b/XS.xs @@ -676,6 +676,11 @@ _validate_num(SV* svn, ...) SV* sv1; SV* sv2; CODE: + /* Internal function. Emulate the PP version of this: + * $is_valid = _validate_num( $n [, $min [, $max] ] ) + * Return 0 if we're befuddled by the input. + * Otherwise croak if n isn't >= 0 and integer, n < min, or n > max. + */ RETVAL = 0; if (_validate_int(aTHX_ svn, 0)) { if (SvROK(svn)) { /* Convert small Math::BigInt object into scalar */ @@ -805,7 +810,6 @@ forcomposites (SV* block, IN SV* svbeg, IN SV* svend = 0) if (cv == Nullcv) croak("Not a subroutine reference"); - if (items <= 1) return; if (!_validate_int(aTHX_ svbeg, 0) || (items >= 3 && !_validate_int(aTHX_ svend,0))) { _vcallsubn(aTHX_ G_VOID|G_DISCARD, "_generic_forcomposites",items); @@ -886,7 +890,6 @@ fordivisors (SV* block, IN SV* svn) if (cv == Nullcv) croak("Not a subroutine reference"); - if (items <= 1) return; if (!_validate_int(aTHX_ svn, 0)) { _vcallsubn(aTHX_ G_VOID|G_DISCARD, "_generic_fordivisors",2); diff --git a/factor.c b/factor.c index 4b0f976..092a2c9 100644 --- a/factor.c +++ b/factor.c @@ -1028,13 +1028,13 @@ static void squfof_unit(UV n, mult_t* mult_save, UV* f) } } -#define NSQUFOF_MULT (sizeof(multipliers)/sizeof(multipliers[0])) +static const UV squfof_multipliers[] = + { 3*5*7*11, 3*5*7, 3*5*11, 3*5, 3*7*11, 3*7, 5*7*11, 5*7, + 3*11, 3, 5*11, 5, 7*11, 7, 11, 1 }; +#define NSQUFOF_MULT (sizeof(squfof_multipliers)/sizeof(squfof_multipliers[0])) int racing_squfof_factor(UV n, UV *factors, UV rounds) { - const UV multipliers[] = { - 3*5*7*11, 3*5*7, 3*5*11, 3*5, 3*7*11, 3*7, 5*7*11, 5*7, - 3*11, 3, 5*11, 5, 7*11, 7, 11, 1 }; const UV big2 = UV_MAX >> 2; mult_t mult_save[NSQUFOF_MULT]; int still_racing; @@ -1050,7 +1050,7 @@ int racing_squfof_factor(UV n, UV *factors, UV rounds) } for (i = 0; i < NSQUFOF_MULT; i++) { - mult = multipliers[i]; + mult = squfof_multipliers[i]; nn64 = n * mult; mult_save[i].mult = mult; if ((big2 / mult) < n) { @@ -1083,11 +1083,11 @@ int racing_squfof_factor(UV n, UV *factors, UV rounds) for (i = 0; i < NSQUFOF_MULT; i++) { if (!mult_save[i].valid) continue; - nn64 = n * (UV)multipliers[i]; + nn64 = n * squfof_multipliers[i]; squfof_unit(nn64, &mult_save[i], &f64); if (f64 > 1) { - if (f64 != multipliers[i]) { - f64 /= gcd_ui(f64, multipliers[i]); + if (f64 != squfof_multipliers[i]) { + f64 /= gcd_ui(f64, squfof_multipliers[i]); if (f64 != 1) { factors[0] = f64; factors[1] = n / f64; diff --git a/primality.c b/primality.c index efa6131..33880a5 100644 --- a/primality.c +++ b/primality.c @@ -616,11 +616,12 @@ int _XS_is_almost_extra_strong_lucas_pseudoprime(UV n, UV increment) W = submod( mont_prod64( montP, montP, n, npi), mont2, n); V = montP; while (b--) { + UV T = submod( mont_prod64(V, W, n, npi), montP, n); if ( (d >> b) & UVCONST(1) ) { - V = submod( mont_prod64(V, W, n, npi), montP, n); + V = T; W = submod( mont_prod64(W, W, n, npi), mont2, n); } else { - W = submod( mont_prod64(V, W, n, npi), montP, n); + W = T; V = submod( mont_prod64(V, V, n, npi), mont2, n); } } -- 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