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