This is an automated email from the git hooks/post-receive script.

ppm-guest pushed a commit to annotated tag v0.15
in repository libmath-prime-util-perl.

commit a35c1075b96b5e07e8599ef4320946f3fa98fe83
Author: Dana Jacobsen <d...@acm.org>
Date:   Sun Dec 9 15:31:39 2012 -0800

    Swap system/user rand
---
 lib/Math/Prime/Util.pm | 14 +++++++-------
 t/16-randomprime.t     |  3 ++-
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm
index dc79c86..87399cb 100644
--- a/lib/Math/Prime/Util.pm
+++ b/lib/Math/Prime/Util.pm
@@ -438,12 +438,11 @@ sub primes {
   # sure you use version 1.16 or later.
   sub _get_rand_func {
     my $irandf;
-    if (defined &::rand) {
+    if (defined &::rand) {                 # User-defined rand function
       $irandf = sub {
         my($range) = @_;
         return 0 if $range <= 0;
-        my $rand_max_bits = $_Config{'system_randbits'};
-        return int(::rand($range+1)) if $range < (1 << $rand_max_bits);
+        return int(::rand($range+1)) if $range < (1 << 31);
         my $rbits = 0;
         if (ref($range) eq 'Math::BigInt') {
           $rbits = length($range->as_bin) - 2;
@@ -455,18 +454,19 @@ sub primes {
           my $rbitsleft = $rbits;
           my $U = $range - $range;   # zero in possible bigint
           while ($rbitsleft > 0) {
-            my $usebits = ($rbitsleft > $rand_max_bits) ? $rand_max_bits : 
$rbitsleft;
+            my $usebits = ($rbitsleft > 31) ? 31 : $rbitsleft;
             $U = ($U << $usebits) + int(::rand(1 << $usebits));
             $rbitsleft -= $usebits;
           }
           return $U if $U <= $range;
         }
       };
-    } else {
+    } else {                               # System rand function
       $irandf = sub {
         my($range) = @_;
         return 0 if $range <= 0;
-        return int(rand($range+1)) if $range < (1 << 31);
+        my $rand_max_bits = $_Config{'system_randbits'};
+        return int(rand($range+1)) if $range < (1 << $rand_max_bits);
         my $rbits = 0;
         if (ref($range) eq 'Math::BigInt') {
           $rbits = length($range->as_bin) - 2;
@@ -478,7 +478,7 @@ sub primes {
           my $rbitsleft = $rbits;
           my $U = $range - $range;   # zero in possible bigint
           while ($rbitsleft > 0) {
-            my $usebits = ($rbitsleft > 31) ? 31 : $rbitsleft;
+            my $usebits = ($rbitsleft > $rand_max_bits) ? $rand_max_bits : 
$rbitsleft;
             $U = ($U << $usebits) + int(rand(1 << $usebits));
             $rbitsleft -= $usebits;
           }
diff --git a/t/16-randomprime.t b/t/16-randomprime.t
index 22664ee..ce9675f 100644
--- a/t/16-randomprime.t
+++ b/t/16-randomprime.t
@@ -6,7 +6,8 @@ use Test::More;
 #use Math::Random::MT qw/rand/;
 #use Math::Random::MT::Auto qw/rand/;
 #sub rand { return 0.5; }
-use Math::Prime::Util qw/random_prime random_ndigit_prime random_nbit_prime
+use Math::Prime::Util qw/-nobigint
+                         random_prime random_ndigit_prime random_nbit_prime
                          random_maurer_prime is_prime/;
 
 my $use64 = Math::Prime::Util::prime_get_config->{'maxbits'} > 32;

-- 
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

Reply via email to