diff options
Diffstat (limited to 'libiberty/copysign.c')
-rw-r--r-- | libiberty/copysign.c | 12 |
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 |