From babc7c33c11fb1f6b2e9bf0bfcf7e2359f0a71f6 Mon Sep 17 00:00:00 2001 From: bel2125 <bel2125@gmail.com> Date: Wed, 30 Aug 2017 01:00:30 +0200 Subject: [PATCH] Define INFINITY and NAN as macro --- lib/fpclassify.c | 2 ++ lib/libcompat.h | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) 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 -- 2.40.0