mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-14 01:00:07 +00:00
Fix ldbl-96 hypotl of subnormals (bug 15529).
This commit is contained in:
parent
dd4259b9f7
commit
0323d08657
@ -1,5 +1,10 @@
|
||||
2013-05-24 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #15529]
|
||||
* sysdeps/ieee754/ldbl-96/e_hypotl.c (__ieee754_hypotl): Set high
|
||||
bit of mantissa of 2^16382.
|
||||
* math/libm-test.inc (hypot_test_data): Add more tests.
|
||||
|
||||
* math/libm-test.inc: Add drem and pow10 to list of tested
|
||||
functions.
|
||||
(pow10_test): New function.
|
||||
|
3
NEWS
3
NEWS
@ -18,7 +18,8 @@ Version 2.18
|
||||
15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335, 15336, 15337,
|
||||
15339, 15342, 15346, 15359, 15361, 15366, 15380, 15381, 15394, 15395,
|
||||
15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424, 15426, 15429,
|
||||
15441, 15442, 15448, 15480, 15485, 15488, 15490, 15493, 15497, 15506.
|
||||
15441, 15442, 15448, 15480, 15485, 15488, 15490, 15493, 15497, 15506,
|
||||
15529.
|
||||
|
||||
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
|
||||
#15078).
|
||||
|
@ -9386,6 +9386,19 @@ static const struct test_ff_f_data hypot_test_data[] =
|
||||
|
||||
#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
|
||||
TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
|
||||
#endif
|
||||
|
||||
TEST_ff_f (hypot, 0x1p-149L, 0x1p-149L, 1.9817352931807469938024533350782879785095e-45L, UNDERFLOW_EXCEPTION_FLOAT),
|
||||
|
||||
#ifndef TEST_FLOAT
|
||||
TEST_ff_f (hypot, 0x1p-1074L, 0x1p-1074L, 6.9871433705131320800651344656990806305791e-324L, UNDERFLOW_EXCEPTION_DOUBLE),
|
||||
#endif
|
||||
|
||||
#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381 && !defined TEST_INLINE
|
||||
TEST_ff_f (hypot, 0x1p-16445L, 0x1p-16445L, 5.1550906155442528702558159159596215039925e-4951L, UNDERFLOW_EXCEPTION),
|
||||
# if LDBL_MANT_DIG >= 113
|
||||
TEST_ff_f (hypot, 0x1p-16494L, 0x1p-16494L, 9.1572804726500807075521065242888978445857e-4966L, UNDERFLOW_EXCEPTION),
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -85,7 +85,7 @@ long double __ieee754_hypotl(long double x, long double y)
|
||||
u_int32_t high,low;
|
||||
GET_LDOUBLE_WORDS(exp,high,low,b);
|
||||
if((high|low)==0) return a;
|
||||
SET_LDOUBLE_WORDS(t1, 0x7ffd, 0, 0); /* t1=2^16382 */
|
||||
SET_LDOUBLE_WORDS(t1, 0x7ffd, 0x80000000, 0); /* t1=2^16382 */
|
||||
b *= t1;
|
||||
a *= t1;
|
||||
k -= 16382;
|
||||
|
Loading…
Reference in New Issue
Block a user