summaryrefslogtreecommitdiff
path: root/lib/copysignl.c
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2011-10-10 00:25:43 +0200
committerBruno Haible <bruno@clisp.org>2011-10-10 00:25:43 +0200
commit472322ae1a1ca95df1cc9b80031348e04fc5b6bc (patch)
tree098bb224e250fcdf0e09612f0705fcb683b41f22 /lib/copysignl.c
parentf6fd929e6225babbe65d20332823e9d602bc3b1a (diff)
downloadgnulib-472322ae1a1ca95df1cc9b80031348e04fc5b6bc.tar.gz
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.
Diffstat (limited to 'lib/copysignl.c')
-rw-r--r--lib/copysignl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/copysignl.c b/lib/copysignl.c
index 95947f464a..285b8042d5 100644
--- a/lib/copysignl.c
+++ b/lib/copysignl.c
@@ -19,8 +19,20 @@
/* 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