copysignl: Simplify for platforms where 'long double' == 'double'.
authorBruno Haible <bruno@clisp.org>
Sun, 9 Oct 2011 22:25:43 +0000 (00:25 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 9 Oct 2011 22:25:43 +0000 (00:25 +0200)
* 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.

ChangeLog
lib/copysignl.c
m4/copysignl.m4
modules/copysignl

index edecba6..a8ea7df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 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'.
        * modules/rintl-tests: New file.
        * tests/test-rintl.c: New file.
index 95947f4..285b804 100644 (file)
 /* 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
index 4b5329f..80c7b18 100644 (file)
@@ -1,4 +1,4 @@
-# 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,
@@ -7,13 +7,19 @@ dnl with or without modifications, as long as this notice is preserved.
 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])
 ])
index 048a815..f3d1fd3 100644 (file)
@@ -8,7 +8,8 @@ m4/mathfunc.m4
 
 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