* doc/posix-functions/truncl.texi: Mention the OSF/1 5.1 bug.
* m4/truncl.m4 (gl_FUNC_TRUNCL): If gl_FUNC_TRUNCL_IEEE is also used,
test whether truncl works according to ISO C 99 with IEC 60559.
* m4/truncl-ieee.m4: New file.
* modules/truncl-ieee (Files): Add it and m4/minus-zero.m4,
m4/signbit.m4.
(configure.ac): Invoke gl_FUNC_TRUNCL_IEEE.
+2010-12-25 Bruno Haible <bruno@clisp.org>
+
+ truncl-ieee: Make it work on OSF/1 5.1 with cc.
+ * doc/posix-functions/truncl.texi: Mention the OSF/1 5.1 bug.
+ * m4/truncl.m4 (gl_FUNC_TRUNCL): If gl_FUNC_TRUNCL_IEEE is also used,
+ test whether truncl works according to ISO C 99 with IEC 60559.
+ * m4/truncl-ieee.m4: New file.
+ * modules/truncl-ieee (Files): Add it and m4/minus-zero.m4,
+ m4/signbit.m4.
+ (configure.ac): Invoke gl_FUNC_TRUNCL_IEEE.
+
2010-12-25 Bruno Haible <bruno@clisp.org>
ceill-ieee: Make it work on OSF/1 5.1 with cc.
Gnulib module: truncl or truncl-ieee
-Portability problems fixed by Gnulib:
+Portability problems fixed by either Gnulib module @code{truncl} or @code{truncl-ieee}:
@itemize
@item
This function is missing on some platforms:
OSF/1 4.0.
@end itemize
+Portability problems fixed by Gnulib module @code{truncl-ieee}:
+@itemize
+@item
+This function returns a positive zero for an argument between -1 and 0
+on some platforms:
+OSF/1 5.1.
+@end itemize
+
Portability problems not fixed by Gnulib:
@itemize
@end itemize
--- /dev/null
+# truncl-ieee.m4 serial 1
+dnl Copyright (C) 2010 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.
+
+dnl This macro is in a separate file (not in truncl.m4 and not inlined in the
+dnl module description), so that gl_FUNC_TRUNCL can test whether 'aclocal' has
+dnl found uses of this macro.
+
+AC_DEFUN([gl_FUNC_TRUNCL_IEEE],
+[
+ m4_divert_text([INIT_PREPARE], [gl_truncl_required=ieee])
+ AC_REQUIRE([gl_FUNC_TRUNCL])
+])
-# truncl.m4 serial 5
+# truncl.m4 serial 6
dnl Copyright (C) 2007-2008, 2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_TRUNCL],
[
+ m4_divert_text([DEFAULTS], [gl_truncl_required=plain])
AC_REQUIRE([gl_MATH_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
dnl Persuade glibc <math.h> to declare truncl().
*yes) ;;
*) REPLACE_TRUNCL=1 ;;
esac
+ m4_ifdef([gl_FUNC_TRUNCL_IEEE], [
+ if test $gl_truncl_required = ieee && test $REPLACE_TRUNCL = 0; then
+ AC_CACHE_CHECK([whether truncl works according to ISO C 99 with IEC 60559],
+ [gl_cv_func_truncl_ieee],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $TRUNCL_LIBM"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#ifndef __NO_MATH_INLINES
+# define __NO_MATH_INLINES 1 /* for glibc */
+#endif
+#include <math.h>
+]gl_LONG_DOUBLE_MINUS_ZERO_CODE[
+]gl_LONG_DOUBLE_SIGNBIT_CODE[
+int main()
+{
+ /* Test whether truncl (-0.3L) is -0.0L. */
+ if (signbitl (minus_zerol) && !signbitl (truncl (-0.3L)))
+ return 1;
+ return 0;
+}
+ ]])],
+ [gl_cv_func_truncl_ieee=yes],
+ [gl_cv_func_truncl_ieee=no],
+ [gl_cv_func_truncl_ieee="guessing no"])
+ LIBS="$save_LIBS"
+ ])
+ case "$gl_cv_func_truncl_ieee" in
+ *yes) ;;
+ *) REPLACE_TRUNCL=1 ;;
+ esac
+ fi
+ ])
else
HAVE_DECL_TRUNCL=0
fi
truncl() function according to ISO C 99 with IEC 60559.
Files:
+m4/truncl-ieee.m4
+m4/minus-zero.m4
+m4/signbit.m4
Depends-on:
truncl
configure.ac:
+gl_FUNC_TRUNCL_IEEE
Makefile.am: