[libmath-prime-util-perl] 02/18: Don't use last bit of drand48
Partha P. Mukherjee
ppm-guest at moszumanska.debian.org
Thu May 21 18:46:38 UTC 2015
This is an automated email from the git hooks/post-receive script.
ppm-guest pushed a commit to annotated tag v0.17
in repository libmath-prime-util-perl.
commit 113f73591ab0b2fd243907a9cea02ff39da50dc5
Author: Dana Jacobsen <dana at acm.org>
Date: Wed Dec 12 08:47:56 2012 -0800
Don't use last bit of drand48
---
TODO | 3 +++
lib/Math/Prime/Util.pm | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/TODO b/TODO
index c97cc81..76f5081 100644
--- a/TODO
+++ b/TODO
@@ -40,3 +40,6 @@
- Dynamically use a mulmodadd in PP aks, just like the new C code does.
This will mean it'll work for full-size native ints.
+
+- Add configuration options for rand and randbits (maybe irand and irandrange).
+ This will help when being used as part of a library.
diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm
index 66c3fdb..62cc59a 100644
--- a/lib/Math/Prime/Util.pm
+++ b/lib/Math/Prime/Util.pm
@@ -98,10 +98,13 @@ BEGIN {
}
# Try to figure out a system rand configuration that works for us.
+ # Using something other than the craptastic system rand would be best.
use Config;
$_Config{'system_randbits'} = $Config{'randbits'};
# Keep things in integer range.
$_Config{'system_randbits'} = $_Config{'maxbits'}-1 if $_Config{'system_randbits'} >= $_Config{'maxbits'};
+ # drand48 has an alternating last bit on almost every system.
+ $_Config{'system_randbits'}-- if $_Config{'system_randbits'} == 48;
no Config;
}
@@ -830,7 +833,7 @@ sub primes {
# I've seen +0, +1, and +2 here. Maurer uses +0. Menezes uses +1.
my $q = random_maurer_prime( ($r * $k)->bfloor + 1 );
$q = Math::BigInt->new("$q") unless ref($q) eq 'Math::BigInt';
- my $I = Math::BigInt->new(2)->bpow($k-1)->bdiv(2 * $q)->bfloor;
+ my $I = Math::BigInt->new(2)->bpow($k-2)->bdiv($q)->bfloor;
print "B = $B r = $r k = $k q = $q I = $I\n" if $verbose;
# Big GCD's are hugely fast with GMP or Pari, but super slow with Calc.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmath-prime-util-perl.git
More information about the Pkg-perl-cvs-commits
mailing list