#include <float.h>
-#ifndef HAVE_ISNAN
-/* it seems of the supported compilers only */
-/* MSVC does not have isnan(), but it does
-/* have _isnan() which does the same as isnan() */
+#ifndef HAVE_DECL_ISNAN
+/* it seems of the supported compilers only
+ * MSVC does not have isnan(), but it does
+ * have _isnan() which does the same as isnan()
+ */
static inline gboolean
isnan (double x)
{
}
#endif
-#ifndef HAVE_ISINF
-/* Unfortunately MSVC does not have finite() */
-/* but it does have _finite() which is the same */
-/* as finite() except when x is a NaN */
+#ifndef HAVE_DECL_ISINF
+/* Unfortunately MSVC does not have finite()
+ * but it does have _finite() which is the same
+ * as finite() except when x is a NaN
+ */
static inline gboolean
isinf (double x)
{
return (!_finite (x) && !_isnan (x));
}
#endif
+
+/* Workaround for round() for non-GCC/non-C99 compilers */
+#ifndef HAVE_ROUND
+static inline double
+round (double x)
+{
+ if (x >= 0)
+ return floor (x + 0.5);
+ else
+ return ceil (x - 0.5);
+}
+#endif