diff options
Diffstat (limited to 'libquadmath/math/copysignq.c')
-rw-r--r-- | libquadmath/math/copysignq.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/libquadmath/math/copysignq.c b/libquadmath/math/copysignq.c index 054de2d2eb3..935264286eb 100644 --- a/libquadmath/math/copysignq.c +++ b/libquadmath/math/copysignq.c @@ -1,4 +1,4 @@ -/* copysignq.c -- __float128 version of s_copysign.c. +/* s_copysignl.c -- long double version of s_copysign.c. * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz. */ @@ -13,14 +13,26 @@ * ==================================================== */ +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: $"; +#endif + +/* + * copysignq(long double x, long double y) + * copysignq(x,y) returns a value with the magnitude of x and + * with the sign bit of y. + */ + +#define NO_MATH_REDIRECT + #include "quadmath-imp.h" -__float128 -copysignq (__float128 x, __float128 y) +__float128 copysignq(__float128 x, __float128 y) { - uint64_t hx,hy; - GET_FLT128_MSW64(hx,x); - GET_FLT128_MSW64(hy,y); - SET_FLT128_MSW64(x,(hx&0x7fffffffffffffffULL)|(hy&0x8000000000000000ULL)); - return x; + uint64_t hx,hy; + GET_FLT128_MSW64(hx,x); + GET_FLT128_MSW64(hy,y); + SET_FLT128_MSW64(x,(hx&0x7fffffffffffffffULL) + |(hy&0x8000000000000000ULL)); + return x; } |