diff --git a/src/isnan.h b/src/isnan.h
index de8b6d6299103e6962881c89fe3063782bad2d29..608f9bb561fe3b1182c32cfccb7c34a432421327 100644 (file)
--- a/src/isnan.h
+++ b/src/isnan.h
*/
#if defined(__isnan)
+# define isNaN(_a) (__isnan(_a))
+#elif defined(__APPLE__) && __GNUC__ == 3
# define isNaN(_a) (__isnan(_a)) /* MacOSX/Darwin definition < 10.4 */
#elif defined(WIN32) || defined(_isnan)
# define isNaN(_a) (_isnan(_a)) /* Win32 definition */
-#elif defined(isnan) || defined(__FreeBSD__)
+#elif defined(isnan) || defined(__FreeBSD__) || defined(__osf__)
+# define isNaN(_a) (isnan(_a)) /* GNU definition */
+#elif defined (SOLARIS_2_8) && __GNUC__ == 3 && __GNUC_MINOR__ == 2
# define isNaN(_a) (isnan(_a)) /* GNU definition */
#else
# define isNaN(_a) (std::isnan(_a))
#if defined(__isfinite)
+# define isFinite(_a) (__isfinite(_a))
+#elif defined(__APPLE__) && __GNUC__ == 3
# define isFinite(_a) (__isfinite(_a)) /* MacOSX/Darwin definition < 10.4 */
#elif defined(__sgi)
# define isFinite(_a) (_isfinite(_a))
#elif defined(isfinite)
# define isFinite(_a) (isfinite(_a))
+#elif defined(__osf__)
+# define isFinite(_a) (finite(_a) && !isNaN(_a))
+#elif defined (SOLARIS_2_8) && __GNUC__ == 3 && __GNUC_MINOR__ == 2
+#include <ieeefp.h>
+#define isFinite(_a) (finite(_a) && !isNaN(_a))
#else
# define isFinite(_a) (std::isfinite(_a))
#endif