summaryrefslogtreecommitdiff
path: root/n/asserv/src
diff options
context:
space:
mode:
authorschodet2005-02-26 20:51:24 +0000
committerschodet2005-02-26 20:51:24 +0000
commitff57ee39d887754d9c0739df0e21ab5c8f53574e (patch)
treed364add00ba0997ca0abe50687d23afcb6a9dcb0 /n/asserv/src
parent26e64bc1bb5786e4e3638382ae1a11f0fc011374 (diff)
Ajout de sqrt.
Diffstat (limited to 'n/asserv/src')
-rw-r--r--n/asserv/src/dsp_check2.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/n/asserv/src/dsp_check2.c b/n/asserv/src/dsp_check2.c
index 92f2be0..260013a 100644
--- a/n/asserv/src/dsp_check2.c
+++ b/n/asserv/src/dsp_check2.c
@@ -23,6 +23,7 @@
*
* }}} */
#include <stdio.h>
+#include <math.h>
/* +AutoDec */
/* -AutoDec */
@@ -69,6 +70,22 @@ check_div_f824 (int d, int v, int r)
printf (" | %08x %08x %08x\n", d, v, r);
}
+void
+check_sqrt (unsigned int s, unsigned int r)
+{
+ double ds = (double) s / (1 << 8);
+ unsigned int m = sqrt (ds) * (1 << 8);
+ m &= ~0xf;
+ if (m == r)
+ printf ("pass sqrt (%u) = %u", s, r);
+ else
+ {
+ printf ("fail sqrt (%u) = %u (%u)", s, r, m);
+ failled = 1;
+ }
+ printf (" | %08x %08x %08x\n", s, r, m);
+}
+
int
peek (void)
{
@@ -126,6 +143,19 @@ main (void)
else if (!feof (stdin))
incomplete++;
}
+ else if (c == 's')
+ {
+ if (get ('s', &a) && get ('r', &r1))
+ {
+ check_sqrt (a, r1);
+ }
+ else if (!feof (stdin))
+ incomplete++;
+ }
+ else if (c == 0)
+ ;
+ else
+ printf ("unexpected character '%c'\n", c);
}
if (incomplete)
printf ("%d incomplete tests\n", incomplete);