diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | math/libm-test.inc | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_remainderl.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_remquol.c | 2 |
4 files changed, 16 insertions, 0 deletions
@@ -1,3 +1,13 @@ +2016-02-19 Joseph Myers <joseph@codesourcery.com> + + [BZ #19603] + * sysdeps/ieee754/ldbl-128ibm/e_remainderl.c + (__ieee754_remainderl): Adjust sign of integer version of low part + when taking absolute value of high part. + * sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise. + * math/libm-test.inc (remainder_test_data): Add another test. + (remquo_test_data): Likewise. + 2016-02-18 Joseph Myers <joseph@codesourcery.com> [BZ #19602] diff --git a/math/libm-test.inc b/math/libm-test.inc index 3f0610d1b4..c9925fddb7 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -10392,6 +10392,7 @@ static const struct test_ff_f_data remainder_test_data[] = TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 56 TEST_ff_f (remainder, -0x1.80000000000002p1L, 2.0, 0x1.fffffffffffff8p-1L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_ff_f (remainder, 0x0.ffffffffffffffp0L, -0x1.00000000000001p0L, -0x1p-55L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), #endif TEST_ff_f (remainder, 3419, 360, 179, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), @@ -10530,6 +10531,7 @@ static const struct test_ffI_f1_data remquo_test_data[] = TEST_ffI_f1 (remquo, 3, 2, -1, 2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 56 TEST_ffI_f1 (remquo, -0x1.80000000000002p1L, 2.0, 0x1.fffffffffffff8p-1L, -2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_ffI_f1 (remquo, 0x0.ffffffffffffffp0L, -0x1.00000000000001p0L, -0x1p-55L, -1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), #endif TEST_ffI_f1 (remquo, 3419, 360, 179, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), diff --git a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c index 800416f29a..1dc59a4785 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c @@ -42,7 +42,9 @@ __ieee754_remainderl(long double x, long double p) EXTRACT_WORDS64 (hp, phi); EXTRACT_WORDS64 (lp, plo); sx = hx&0x8000000000000000ULL; + lp ^= hp & 0x8000000000000000ULL; hp &= 0x7fffffffffffffffLL; + lx ^= sx; hx &= 0x7fffffffffffffffLL; /* purge off exception values */ diff --git a/sysdeps/ieee754/ldbl-128ibm/s_remquol.c b/sysdeps/ieee754/ldbl-128ibm/s_remquol.c index 20e17cc823..14b27ca616 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_remquol.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_remquol.c @@ -43,7 +43,9 @@ __remquol (long double x, long double y, int *quo) EXTRACT_WORDS64 (ly, ylo); sx = hx & 0x8000000000000000ULL; qs = sx ^ (hy & 0x8000000000000000ULL); + ly ^= hy & 0x8000000000000000ULL; hy &= 0x7fffffffffffffffLL; + lx ^= sx; hx &= 0x7fffffffffffffffLL; /* Purge off exception values. */ |