+2014-04-16 Assaf Gordon <agordon@wi.mit.edu>
+
+ expl: avoid incorrect expl(small_value) on OpenBSD 5.4
+ * m4/expl.m4 (gl_FUNC_EXPL): Add a check for this condition.
+ * doc/posix-functions/expl.texi: Mention the workaround.
+
2014-04-12 Paul Eggert <eggert@cs.ucla.edu>
xalloc: allow x2nrealloc (P, PN, S) where P && !*PN
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function returns NaN for small operands:
+OpenBSD 5.4.
+@item
This function is only defined as a macro with arguments on some platforms:
MSVC 9.
@item
EXPL_LIBM=-lm
fi
fi
+ dnl On OpenBSD5.4 the system's native expl() is buggy:
+ dnl it returns 'nan' for small values. Test for this anomaly.
+ if test $gl_cv_func_expl_no_libm = yes \
+ || test $gl_cv_func_expl_in_libm = yes; then
+ AC_CACHE_CHECK([whether expl() breaks with small values],
+ [gl_cv_func_expl_buggy],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$EXPL_LIBM"
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <math.h>]],
+ [[return isnan(expl(-1.0))||
+ isnan(expl(-0.8))||
+ isnan(expl(-0.4)); ]])],
+ [gl_cv_func_expl_buggy=no], [gl_cv_func_expl_buggy=yes],
+ [case $host_os in
+ openbsd*) gl_cv_func_expl_buggy="guessing yes";;
+ *) gl_cv_func_expl_buggy="guessing no";;
+ esac])
+ LIBS="$save_LIBS"
+ ])
+ case "$gl_cv_func_expl_buggy" in
+ *yes)
+ gl_cv_func_expl_in_libm=no
+ gl_cv_func_expl_no_libm=no ;;
+ esac
+ fi
if test $gl_cv_func_expl_no_libm = yes \
|| test $gl_cv_func_expl_in_libm = yes; then
dnl Also check whether it's declared.