This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.14 in repository libmath-prime-util-perl.
commit b9dde29ed3879e621dcae95541aad3c764275685 Author: Dana Jacobsen <d...@acm.org> Date: Mon Nov 19 18:20:31 2012 -0800 Add 'verbose' config option --- TODO | 2 -- XS.xs | 9 ++++++++- aks.c | 10 +++++----- lib/Math/Prime/Util.pm | 8 ++++++++ util.c | 5 +++++ util.h | 3 +++ 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index c704281..7da582a 100644 --- a/TODO +++ b/TODO @@ -33,5 +33,3 @@ - Add Lehmer in PP (I have a version, just needs some polishing). - Move AKS tests into their own test, and add some provable prime tests. - -- Add a 'verbose' option to general config. diff --git a/XS.xs b/XS.xs index 5c69ba7..15f51ff 100644 --- a/XS.xs +++ b/XS.xs @@ -17,6 +17,13 @@ PROTOTYPES: ENABLE void +_XS_set_verbose(IN int verbose) + +int +_XS_get_verbose() + + +void prime_precalc(IN UV n) void @@ -220,7 +227,7 @@ _XS_factor(IN UV n) XPUSHs(sv_2mortal(newSVuv( facs[i-1] ))); } } else { - int const verbose = 0; + int const verbose = _XS_get_verbose(); UV const tlim_lower = 211; /* Trial division through this prime */ UV const tlim = 223; /* This means we've checked through here */ UV tofac_stack[MPU_MAX_FACTORS+1]; diff --git a/aks.c b/aks.c index 2b43943..d37b6ac 100644 --- a/aks.c +++ b/aks.c @@ -15,7 +15,6 @@ */ #define SQRTN_SHORTCUT 1 -#define VERBOSE 0 #include "ptypes.h" #include "util.h" @@ -159,6 +158,7 @@ int _XS_is_aks_prime(UV n) { UV sqrtn, limit, r, rlimit, a; double log2n; + int verbose = _XS_get_verbose(); /* Check for overflow */ #if BITS_PER_WORD == 32 @@ -180,7 +180,7 @@ int _XS_is_aks_prime(UV n) log2n = log(n) / log(2); /* C99 has a log2() function */ limit = (UV) floor(log2n * log2n); - if (VERBOSE) { printf("limit is %lu\n", limit); } + if (verbose) { printf("# aks limit is %lu\n", limit); } for (r = 2; r < n; r++) { if ((n % r) == 0) @@ -198,13 +198,13 @@ int _XS_is_aks_prime(UV n) rlimit = (UV) floor(sqrt(r-1) * log2n); - if (VERBOSE) { printf("r = %lu rlimit = %lu\n", r, rlimit); } + if (verbose) { printf("# aks r = %lu rlimit = %lu\n", r, rlimit); } for (a = 1; a <= rlimit; a++) { if (! test_anr(a, n, r) ) return 0; - if (VERBOSE) { printf("."); fflush(stdout); } + if (verbose>1) { printf("."); fflush(stdout); } } - if (VERBOSE) { printf("\n"); } + if (verbose>1) { printf("\n"); } return 1; } diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm index 841fa30..3f2addb 100644 --- a/lib/Math/Prime/Util.pm +++ b/lib/Math/Prime/Util.pm @@ -104,6 +104,7 @@ if ($_Config{'maxbits'} == 32) { $_Config{'maxprimeidx'} = 425656284035217743; } $_Config{'assume_rh'} = 0; +$_Config{'verbose'} = 0; # used for code like: # return _XS_foo($n) if $n <= $_XS_MAXVAL @@ -160,6 +161,13 @@ sub prime_set_config { $_HAVE_GMP = $_Config{'gmp'}; } elsif ($param =~ /^(assume[_ ]?)?[ge]?rh$/ || $param =~ /riemann\s*h/) { $_Config{'assume_rh'} = ($value) ? 1 : 0; + } elsif ($param eq 'verbose') { + if ($value =~ /^\d+$/) { } + elsif ($value =~ /^[ty]/i) { $value = 1; } + elsif ($value =~ /^[fn]/i) { $value = 0; } + else { croak("Invalid setting for verbose. 0, 1, 2, etc."); } + $_Config{'verbose'} = $value; + _XS_set_verbose($value) if $_Config{'xs'}; } else { croak "Unknown or invalid configuration setting: $param\n"; } diff --git a/util.c b/util.c index 979fe51..3254cf6 100644 --- a/util.c +++ b/util.c @@ -33,6 +33,11 @@ extern long double fabsl(long double); #include "cache.h" #include "lehmer.h" +static int _verbose = 0; +void _XS_set_verbose(int v) { _verbose = v; } +int _XS_get_verbose(void) { return _verbose; } + + static const unsigned char byte_zeros[256] = {8,7,7,6,7,6,6,5,7,6,6,5,6,5,5,4,7,6,6,5,6,5,5,4,6,5,5,4,5,4,4,3, 7,6,6,5,6,5,5,4,6,5,5,4,5,4,4,3,6,5,5,4,5,4,4,3,5,4,4,3,4,3,3,2, diff --git a/util.h b/util.h index 8156590..b300a3d 100644 --- a/util.h +++ b/util.h @@ -3,6 +3,9 @@ #include "ptypes.h" +extern int _XS_get_verbose(void); +extern void _XS_set_verbose(int v); + extern int _XS_is_prime(UV x); extern int is_definitely_prime(UV x); extern UV next_trial_prime(UV x); -- 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