# HG changeset patch # User Matti Hamalainen # Date 1526373226 -10800 # Node ID 61246926756aa149deed0613afd1fe7f513002aa # Parent c29adf5ce24002adf36b13e5a6f6c17de14e0149 Slight improvements to fptest. diff -r c29adf5ce240 -r 61246926756a tests/fptest.c --- 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; }