From 5cc5677e8eaf6bad394bbf0bc823874a58d435a3 Mon Sep 17 00:00:00 2001 From: bernhardheld Date: Sun, 18 Nov 2001 19:28:59 +0000 Subject: [PATCH] port to mcs51 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1618 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- support/regression/tests/float.c | 84 ++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/support/regression/tests/float.c b/support/regression/tests/float.c index cfa0eda5..827ac783 100644 --- a/support/regression/tests/float.c +++ b/support/regression/tests/float.c @@ -1,39 +1,59 @@ +/* Float tests. + + operation: ADD, SUB, MUL, DIV, REVDIV +*/ + #if 1 // we are in the regression tests #include #define DEBUG(x) + + #define {operation} 1 #else // we are standalone #include #define DEBUG(x) x #define ASSERT(x) + #define ADD 1 + #define SUB 1 + #define MUL 1 + #define DIV 1 + #define REVDIV 1 +#endif + +#ifdef __mcs51 +#define STORAGE xdata +#define XDATA xdata +#else +#define STORAGE +#define XDATA #endif -volatile float left, right, result; +XDATA volatile float left, right, result; struct { float left, right, add, sub, mul, div, revdiv; -} cases[]={ +} STORAGE cases[]={ // left right add sub mul div revdiv { 12.8, 25.6, 38.4, -12.8, 327.68, 0.5, 2}, { 12.8, -25.6, -12.8, 38.4, -327.68, -0.5, -2}, { -12.8, 25.6, 12.8, -38.4, -327.68, -0.5, -2}, { -12.8, -25.6, -38.4, 12.8, 327.68, 0.5, 2}, { 100.0, 10.0, 110.0, 90.0, 1000.00, 10.0, 0.1}, -//{ 1000.0, 10.0, 1010.0, 990.0, 10000.00, 100.0, 0.01}, + { 1000.0, 10.0, 1010.0, 990.0, 10000.00, 100.0, 0.01}, { 10000.0, 10.0, 10010.0, 9990.0, 100000.00, 1000.0, 0.001}, -//{ 100000.0, 10.0, 100010.0, 99990.0, 1000000.00, 10000.0, 0.0001}, + { 100000.0, 10.0, 100010.0, 99990.0, 1000000.00, 10000.0, 0.0001}, { 1000000.0, 10.0, 1000010.0, 999990.0, 10000000.00, 100000.0, 0.00001}, {10000000.0, 10.0,10000010.0, 9999990.0,100000000.00, 1000000.0, 0.000001}, { 0x100, 0x10, 0x110, 0xf0, 0x1000, 0x10, 0.0625}, -//{ 0x1000, 0x10, 0x1010, 0xff0, 0x10000, 0x100, 0.00390625}, + { 0x1000, 0x10, 0x1010, 0xff0, 0x10000, 0x100, 0.00390625}, { 0x10000, 0x10, 0x10010, 0xfff0, 0x100000, 0x1000, 0.00024414}, -//{ 0x100000, 0x10, 0x100010, 0xffff0, 0x1000000, 0x10000, 0 /* ignore */}, + { 0x100000, 0x10, 0x100010, 0xffff0, 0x1000000, 0x10000, 0 /* ignore */}, { 0x1000000, 0x10, 0x1000010, 0xfffff0, 0x10000000, 0x100000, 0 /* ignore */}, {0x10000000, 0x10,0x10000010, 0xffffff0, 0x100000000, 0x1000000, 0 /* ignore */}, }; -int tests=0, errors=0; +XDATA int tests=0, errors=0; char compare (float is, float should) { float diff = should ? is/should : 0; @@ -66,26 +86,36 @@ testFloatMath(void) float result; for (i=0; i