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 9728b3943adb551f3a4a97728f8e17f8f0e31182 Author: Dana Jacobsen <d...@acm.org> Date: Sat Jan 18 12:36:40 2014 -0800 Fix 32-bit unsigned long issues --- TODO | 7 ------- factor.c | 12 ++++++------ util.c | 2 +- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 1881492..71523b8 100644 --- a/TODO +++ b/TODO @@ -6,8 +6,6 @@ * Test on 32-bit Perl. Test on Win32. -- Add test to check maxbits in compiled library vs. Perl - - Figure out documentation solution for PP.pm - Is the current PP.pm setup the way we want to do it? @@ -36,11 +34,6 @@ - Use Montgomery routines in more places: Factoring. -- Put euler_phi and moebius directly in XS. - (1) optional second argument. Easily handled, and not hard to do in - generic sub call. - (2) generic sub returns an array. This is the sticking point. - - Factoring in PP code is really wasteful -- we're calling _isprime7 before we've done enough trial division, and later we're calling it on known composites. Note how the XS code splits the factor code into the public diff --git a/factor.c b/factor.c index 32ac323..1a22ee8 100644 --- a/factor.c +++ b/factor.c @@ -658,12 +658,12 @@ int pminus1_factor(UV n, UV *factors, UV B1, UV B2) } /* Simple Williams p+1 */ -static void pp1_pow(UV *cX, unsigned long exp, UV n) +static void pp1_pow(UV *cX, UV exp, UV n) { UV X0 = *cX; UV X = *cX; UV Y = mulsubmod(X, X, 2, n); - unsigned long bit = 1UL << (clz(exp)-1); + UV bit = UVCONST(1) << (clz(exp)-1); while (bit) { UV T = mulsubmod(X, Y, X0, n); if ( exp & bit ) { @@ -937,7 +937,7 @@ UV dlp_prho(UV a, UV g, UV p, UV maxrounds) { pollard_rho_cycle(u,v,w,p,n,a,g); /* xi, ai, bi */ pollard_rho_cycle(U,V,W,p,n,a,g); pollard_rho_cycle(U,V,W,p,n,a,g); /* x2i, a2i, b2i */ - if (verbose > 3) printf( "%3lu %4lu %3lu %3lu %4lu %3lu %3lu\n", i, u, v, w, U, V, W ); + if (verbose > 3) printf( "%3"UVuf" %4"UVuf" %3"UVuf" %3"UVuf" %4"UVuf" %3"UVuf" %3"UVuf"\n", i, u, v, w, U, V, W ); if (u == U) { UV r1, r2, k; r1 = submod(v, V, n); @@ -948,11 +948,11 @@ UV dlp_prho(UV a, UV g, UV p, UV maxrounds) { r2 = submod(W, w, n); k = divmod(r2, r1, n); if (powmod(g,k,p) != a) { - if (verbose > 2) printf("r1 = %lu r2 = %lu k = %lu\n", r1, r2, k); - if (verbose) printf("Incorrect DLP Rho solution: %lu\n", k); + if (verbose > 2) printf("r1 = %"UVuf" r2 = %"UVuf" k = %"UVuf"\n", r1, r2, k); + if (verbose) printf("Incorrect DLP Rho solution: %"UVuf"\n", k); return 0; } - if (verbose) printf("DLP Rho solution found after %lu steps\n", i); + if (verbose) printf("DLP Rho solution found after %"UVuf" steps\n", i); return k; } } diff --git a/util.c b/util.c index dd8d5b2..3a6dca8 100644 --- a/util.c +++ b/util.c @@ -763,7 +763,7 @@ UV* _totient_range(UV lo, UV hi) { unsigned char* segment; void* ctx; - if (hi < lo) croak("_totient_range error hi %lu < lo %lu\n", hi, lo); + if (hi < lo) croak("_totient_range error hi %"UVuf" < lo %"UVuf"\n", hi, lo); New(0, totients, hi-lo+1, UV); /* Do via factoring if very small or if we have a small range */ -- 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