Ludovic Courtès wrote: > > And finally, what's the hexdump of that DQNAN constant? > > > > #include <math.h> > > #include <stdio.h> > > int main() > > { > > printf("%04X%04X\n", DQNAN[1], DQNAN[0]); > > return 0; > > } > > FFF800000000
I meant %08X instead of %04X. DQNAN therefore likely is FFF8000000000000 which decomposes into sign = 1 (irrelevant for NaNs), exponent = 0x7FF (highest possible value) mantissa = 0x8000000000000 and this is precisely the common encoding of a quiet NaN (see <http://en.wikipedia.org/wiki/Not_a_number>). > > What's the result for a program that uses a quiet NaN, computed > > differently? > > > > #include <math.h> > > double zero = 0.0; > > int main() > > { > > return isnan (zero / zero); > > }; > > SIGFPE with both `cc' and GCC 4.0.2. Oh, right, division by floating-point zero and overflow exceptions lead to SIGFPE by default on OSF/1 and Linux/Alpha. That's why we have the module 'fpieee' in gnulib. > > What's the result when you compile it with cc? > > $ cc foo.c -lm > > $ ./a.out > > $ echo $? > > 1 > > That's with "Compaq C V6.5-303 (dtk) on Compaq Tru64 UNIX V5.1B > (Rev. 2650)". > > Should we conclude that this is a GCC bug? Possibly. And what result do you get with "gcc -mieee" ? Bruno