From: bel2125 Date: Wed, 30 Aug 2017 14:04:21 +0000 (+0200) Subject: Some preprocessor magic for defining INFINITY and NAN X-Git-Tag: 0.12.0~4^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8beed15c83116386a89f482c26b002807e438502;p=check Some preprocessor magic for defining INFINITY and NAN --- diff --git a/lib/fpclassify.c b/lib/fpclassify.c index e1f6105..800f224 100644 --- a/lib/fpclassify.c +++ b/lib/fpclassify.c @@ -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 @@ -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; diff --git a/lib/libcompat.h b/lib/libcompat.h index 0d0797d..050f29e 100644 --- a/lib/libcompat.h +++ b/lib/libcompat.h @@ -76,15 +76,13 @@ #include /* 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)