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