NaN fix
authorClaus Gittinger <cg@exept.de>
Tue, 03 Dec 2019 19:07:09 +0100
changeset 25048 500ca1e2ad84
parent 25047 df44d7be428f
child 25049 1c82be43aa8b
NaN fix
ShortFloat.st
--- a/ShortFloat.st	Tue Dec 03 19:05:09 2019 +0100
+++ b/ShortFloat.st	Tue Dec 03 19:07:09 2019 +0100
@@ -76,8 +76,11 @@
  */
 # ifndef isnan
 #  define isnan(x)      \
-	((((unsigned int *)(&x))[0] == 0x00000000) && \
-	 (((unsigned int *)(&x))[1] == 0xFFF80000))
+	((((unsigned int *)(&x))[1] & 0x7FF80000) == 0x7FF80000)
+// old, invalid definition
+// #  define isnan(x)      \
+//         ((((unsigned int *)(&x))[0] == 0x00000000) && \
+//          (((unsigned int *)(&x))[1] == 0xFFF80000))
 # endif
 
 # ifndef isPositiveInfinity
@@ -104,7 +107,9 @@
 
 # ifndef isnanf
 #  define isnanf(x)      \
-	(((unsigned int *)(&x))[0] == 0xFFC00000)
+	(((unsigned int *)(&x))[0] & 0x7FC00000 == 0x7FC00000)
+// old, invalid definition
+//        (((unsigned int *)(&x))[0] == 0xFFC00000)
 # endif
 
 # ifndef isPositiveInfinityf