[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
computing long double NaN on Irix 6.5
From: |
Eric Blake |
Subject: |
computing long double NaN on Irix 6.5 |
Date: |
Thu, 26 Feb 2009 23:57:05 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
I've done some investigation into failures of test-frexpl, test-isnanl, and
test-vasnprintf-posix on Irix 6.5.
The Irix 6.5 cc, on 0.0L/0.0L, produces:
(gdb) p sizeof x
$1 = 16
(gdb) x/4x &x
0x7ffb7ea0: 0x7ff7ffff 0xffffffff 0x00000000 0x00000000
(gdb) p x
$2 = nan(0x7ffffffffffff)
but gcc 3.4.3 on the same platform produces:
(gdb) x/4x &x
0x7ffb7e80: 0x7ff00000 0x00000000 0x00000000 0x00000000
(gdb) p x
$1 = 0
The following program discovers a way to coerce long double NaN even with gcc:
-------
#include <stdio.h>
#include <math.h>
int main()
{
double w = 0.0 / 0.0;
long double ww = w;
long double x = 0.0L / 0.0L;
long double zero = 0.0L;
long double y = zero / zero;
long double inf = 1.0L / 0.0L;
long double z = inf - inf;
printf("%d %d %d %d %d\n", isnan (w), isnan (ww),
isnan (x), isnan (y), isnan (z));
return 0;
}
------
$ cc -o foo foo.c
$ ./foo
1 1 1 1 1
$ gcc -o foo foo.c
$ ./foo
1 1 0 0 0
Although both compilers made ww a NaN, gcc still doesn't come up with bit-
identical results. Oh well.
cc:
(gdb) x/4x &ww
0x7ffb7e40: 0x7ff7ffff 0xffffffff 0x00000000 0x00000000
gcc:
(gdb) x/4x &ww
0x7ffb7e30: 0x7fffffff 0xfffffffc 0x00000000 0x00000000
(gdb) p ww
$2 = nan(0xffffffffffffc)
So, I am working on a patch that looks for all instances of 0.0L / 0.0L in the
testsuite, and replacing them with a call to NaNl() from tests/nan.h; at the
same time, beefing up that macro to use type conversion from double to long
double on Irix as the only known way to guarantee a NaN.
--
Eric Blake
- computing long double NaN on Irix 6.5,
Eric Blake <=
- Re: computing long double NaN on Irix 6.5, Eric Blake, 2009/02/26
- Re: computing long double NaN on Irix 6.5, Bruno Haible, 2009/02/27
- spurious roundl output (was: computing long double NaN on Irix 6.5), Eric Blake, 2009/02/27
- Re: spurious roundl output (was: computing long double NaN on Irix 6.5), Bruno Haible, 2009/02/27
- Re: spurious roundl output (was: computing long double NaN on Irix 6.5), Eric Blake, 2009/02/27
- Re: spurious "(cached)" output from AC_CACHE_VAL, Bruno Haible, 2009/02/27
- Re: spurious "(cached)" output from AC_CACHE_VAL, Eric Blake, 2009/02/28
- Re: spurious "(cached)" output from AC_CACHE_VAL, Ralf Wildenhues, 2009/02/28
- Re: computing long double NaN on Irix 6.5, Eric Blake, 2009/02/27
- Re: gcc on Irix 6.5, Bruno Haible, 2009/02/27