Re: glib 2.2.3 test failures on Solaris
- From: Alexander Larsson <alexl redhat com>
- To: gtk dev list <gtk-devel-list gnome org>
- Subject: Re: glib 2.2.3 test failures on Solaris
- Date: 15 Sep 2003 10:37:17 +0200
On Sun, 2003-09-14 at 00:00, Albert Chin wrote:
> I'm getting a test failure in strtod-test on glib-2.2.3 on Solaris
> 2.5.1-9/SPARC with Sun's C compiler, HP-UX 11.00 with the HP C
> compiler, and AIX 5.1 with the IBM C compiler. The problem is:
>
> d = pow (2.0, -1024.1);
> g_assert (d == g_ascii_strtod (g_ascii_dtostr (buffer, sizeof (buffer), d), NULL));
>
> If I:
> g_ascii_dtostr (buffer, sizeof (buffer), d);
> printf ("%s\n", buffer);
> printf ("%f %f %f\n", d, strtod (buffer, NULL),
> g_ascii_strtod (buffer, NULL));
> I get:
> 5.1901682964836177e-309
> 0.000000 0.000000 0.000000
You have to use %g to get anything other that 0.0 for these values,
since we're operating on the edges of double precision here. It is
entierly possible that the precision of the built-in strtod in the other
systems just isn't high enough to make the assert work.
> (Redhat Linux 9 gives)
> 5.1901682964836274e-309
> 0.000000 0.000000 -1.231230
This however, is a bit strange. It should give three zeros.
I did some testing, showing up some very very strange behaviour:
d = pow (2.0, -1024.1);
g_ascii_dtostr (buffer, sizeof (buffer), d);
g_print ("buffer: %s\n", buffer);
g_print ("strtod(buffer) == %g\n", strtod (buffer, NULL));
g_print ("buffer2: %s\n", buffer);
g_print ("g_ascii_strtod(buffer) == %g\n", g_ascii_strtod (buffer, NULL));
g_print ("strtod(buffer) == %g\n", strtod (buffer, NULL));
On RH9 this prints out:
buffer: 5.1901682964836274e-309
strtod(buffer) == 1.9036e+185
buffer2: 5.1901682964836274e-309
g_ascii_strtod(buffer) == 5.19017e-309
strtod(buffer) == 5.19017e-309
WTF!!!?!
Why does the first call to strtod seemingly ignore the initial 5, and
make the exponent all wrong, but the second call does the right thing?
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Alexander Larsson Red Hat, Inc
alexl redhat com alla lysator liu se
He's a jaded guitar-strumming vagrant with a winning smile and a way with the
ladies. She's a virginal French-Canadian queen of the dead prone to fits of
savage, blood-crazed rage. They fight crime!
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]