This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/14046] New: strtof returns incorrectly-rounded results
- From: "bugdal at aerifal dot cx" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: Wed, 02 May 2012 02:06:57 +0000
- Subject: [Bug libc/14046] New: strtof returns incorrectly-rounded results
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=14046
Bug #: 14046
Summary: strtof returns incorrectly-rounded results
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: unassigned@sourceware.org
ReportedBy: bugdal@aerifal.cx
CC: drepper.fsp@gmail.com
Classification: Unclassified
Test case:
"0.000000000000000000000000000000000000000000002101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875"
This is the decimal value of 0x1.8p-149, the value exactly halfway between the
smallest two positive single-precision floating point values. It has more than
DECIMAL_DIG significant digits, so it should round as follows:
"If the subject sequence D has the decimal form and more than DECIMAL_DIG
significant digits, consider the two bounding, adjacent decimal strings L and
U, both having DECIMAL_DIG significant digits, such that the values of L, D,
and U satisfy L <= D <= U. The result should be one of the (equal or adjacent)
values that would be obtained by correctly rounding L and U according to the
current rounding direction, with the extra stipulation that the error with
respect to D should have a correct sign for the current rounding direction."
Here L="0.00000000000000000000000000000000000000000000210194769648722560638"
and U="0.00000000000000000000000000000000000000000000210194769648722560639".
Correctly rounded, they should be 0x1p-149 and 0x1p-148, respectively, but
strtof rounds all three (D,L,U) to 0x1p-149.
This is just the particular case I thought to check; surely there are many
others, possibly without even going into the denormal range (which was the
first place I thought to look for bugs).
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.