]> granicus.if.org Git - check/commitdiff
Some preprocessor magic for defining INFINITY and NAN
authorbel2125 <bel2125@gmail.com>
Wed, 30 Aug 2017 14:04:21 +0000 (16:04 +0200)
committerbel2125 <bel2125@gmail.com>
Wed, 30 Aug 2017 14:04:21 +0000 (16:04 +0200)
lib/fpclassify.c
lib/libcompat.h

index e1f61056e4e2d6de5d362d791648117bf5674eb0..800f2243489e835e1ec7537b16a97e6ac66c7654 100644 (file)
@@ -7,7 +7,9 @@
 
 #include "libcompat.h"
 
-#if !defined(isnan) || !defined(isinf) || !defined(isfinite)
+double DOUBLE_ZERO = 0.0;
+
+#if defined(NEED_fpclassify)
 
 #if defined(HAVE_STDINT_H)
 #include <stdint.h>
@@ -18,8 +20,6 @@ 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 0d0797dfe8664b7648d7927fd79f9da037b587d5..050f29e9facdbfc3de07bda476a04ad8f1302875 100644 (file)
 #include <math.h>
 
 /* However, some older Visual Studio Versions do not */
-#if !defined(INFINITY)
+#if !defined(INFINITY) || !defined(NAN)
 extern double DOUBLE_ZERO;
 #define INFINITY (1.0/DOUBLE_ZERO)
-#endif
-#if !defined(NAN)
-extern double DOUBLE_ZERO;
 #define NAN (DOUBLE_ZERO/DOUBLE_ZERO)
 #endif
 #if !defined(isnan) || !defined(isinf) || !defined(isfinite)
+#define NEED_fpclassify
 #define FP_INFINITE (1)
 #define FP_NAN (2)
 #define FP_ZERO (4)