mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Fix strtod rounding of half the least subnormal (bug 16151).
This commit is contained in:
parent
7a2ad8cf39
commit
9310c284ae
@ -1,3 +1,12 @@
|
||||
2013-11-13 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #16151]
|
||||
* stdlib/strtod_l.c (round_and_return): Do not consider
|
||||
retval[RETURN_LIBM_SIZE - 1] when determining more_bits for an
|
||||
exponent one less than half the least subnormal exponent.
|
||||
* stdlib/test-strtod-round-data: Add more tests.
|
||||
* stdlib/tst-strtod-round.c (tests): Regenerated.
|
||||
|
||||
2013-11-13 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #14143]
|
||||
|
3
NEWS
3
NEWS
@ -17,7 +17,8 @@ Version 2.19
|
||||
15825, 15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886,
|
||||
15887, 15890, 15892, 15893, 15895, 15897, 15905, 15909, 15917, 15919,
|
||||
15921, 15923, 15939, 15948, 15963, 15966, 15985, 15988, 16032, 16034,
|
||||
16036, 16037, 16041, 16071, 16072, 16074, 16078, 16112, 16150, 16153.
|
||||
16036, 16037, 16041, 16071, 16072, 16074, 16078, 16112, 16150, 16151,
|
||||
16153.
|
||||
|
||||
* CVE-2012-4412 The strcoll implementation caches indices and rules for
|
||||
large collation sequences to optimize multiple passes. This cache
|
||||
|
@ -228,7 +228,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
|
||||
|
||||
round_limb = retval[RETURN_LIMB_SIZE - 1];
|
||||
round_bit = (MANT_DIG - 1) % BITS_PER_MP_LIMB;
|
||||
for (i = 0; i < RETURN_LIMB_SIZE; ++i)
|
||||
for (i = 0; i < RETURN_LIMB_SIZE - 1; ++i)
|
||||
more_bits |= retval[i] != 0;
|
||||
MPN_ZERO (retval, RETURN_LIMB_SIZE);
|
||||
}
|
||||
|
@ -109,3 +109,11 @@
|
||||
-0x0.7p-1074
|
||||
-0x0.7p-16445
|
||||
-0x0.7p-16494
|
||||
0x1p-150
|
||||
0x1p-1075
|
||||
0x1p-16446
|
||||
0x1p-16495
|
||||
-0x1p-150
|
||||
-0x1p-1075
|
||||
-0x1p-16446
|
||||
-0x1p-16495
|
||||
|
@ -7535,6 +7535,294 @@ static const struct test tests[] = {
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L),
|
||||
TEST ("0x1p-150",
|
||||
false,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x8p-152f,
|
||||
true,
|
||||
0x4p-152,
|
||||
0x4p-152,
|
||||
0x4p-152,
|
||||
0x4p-152,
|
||||
true,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
true,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
true,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
true,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
true,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L,
|
||||
0x4p-152L),
|
||||
TEST ("0x1p-1075",
|
||||
false,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x8p-152f,
|
||||
false,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x4p-1076,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
true,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
true,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
true,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L,
|
||||
0x2p-1076L),
|
||||
TEST ("0x1p-16446",
|
||||
false,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x8p-152f,
|
||||
false,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x4p-1076,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x8p-16448L,
|
||||
true,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
true,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L,
|
||||
0x4p-16448L),
|
||||
TEST ("0x1p-16495",
|
||||
false,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x0p+0f,
|
||||
0x8p-152f,
|
||||
false,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x0p+0,
|
||||
0x4p-1076,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x8p-16448L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-16448L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-1076L,
|
||||
false,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x0p+0L,
|
||||
0x4p-16496L),
|
||||
TEST ("-0x1p-150",
|
||||
false,
|
||||
-0x8p-152f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
true,
|
||||
-0x4p-152,
|
||||
-0x4p-152,
|
||||
-0x4p-152,
|
||||
-0x4p-152,
|
||||
true,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
true,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
true,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
true,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
true,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L,
|
||||
-0x4p-152L),
|
||||
TEST ("-0x1p-1075",
|
||||
false,
|
||||
-0x8p-152f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
false,
|
||||
-0x4p-1076,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
true,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
true,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
true,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L,
|
||||
-0x2p-1076L),
|
||||
TEST ("-0x1p-16446",
|
||||
false,
|
||||
-0x8p-152f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
false,
|
||||
-0x4p-1076,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
false,
|
||||
-0x8p-16448L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
true,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
true,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L,
|
||||
-0x4p-16448L),
|
||||
TEST ("-0x1p-16495",
|
||||
false,
|
||||
-0x8p-152f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
-0x0p+0f,
|
||||
false,
|
||||
-0x4p-1076,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
-0x0p+0,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
false,
|
||||
-0x8p-16448L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
false,
|
||||
-0x4p-16448L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
false,
|
||||
-0x4p-1076L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
false,
|
||||
-0x4p-16496L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L,
|
||||
-0x0p+0L),
|
||||
};
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user