----- Original Message -----
From: "Bill Coffman" <bill.coffman@xxxxxxxxx>
To: "Sisyphus" <sisyphus1@xxxxxxxxxxxxxxx>
Cc: <pdl-porters@xxxxxxxxxxxxxxx>
Sent: Wednesday, July 05, 2006 11:56 AM
Subject: Re: quest for NaN, was: RE:[Pdl-porters] fix for eigens
> // Sisyphus, can you give the below a try?
> // This should work on all architectures that support ieee-754.
> // At least on x86 and AMD this should create a quiet nan.
>
> #include <stdio.h>
>
> static const union {unsigned char c[4]; float f;}
> union_nan_float = {{255,255,255,255}};
> static const union {unsigned char c[8]; double d;}
> union_nan_double = {{255,255,255,255,255,255,255,255}};
>
> int main() {
> double x = union_nan_double.d;
> float f = union_nan_float.f;
> if(x == x || x < x || x <= x || x > x || x >= x ||
> x == 7 || x < 7 || x <= 7 || x > 7 || x >= 7) printf("double Not
> ok\n");
> else printf("double Ok\n");
> if(f == f || f < f || f <= f || f > f || f >= f || f == 7 || f < 7 ||
f
> <= 7 || f > 7 || f >= 7)
> printf("float Not ok\n");
> else printf("float Ok\n");
> printf("double output %f\n",x);
> printf("float output %f\n",f);
> return 0;
> }
>
With MinGW's 'gcc' and Microsoft's 'cl' outputs:
double Ok
float Ok
double output -1.#QNAN0
float output -1.#QNAN0
With Cygwin's 'gcc' outputs:
double Ok
float Ok
double output nan
float output nan
I'm on x86.
Cheers,
Rob
|