diff lib/math.in.h @ 16468:5ad3cc13d9c3

modff-ieee: Work around test failures on *BSD, IRIX, OSF/1, etc. * m4/modff-ieee.m4: New file. * m4/modff.m4 (gl_FUNC_MODFF): If gl_FUNC_MODFF_IEEE is present, test whether modff works with NaN and Inf. Replace it if not. * lib/math.in.h (modff): Override if REPLACE_MODFF is 1. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_MODFF. * modules/math (Makefile.am): Substitute REPLACE_MODFF. * modules/modff (configure.ac): Consider REPLACE_MODFF. (Depends-on): Update dependencies. * modules/modff-ieee (Files): Add m4/modff-ieee.m4, m4/minus-zero.m4, m4/signbit.m4. (Depends-on): Add modf-ieee. (configure.ac): Invoke gl_FUNC_MODFF_IEEE. * doc/posix-functions/modff.texi: Mention the modff-ieee module.
author Bruno Haible <bruno@clisp.org>
date Mon, 27 Feb 2012 03:13:00 +0100 (2012-02-27)
parents c5b61bdb6da4
children 1f4605f1f3ae
line wrap: on
line diff
--- a/lib/math.in.h
+++ b/lib/math.in.h
@@ -866,11 +866,20 @@
 
 
 #if @GNULIB_MODFF@
-# if !@HAVE_MODFF@
-#  undef modff
+# if @REPLACE_MODFF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef modff
+#   define modff rpl_modff
+#  endif
+_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
+# else
+#  if !@HAVE_MODFF@
+#   undef modff
 _GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
 # endif
-_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
 _GL_CXXALIASWARN (modff);
 #elif defined GNULIB_POSIXCHECK
 # undef modff