------- Additional Comments From Thomas dot Koenig at online dot de 2004-12-25 22:17 ------- It is actually possible to reproduce the Fortran behavior in C:
$ cat nan-check2.c #include <stdio.h> #include <math.h> int equality(double *a, double *b); int main() { double a, b, c; a = 0.0; b = 0.0; c = a/b; if (equality(&c,&c)) { printf("%f compares equal to itself\n",c); } else { printf("%f compares unequal to itself\n",c); } return 0; } int equality(double *a, double *b) { return *a==*b; } $ gcc nan-check2.c $ ./a.out nan compares unequal to itself $ gcc -ffast-math nan-check2.c $ ./a.out nan compares equal to itself $ gcc -ffast-math -fno-finite-math-only nan-check2.c $ ./a.out nan compares equal to itself $ gcc -v Using built-in specs. Configured with: ../gcc/configure --prefix=/home/ig25 --enable-languages=c,c++,f95 Thread model: posix gcc version 4.0.0 20041224 (experimental) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19116