Commit Graph

4 Commits

Author SHA1 Message Date
Joseph Myers 5556d30cae Fix strtof decimal rounding close to half least subnormal (bug 18247).
Bug 18247 is an off-by-one error in strtof's determination of a
decimal exponent such that any value with that decimal exponent is at
most half the least subnormal and so the appropriate underflowing
value for the rounding mode can be determined with no
multiple-precision computations.  (Whether the value is in fact safe
despite the off-by-one depends on the floating-point format in
question.  It's wrong for float and for m68k ldbl-96 but not for other
supported formats.)  This patch corrects the computation of the
exponent in question to be safe in general, adding a comment
explaining the new computation.

Tested for x86_64.

	[BZ #18247]
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Decrease minimum
	decimal exponent by 1.
	* stdlib/tst-strtod-round-data: Add more tests.
	* stdlib/tst-strtod-round.c (tests): Regenerated.
2015-04-10 20:45:30 +00:00
Joseph Myers 9310c284ae Fix strtod rounding of half the least subnormal (bug 16151). 2013-11-13 12:59:54 +00:00
Joseph Myers 7efb4737dd Fix sign of zero on strtod underflow (bug 14519). 2012-08-27 16:04:19 +00:00
Joseph Myers af92131a8e Fix strtod rounding (bug 3479). 2012-08-27 16:02:07 +00:00