New, more portable test vector generator written in AWK.
[u/mdw/catacomb] / tests / mpx-gen.pl
1 #! /usr/bin/perl
2
3 $len = shift || 32;
4 $op = shift || "+";
5
6 sub r {
7 my $l = shift || $len;
8 my $i;
9 my $s;
10 for ($i = 0; $i < $l; $i++) {
11 my $x = rand(256);
12 $s .= sprintf("%02x", $x);
13 }
14 return $s;
15 }
16
17 $| = 1;
18 open(BC, "|bc | tr A-Z a-z") or die;
19 print BC "obase=16\nibase=16\n";
20 $x = r();
21 if ($op eq "<<" || $op eq ">>") {
22 $y = int(rand($len * 4)) + int(rand($len * 4));
23 $op = ($op eq "<<" ? "*" : "/");
24 $z = sprintf("%x", $y);
25 print "$x $y\n";
26 print BC "\U$x $op (2^$z)\n";
27 } elsif ($op eq "/") {
28 $ylen = int(rand($len)) + 1;
29 $y = r($ylen);
30 print "$x\n$y\n";
31 print BC "\U$x / $y\n$x % $y\n";
32 } elsif ($op eq "2") {
33 print "$x\n";
34 print BC "\U$x * $x\n";
35 } else {
36 $y = r();
37 print "$x\n$y\n";
38 print BC "\U$x $op $y\n";
39 }
40 close(BC);