]> granicus.if.org Git - check/commitdiff
Define INFINITY and NAN as macro
authorbel2125 <bel2125@gmail.com>
Tue, 29 Aug 2017 23:00:30 +0000 (01:00 +0200)
committerbel2125 <bel2125@gmail.com>
Tue, 29 Aug 2017 23:00:30 +0000 (01:00 +0200)
lib/fpclassify.c
lib/libcompat.h

index 9c5fdfcc0e71806e7f83589ebe640043e98f556f..e1f61056e4e2d6de5d362d791648117bf5674eb0 100644 (file)
@@ -18,6 +18,8 @@ typedef unsigned __int64 bitfield64;
 typedef unsigned long long bitfield64;
 #endif
 
+double DOUBLE_ZERO = 0.0;
+
 static bitfield64 ms = 0x8000000000000000;
 static bitfield64 me = 0x7FF0000000000000;
 static bitfield64 mf = 0x000FFFFFFFFFFFFF;
index 4408774642d72507a2474db9f19e6bd82d8b31bd..0d0797dfe8664b7648d7927fd79f9da037b587d5 100644 (file)
 
 /* However, some older Visual Studio Versions do not */
 #if !defined(INFINITY)
-double ZERO = 0.0;
-double INFINITY = 1.0 / ZERO;
+extern double DOUBLE_ZERO;
+#define INFINITY (1.0/DOUBLE_ZERO)
 #endif
 #if !defined(NAN)
-double NAN = INFINITY * ZERO;
+extern double DOUBLE_ZERO;
+#define NAN (DOUBLE_ZERO/DOUBLE_ZERO)
 #endif
 #if !defined(isnan) || !defined(isinf) || !defined(isfinite)
 #define FP_INFINITE (1)
@@ -90,7 +91,7 @@ double NAN = INFINITY * ZERO;
 #define FP_NORMAL (8)
 #define FP_SUBNORMAL (16)
 #define isnan(x) ((fpclassify((double)(x)) & FP_NAN) == FP_NAN)
-#define isnan(x) ((fpclassify((double)(x)) & FP_INFINITE) == FP_INFINITE)
+#define isinf(x) ((fpclassify((double)(x)) & FP_INFINITE) == FP_INFINITE)
 #define isfinite(x) ((fpclassify((double)(x)) & (FP_NAN|FP_INFINITE)) == 0)
 #endif