]> Savannah Git Hosting - gnulib.git/commitdiff
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 edecba612904a5d8d24913904870e465b4f96887..a8ea7df278345ae9552e0658d553b36cfa35aa34 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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'.
index 95947f464a1a8fcf13a697813908c8abf673c72f..285b8042d59b4f4b6c5bdad6ab132d426daceda8 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 4b5329fc43544354dea0e7a1734ee3f114969a88..80c7b18af4738efb3ddd32afd8a871bc22777511 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 048a815a4c65c4fe8317a97818df4f5a857afb76..f3d1fd3ef558986df94f8da22df39c29232a9d07 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