#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>
typedef unsigned long long bitfield64;
#endif
-double DOUBLE_ZERO = 0.0;
-
static bitfield64 ms = 0x8000000000000000;
static bitfield64 me = 0x7FF0000000000000;
static bitfield64 mf = 0x000FFFFFFFFFFFFF;
#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)