2 #==========================================================================
5 # Author : Christopher Batten (cbatten@mit.edu)
6 # Date : April 29, 2005
8 (our $usageMsg = <<'ENDMSG') =~ s/^\#//gm;
10 # Simple script which creates an input data set and the reference data
11 # for the vvadd benchmark.
20 #--------------------------------------------------------------------------
21 # Command line processing
22 #--------------------------------------------------------------------------
30 print " Usage: vvadd_gendata.pl [options] \n";
33 print " --help print this message\n";
34 print " --size size of input data [1000]\n";
35 print " --seed random seed [1]\n";
41 sub processCommandLine
()
47 Getopt
::Long
::GetOptions
( \
%opts, 'help|?', 'size:i', 'seed:i' ) or usage
();
48 $opts{"help"} and usage
();
52 #--------------------------------------------------------------------------
54 #--------------------------------------------------------------------------
58 my $arrayName = $_[0];
59 my $arrayRefReal = $_[1];
60 my $arrayRefImag = $_[2];
63 my $arrayLen = scalar(@
{$arrayRefReal});
65 print "struct Complex ".$arrayName."[DATA_SIZE] = \n";
69 for ( my $i = 0; $i < $arrayLen; $i++ ) {
70 print sprintf("{%3.2f, %3.2f}",$arrayRefReal->[$i], $arrayRefImag->[$i]);
71 if ( $i != $arrayLen-1 ) {
79 #--------------------------------------------------------------------------
81 #--------------------------------------------------------------------------
95 for ( my $i = 0; $i < $opts{"size"}; $i++ ) {
96 my $value_real1 = (rand(9.0));
97 my $value_imag1 = (rand(9.0));
98 my $value_real2 = (rand(9.0));
99 my $value_imag2 = (rand(9.0));
100 push( @values_real1, $value_real1 );
101 push( @values_imag1, $value_imag1 );
102 push( @values_real2, $value_real2 );
103 push( @values_imag2, $value_imag2 );
104 push( @product_real, ($value_real1 * $value_real2) - ($value_imag1 * $value_imag2));
105 push( @product_imag, ($value_imag1 * $value_real2) + ($value_real1 * $value_imag2));
109 print "\n\#define DATA_SIZE ".$opts{"size"}." \n\n";
110 printArray
( "input1_data", \
@values_real1, \
@values_imag1 );
111 printArray
( "input2_data", \
@values_real2, \
@values_imag2 );
112 printArray
( "verify_data", \
@product_real, \
@product_imag );