aboutsummaryrefslogtreecommitdiff
path: root/libiberty/copysign.c
diff options
context:
space:
mode:
Diffstat (limited to 'libiberty/copysign.c')
-rw-r--r--libiberty/copysign.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libiberty/copysign.c b/libiberty/copysign.c
index 0b5f8c3..5c48a54 100644
--- a/libiberty/copysign.c
+++ b/libiberty/copysign.c
@@ -129,6 +129,7 @@ typedef union
} __ieee_float_shape_type;
#endif
+#if defined(__IEEE_BIG_ENDIAN) || defined(__IEEE_LITTLE_ENDIAN)
double DEFUN(copysign, (x, y), double x AND double y)
{
@@ -138,3 +139,14 @@ double DEFUN(copysign, (x, y), double x AND double y)
a.number.sign =b.number.sign;
return a.value;
}
+
+#else
+
+double DEFUN(copysign, (x, y), double x AND double y)
+{
+ if ((x < 0 && y > 0) || (x > 0 && y < 0))
+ return -x;
+ return x;
+}
+
+#endif