changeset 1610:61246926756a

Slight improvements to fptest.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 15 May 2018 11:33:46 +0300
parents c29adf5ce240
children 3571d4670964
files tests/fptest.c
diffstat 1 files changed, 34 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/tests/fptest.c	Mon May 14 12:42:24 2018 +0300
+++ b/tests/fptest.c	Tue May 15 11:33:46 2018 +0300
@@ -5,6 +5,8 @@
 #define FP_DW_SIZE 8
 #define FP_W0_SIZE 4
 
+static int test_number = 0;
+
 void check(const char *str, DMFixedPoint v, Sint64 dw)
 {
     DMFixedPoint *q = (DMFixedPoint *) &dw;
@@ -15,10 +17,16 @@
     if (v.dw != dw)
     {
         printf("ERROR! A test value differs from expected!\n");
-        exit(1);
     }
 }
 
+
+void header(const char *msg)
+{
+    test_number++;
+    printf("\nTEST #%d: %s\n", test_number, msg);
+}
+
 int main(int argc, char *argv[])
 {
     int i;
@@ -52,8 +60,8 @@
         return -1;
     }
     
-    // TEST #1
-    printf("\nTEST #1: set initial values\n");
+    //-----------------------------------------------
+    header("set initial values");
     FP_SETHL(a, 55, 0);
     check("a", a, 0x0000003700000000ULL);
 
@@ -63,38 +71,47 @@
     FP_DIV_R(delta, a, b);
     check("delta", delta, 0x000000004f19e33cULL);
 
-    // Test #2
-    printf("\nTEST #2: 50 x (a + delta)\n");
+    //-----------------------------------------------
+    header("50 x (a + delta)");
     for (i = 0; i < 50; i++)
     {
         FP_ADD(a, delta);
     }
     check("a end", a, 0x00000046730e61b8ULL);
 
-
-    // Test #3
-    printf("\nTEST #3: 50 x (a - delta)\n");
+    //-----------------------------------------------
+    header("50 x (a - delta)");
     for (i = 0; i < 50; i++)
     {
         FP_SUB(a, delta);
     }
     check("a end", a, 0x0000003700000000ULL);
 
-    // Test #4
-    printf("\nTEST #4: 5 x (a * delta)\n");
+    //-----------------------------------------------
+    header("5 x (a * delta)");
     for (i = 0; i < 5; i++)
     {
         FP_MUL(a, delta);
     }
     check("a end", a, 0xd644e40000000000ULL);
 
-    // Test #5
-    printf("\nTEST #4: 2 x (a / delta)\n");
-    for (i = 0; i < 2; i++)
-    {
-        FP_DIV(a, delta);
-    }
-    check("a end", a, 8ULL);
+    //-----------------------------------------------
+    header("a / 2");
+    FP_CONV(delta, 2);
+    FP_DIV(a, delta);
+    check("a end", a, 0xeb22720000000000ULL);
+
+    //-----------------------------------------------
+    header("a / 2");
+    FP_DIV(a, delta);
+    check("a end", a, 0xf591390000000000ULL);
+
+    //-----------------------------------------------
+    header("");
+    FP_SETHL(a, -200, 50);
+    FP_CONV(b, 15);
+    FP_DIV(a, b);
+    check("a end", a, 0xfffffff2aaaaaaaeULL);
 
     return 0;
 }