author Andy Dougherty Fri, 31 May 2002 15:52:34 +0000 (11:52 -0400) committer Jarkko Hietaniemi Fri, 31 May 2002 18:52:26 +0000 (18:52 +0000)
Message-ID: Pine.SOL.4.10.10205311550480.19295-100000@maxwell.phys.lafayette.edu>

p4raw-id: //depot/perl@16933

index 69be2d4..b6d59ea 100644 (file)
@@ -25,7 +25,8 @@ my \$length = 128;
# If you get a failure here, please re-run the test with the printed seed
# value as input: perl t/mbi_rand.t seed

-my \$seed = int(rand(65537)); print "# seed: \$seed\n"; srand(\$seed);
+my \$seed = (\$#ARGV == 0) ? \$ARGV : int(rand(65537));
+print "# seed: \$seed\n"; srand(\$seed);

my (\$A,\$B,\$As,\$Bs,\$ADB,\$AMB,\$la,\$lb);
my \$two = Math::BigInt->new(2);
@@ -40,8 +41,12 @@ for (my \$i = 0; \$i < \$count; \$i++)
# together digits, we would end up with "1272398823211223" etc.
while (length(\$As) < \$la) { \$As .= int(rand(100)) x int(rand(16)); }
while (length(\$Bs) < \$lb) { \$Bs .= int(rand(100)) x int(rand(16)); }
+  # Strip leading zeros, but don't let As and Bs end up empty.
\$As =~ s/^0+//; \$Bs =~ s/^0+//;
+  \$As = '0' if \$As eq '';
+  \$Bs = '0' if \$Bs eq '';
\$A = \$c->new(\$As); \$B = \$c->new(\$Bs);
+  # print "# As \$As\n# Bs \$Bs\n";
# print "# A \$A\n# B \$B\n";
if (\$A->is_zero() || \$B->is_zero())
{
@@ -59,3 +64,4 @@ for (my \$i = 0; \$i < \$count; \$i++)
unless ok (\$ADB*\$A+\$two*\$AMB-\$AMB,\$Bs);
}

+ 