From 7868feb67d7c2d1414cbcd84b6f02a7305a65117 Mon Sep 17 00:00:00 2001 From: schodet Date: Wed, 13 Oct 2004 00:12:18 +0000 Subject: Version toute nouvelle qu'elle est bien et bien organisée. Gestion du mode pwm simple. Gestion de la virgule fixe dans les coefs. Préparation pour les améliorations futures. Séparation dans des fichiers différents. Netoyage. --- n/asserv/src/dsp_check.pl | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 n/asserv/src/dsp_check.pl (limited to 'n/asserv/src/dsp_check.pl') diff --git a/n/asserv/src/dsp_check.pl b/n/asserv/src/dsp_check.pl new file mode 100644 index 0000000..69384e2 --- /dev/null +++ b/n/asserv/src/dsp_check.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl -w +use strict; +use POSIX qw(floor); + +my $fail = 0; + +sub check_mul +{ + my ($a, $b, $r) = @_; + $b = $b / 256; + my $m = floor ($a * $b); + if ($m > (1 << 15) - 1 || $m < -(1 << 15)) + { + 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; + if (/^m (-?\d+) (\d+)$/) + { + my ($a, $b) = ($1, $2); + $_ = <>; chomp; + next unless (/^r (-?\d+)$/); + my $r = $1; + $_ = <>; chomp; + next unless (/^R (-?\d+)$/); + my $R = $1; + check_mul $a, $b, $r; + check_mul -$a, $b, $R; + } +} + +if ($fail) +{ + print "test failled\n"; + exit 1; +} +else +{ + print "test passed\n"; + exit 0; +} -- cgit v1.2.3