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