support/regression/tests/simplefloat.c: fix division for host
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 30 Apr 2003 19:56:08 +0000 (19:56 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 30 Apr 2003 19:56:08 +0000 (19:56 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2579 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
support/regression/tests/simplefloat.c

index 5affa4d760d0d22fefb0fc8852e9c312bb2e4b18..0250f43b32e8d13d9c89eff44eedf89b300c728f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2003-04-30  Bernhard Held <bernhard@bernhardheld.de>
 
        * support/regression/tests/float.c: workaround 33 bit hex constant
+       * support/regression/tests/simplefloat.c: fix division for host
 
 2003-04-29  Scott Dattalo  <scott@dattalo.com>
 
index c5dc5f25d0d46cec8066765890f0133aee031f2d..b19c8055a7d78e4fd0c6e8f3ccce3a4838148f68 100644 (file)
@@ -1,6 +1,17 @@
 /** Simple set of tests for floating pt.
  */
 #include <testfwk.h>
+#include <math.h>
+
+#if (PORT_HOST)
+#  define FCOMP(a,b) (fabsf((a) - (b)) < ((b) * 1e-10))
+#else
+   /* Testing floats for equality is normally a bug,
+      but too keep this test simple we dare it. And
+      it works with the exception of the division on
+      the host port. */
+#  define FCOMP(a,b) ((a) == (b))
+#endif
 
 void
 testCmp(void)
@@ -19,8 +30,7 @@ testCmp(void)
 void
 testDiv(void)
 {
-#if !PORT_HOST
-#if defined __mcs51 && !defined (SDCC_STACK_AUTO)
+#if defined (__mcs51) && !defined (SDCC_STACK_AUTO)
   idata at 0xd0
 #endif
   volatile float left;
@@ -29,12 +39,11 @@ testDiv(void)
   left = 17;
   right = 343;
 
-  ASSERT(left/right == (17.0/343.0));
-  ASSERT(right/left == (343.0/17.0));
+  ASSERT(FCOMP(left/right, (17.0/343.0)));
+  ASSERT(FCOMP(right/left, (343.0/17.0)));
 
   right = 17;
-  ASSERT(left/right == 1.0);
-#endif
+  ASSERT(FCOMP(left/right, 1.0));
 }
 
 void