diff options
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/k_sincosl.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/k_sincosl.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c index fc1ead6597..3ba9d7e907 100644 --- a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c +++ b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c @@ -100,9 +100,12 @@ __kernel_sincosl(long double x, long double y, long double *sinx, long double *c { long double h, l, z, sin_l, cos_l_m1; int64_t ix; - u_int32_t tix, hix, index; - GET_LDOUBLE_MSW64 (ix, x); - tix = ((u_int64_t)ix) >> 32; + uint32_t tix, hix, index; + double xhi, hhi; + + xhi = ldbl_high (x); + EXTRACT_WORDS64 (ix, xhi); + tix = ((uint64_t)ix) >> 32; tix &= ~0x80000000; /* tix = |x|'s high 32 bits */ if (tix < 0x3fc30000) /* |x| < 0.1484375 */ { @@ -164,7 +167,8 @@ __kernel_sincosl(long double x, long double y, long double *sinx, long double *c case 2: index = (hix - 0x3fc30000) >> 14; break; } */ - SET_LDOUBLE_WORDS64(h, ((u_int64_t)hix) << 32, 0); + INSERT_WORDS64 (hhi, ((uint64_t)hix) << 32); + h = hhi; if (iy) l = y - (h - x); else |