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


Reply via email to