From 5b4e5290c4c840f79722691c584cafc5c4223db0 Mon Sep 17 00:00:00 2001 From: schodet Date: Sun, 7 Nov 2004 12:49:10 +0000 Subject: Fixed and tested mul_f824. --- n/asserv/src/dsp_check.pl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'n/asserv/src/dsp_check.pl') 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) -- cgit v1.2.3