Mercurial > hg > dmlib
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; }