summaryrefslogtreecommitdiff
path: root/n/asserv/src/dsp_check.pl
diff options
context:
space:
mode:
authorschodet2004-11-07 12:49:10 +0000
committerschodet2004-11-07 12:49:10 +0000
commit5b4e5290c4c840f79722691c584cafc5c4223db0 (patch)
treed775d29bd540a8cd0b9823bbddc17e359cc29076 /n/asserv/src/dsp_check.pl
parente7503d02686ce5b4bf01bd8b55e2eb2cda1c3ea6 (diff)
Fixed and tested mul_f824.
Diffstat (limited to 'n/asserv/src/dsp_check.pl')
-rw-r--r--n/asserv/src/dsp_check.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/n/asserv/src/dsp_check.pl b/n/asserv/src/dsp_check.pl
index 69384e2..738d32e 100644
--- a/n/asserv/src/dsp_check.pl
+++ b/n/asserv/src/dsp_check.pl
@@ -24,6 +24,27 @@ sub check_mul
}
}
+sub check_mul_f824
+{
+ my ($a, $b, $r) = @_;
+ $a = $a / (1 << 24);
+ $b = $b / (1 << 24);
+ my $m = floor ($a * $b * (1 << 24));
+ if ($m > (1 << 31) - 1 || $m < -(1 << 31))
+ {
+ print "overflow $a * $b = $r ($m)\n";
+ }
+ elsif ($m == $r)
+ {
+ print "pass $a * $b = $r\n";
+ }
+ else
+ {
+ print "fail $a * $b = $r ($m)\n";
+ $fail = 1;
+ }
+}
+
while (<>)
{
chomp;
@@ -39,6 +60,21 @@ while (<>)
check_mul $a, $b, $r;
check_mul -$a, $b, $R;
}
+ if (/^A (-?\d+)$/)
+ {
+ my $a = $1;
+ $_ = <>; chomp;
+ next unless (/^B (-?\d+)$/);
+ my $b = $1;
+ $_ = <>; chomp;
+ next unless (/^r (-?\d+)$/);
+ my $r = $1;
+ $_ = <>; chomp;
+ next unless (/^R (-?\d+)$/);
+ my $R = $1;
+ check_mul_f824 $a, $b, $r;
+ check_mul_f824 -$a, $b, $R;
+ }
}
if ($fail)