From: mdw Date: Sat, 13 Nov 1999 01:53:08 +0000 (+0000) Subject: Random generator for MP testcases. X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/commitdiff_plain/463919ad1b43799c3351092f7c3138f1f418047a Random generator for MP testcases. --- diff --git a/tests/mpx-gen.pl b/tests/mpx-gen.pl new file mode 100755 index 0000000..6e53730 --- /dev/null +++ b/tests/mpx-gen.pl @@ -0,0 +1,40 @@ +#! /usr/bin/perl + +$len = shift || 32; +$op = shift || "+"; + +sub r { + my $l = shift || $len; + my $i; + my $s; + for ($i = 0; $i < $l; $i++) { + my $x = rand(256); + $s .= sprintf("%02x", $x); + } + return $s; +} + +$| = 1; +open(BC, "|bc | tr A-Z a-z") or die; +print BC "obase=16\nibase=16\n"; +$x = r(); +if ($op eq "<<" || $op eq ">>") { + $y = int(rand($len * 4)) + int(rand($len * 4)); + $op = ($op eq "<<" ? "*" : "/"); + $z = sprintf("%x", $y); + print "$x $y\n"; + print BC "\U$x $op (2^$z)\n"; +} elsif ($op eq "/") { + $ylen = int(rand($len)) + 1; + $y = r($ylen); + print "$x\n$y\n"; + print BC "\U$x / $y\n$x % $y\n"; +} elsif ($op eq "2") { + print "$x\n"; + print BC "\U$x * $x\n"; +} else { + $y = r(); + print "$x\n$y\n"; + print BC "\U$x $op $y\n"; +} +close(BC);