mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-17 13:00:43 +08:00
Fix ldbl-128ibm hypotl internal underflows (bug 14869).
This commit is contained in:
parent
8e27e3cc45
commit
1468ded38e
@ -1,5 +1,10 @@
|
||||
2012-11-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #14869]
|
||||
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl): Scale
|
||||
up arguments below 2**-450, not just those below 2**-500.
|
||||
* math/libm-test.inc (hypot_test): Add another test.
|
||||
|
||||
[BZ #14868]
|
||||
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl):
|
||||
Return a+b for ratio over 2**120, not 2**60.
|
||||
|
2
NEWS
2
NEWS
@ -21,7 +21,7 @@ Version 2.17
|
||||
14638, 14645, 14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694,
|
||||
14716, 14719, 14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797,
|
||||
14801, 14805, 14807, 14809, 14811, 14815, 14821, 14822, 14824, 14828,
|
||||
14831, 14835, 14838, 14856, 14863, 14865, 14866, 14868.
|
||||
14831, 14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869.
|
||||
|
||||
* Port to ARM AArch64 contributed by Linaro.
|
||||
|
||||
|
@ -5731,6 +5731,9 @@ hypot_test (void)
|
||||
TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L);
|
||||
|
||||
TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L);
|
||||
#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
|
||||
TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L);
|
||||
#endif
|
||||
|
||||
#if !(defined TEST_FLOAT && defined TEST_INLINE)
|
||||
TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L);
|
||||
|
@ -83,7 +83,7 @@ __ieee754_hypotl(long double x, long double y)
|
||||
k += 600;
|
||||
kld = two600;
|
||||
}
|
||||
if(hb < 0x20b0000000000000LL) { /* b < 2**-500 */
|
||||
if(hb < 0x23d0000000000000LL) { /* b < 2**-450 */
|
||||
if(hb <= 0x000fffffffffffffLL) { /* subnormal b or 0 */
|
||||
u_int64_t low;
|
||||
GET_LDOUBLE_LSW64(low,b);
|
||||
|
Loading…
Reference in New Issue
Block a user