On 12/19/2012 2:30 AM, KHMan wrote:
On 12/19/2012 8:54 AM, Cary R. wrote:
The following code demonstrates a subtle bug in the Cygwin version of
strtod(). The value it generates is slightly different than the value
when using the math header files. This used to work correctly some
time ago (months). I just took the time to track the problem down in
our regression suite.

#include<math.h>
#include<stdio.h>
#include<stdlib.h>

int main()
{
     double value = M_LN10;

     printf("generate const. - value: %0.15f.\n", value);
     printf("expected const. - value: 2.302585092994046.\n");

     printf("\n");
     value = strtod("2.30258509299404568402", 0);

     /* Note: the last digit is incorrect. */
     printf("generate strtod - value: %0.15f.\n", value);
     printf("expected strtod - value: 2.302585092994046.\n");

     return 0;
}

Yep, looks like the significand misses its mark by 1.


strtod is from newlib.
the last change in the code is one year and half ago

http://sourceware.org/cgi-bin/cvsweb.cgi/src/newlib/libc/stdlib/strtod.c.diff?r1=1.17&r2=1.18&cvsroot=src



--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to