New, more portable test vector generator written in AWK.
[u/mdw/catacomb] / tests / mpx-gen.pl
CommitLineData
463919ad 1#! /usr/bin/perl
2
3$len = shift || 32;
4$op = shift || "+";
5
6sub 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;
18open(BC, "|bc | tr A-Z a-z") or die;
19print BC "obase=16\nibase=16\n";
20$x = r();
21if ($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}
40close(BC);