+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ copysignl: Simplify for platforms where 'long double' == 'double'.
+ * lib/copysignl.c (copysignl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative.
+ * m4/copysignl.m4 (gl_FUNC_COPYSIGNL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine COPYSIGNL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/copysignl (Depends-on): Add copysign. Update conditions.
+
2011-10-09 Bruno Haible <bruno@clisp.org>
Tests for module 'rintl'.
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+copysignl (long double x, long double y)
+{
+ return copysign (x, y);
+}
+
+#else
+
long double
copysignl (long double x, long double y)
{
return (signbit (x) != signbit (y) ? - x : x);
}
+
+#endif
-# copysignl.m4 serial 1
+# copysignl.m4 serial 2
dnl Copyright (C) 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,
AC_DEFUN([gl_FUNC_COPYSIGNL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
dnl Determine COPYSIGNL_LIBM.
gl_MATHFUNC([copysignl], [long double], [(long double, long double)])
if test $gl_cv_func_copysignl_no_libm = no \
&& test $gl_cv_func_copysignl_in_libm = no; then
HAVE_COPYSIGNL=0
- COPYSIGNL_LIBM=
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_COPYSIGN])
+ COPYSIGNL_LIBM="$COPYSIGN_LIBM"
+ else
+ COPYSIGNL_LIBM=
+ fi
fi
AC_SUBST([COPYSIGNL_LIBM])
])
Depends-on:
math
-signbit [test $HAVE_COPYSIGNL = 0]
+copysign [test $HAVE_COPYSIGNL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+signbit [test $HAVE_COPYSIGNL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_COPYSIGNL