diff options
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_ceill.c | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_copysignl.c | 15 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_fabsl.c | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_floorl.c | 8 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_roundl.c | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_truncl.c | 7 |
6 files changed, 14 insertions, 34 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_ceill.c b/sysdeps/ieee754/ldbl-128ibm/s_ceill.c index 035e4f52ce..6252e9140b 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_ceill.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_ceill.c @@ -1,6 +1,6 @@ /* Ceil (round to +inf) long double floating-point values. IBM extended format long double version. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,7 +19,6 @@ 02111-1307 USA. */ #include <math.h> -#include <fenv_libc.h> #include <math_ldbl_opt.h> #include <float.h> #include <ieee754.h> @@ -44,11 +43,9 @@ __ceill (x) __builtin_inf ()), 1)) { double orig_xh; - int save_round = fegetround (); /* Long double arithmetic, including the canonicalisation below, only works in round-to-nearest mode. */ - fesetround (FE_TONEAREST); /* Convert the high double to integer. */ orig_xh = xh; @@ -81,8 +78,6 @@ __ceill (x) /* Ensure we return -0 rather than +0 when appropriate. */ if (orig_xh < 0.0) xh = -__builtin_fabs (xh); - - fesetround (save_round); } return ldbl_pack (xh, xl); diff --git a/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c b/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c index 7e7b44168d..1a198c16e8 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c @@ -25,6 +25,7 @@ static char rcsid[] = "$NetBSD: $"; #include "math.h" #include "math_private.h" +#include <math_ldbl_opt.h> #ifdef __STDC__ long double __copysignl(long double x, long double y) @@ -33,13 +34,13 @@ static char rcsid[] = "$NetBSD: $"; long double x,y; #endif { - if (y < 0.0) - { - if (x >= 0.0) - x = -x; - } - else if (x < 0.0) + if (signbit (x) != signbit (y)) x = -x; return x; } -weak_alias (__copysignl, copysignl) + +#ifdef IS_IN_libm +long_double_symbol (libm, __copysignl, copysignl); +#else +long_double_symbol (libc, __copysignl, copysignl); +#endif diff --git a/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c b/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c index 62663125ee..89eb205101 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c @@ -37,7 +37,7 @@ static char rcsid[] = "$NetBSD: $"; GET_LDOUBLE_WORDS64(hx,lx,x); lx = lx ^ ( hx & 0x8000000000000000LL ); hx = hx & 0x7fffffffffffffffLL; - SET_LDOUBLE_WORDS64(hx,lx,x); - return x; + SET_LDOUBLE_WORDS64(x,hx,lx); + return x; } long_double_symbol (libm, __fabsl, fabsl); diff --git a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c index 4c4ae9b035..eff7572405 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c @@ -1,6 +1,6 @@ /* Round to int long double floating-point values. IBM extended format long double version. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,7 +19,6 @@ 02111-1307 USA. */ #include <math.h> -#include <fenv_libc.h> #include <math_ldbl_opt.h> #include <float.h> #include <ieee754.h> @@ -43,11 +42,8 @@ __floorl (x) && __builtin_isless (__builtin_fabs (xh), __builtin_inf ()), 1)) { - int save_round = fegetround (); - /* Long double arithmetic, including the canonicalisation below, only works in round-to-nearest mode. */ - fesetround (FE_TONEAREST); /* Convert the high double to integer. */ hi = ldbl_nearbyint (xh); @@ -75,8 +71,6 @@ __floorl (x) xh = hi; xl = lo; ldbl_canonicalize (&xh, &xl); - - fesetround (save_round); } return ldbl_pack (xh, xl); diff --git a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c index 0880e6ee22..d633bfa4c8 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c @@ -1,6 +1,6 @@ /* Round to int long double floating-point values. IBM extended format long double version. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ when it's coded in C. */ #include <math.h> -#include <fenv_libc.h> #include <math_ldbl_opt.h> #include <float.h> #include <ieee754.h> @@ -47,11 +46,9 @@ __roundl (x) __builtin_inf ()), 1)) { double orig_xh; - int save_round = fegetround (); /* Long double arithmetic, including the canonicalisation below, only works in round-to-nearest mode. */ - fesetround (FE_TONEAREST); /* Convert the high double to integer. */ orig_xh = xh; @@ -88,8 +85,6 @@ __roundl (x) xh = hi; xl = lo; ldbl_canonicalize (&xh, &xl); - - fesetround (save_round); } return ldbl_pack (xh, xl); diff --git a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c index d7bc47ee0d..ceace0d43e 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c @@ -1,6 +1,6 @@ /* Truncate (toward zero) long double floating-point values. IBM extended format long double version. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ when it's coded in C. */ #include <math.h> -#include <fenv_libc.h> #include <math_ldbl_opt.h> #include <float.h> #include <ieee754.h> @@ -47,11 +46,9 @@ __truncl (x) __builtin_inf ()), 1)) { double orig_xh; - int save_round = fegetround (); /* Long double arithmetic, including the canonicalisation below, only works in round-to-nearest mode. */ - fesetround (FE_TONEAREST); /* Convert the high double to integer. */ orig_xh = xh; @@ -92,8 +89,6 @@ __truncl (x) /* Ensure we return -0 rather than +0 when appropriate. */ if (orig_xh < 0.0) xh = -__builtin_fabs (xh); - - fesetround (save_round); } return ldbl_pack (xh, xl); |