From: bel2125 Date: Tue, 29 Aug 2017 23:00:30 +0000 (+0200) Subject: Define INFINITY and NAN as macro X-Git-Tag: 0.12.0~4^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=babc7c33c11fb1f6b2e9bf0bfcf7e2359f0a71f6;p=check Define INFINITY and NAN as macro --- diff --git a/lib/fpclassify.c b/lib/fpclassify.c index 9c5fdfc..e1f6105 100644 --- a/lib/fpclassify.c +++ b/lib/fpclassify.c @@ -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; diff --git a/lib/libcompat.h b/lib/libcompat.h index 4408774..0d0797d 100644 --- a/lib/libcompat.h +++ b/lib/libcompat.h @@ -77,11 +77,12 @@ /* 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