-# isnanf.m4 serial 11
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
+# isnanf.m4 serial 14
+dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
ISNANF_LIBM=-lm
fi
fi
+ dnl The variable gl_func_isnanf set here is used by isnan.m4.
if test $gl_cv_func_isnanf_no_libm = yes \
|| test $gl_cv_func_isnanf_in_libm = yes; then
save_LIBS="$LIBS"
fi
if test $gl_func_isnanf != yes; then
HAVE_ISNANF=0
- gl_BUILD_ISNANF
fi
AC_SUBST([ISNANF_LIBM])
])
*) false;;
esac
}; then
+ gl_func_isnanf_no_libm=yes
AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1],
[Define if the isnan(float) function is available in libc.])
else
- gl_BUILD_ISNANF
+ gl_func_isnanf_no_libm=no
fi
])
-dnl Pull in replacement isnanf definition. It does not need -lm.
-AC_DEFUN([gl_BUILD_ISNANF],
+dnl Prerequisites of replacement isnanf definition. It does not need -lm.
+AC_DEFUN([gl_PREREQ_ISNANF],
[
- AC_LIBOBJ([isnanf])
gl_FLOAT_EXPONENT_LOCATION
])
typedef union { unsigned int word[NWORDS]; float value; } memory_float;
int main()
{
- memory_float m;
+ int result = 0;
if (isnanf (1.0f / 0.0f))
- return 1;
+ result |= 1;
if (!isnanf (NaN ()))
- return 1;
+ result |= 2;
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
/* The isnanf function should be immune against changes in the sign bit and
a sign bit or a mantissa bit. */
if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
{
+ memory_float m;
+
m.value = NaN ();
/* Set the bits below the exponent to 01111...111. */
m.word[0] &= -1U << FLT_EXPBIT0_BIT;
m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1;
if (!isnanf (m.value))
- return 1;
+ result |= 4;
}
#endif
- return 0;
+ return result;
}]])],
[gl_cv_func_isnanf_works=yes],
[gl_cv_func_isnanf_works=no],