------- Additional Comments From Thomas dot Koenig at online dot de 2004-12-25 14:32 ------- I find strange that the C equivalent does not compare an NaN equal to itself, even with -O3 -ffast-math : $ cat nan-check.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 -O3 -ffast-math nan-check.c $ ./a.out nan compares unequal 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) ... with i686-pc-linux-gnu. Maybe the Fortran frontend does something different with FP comparisons. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19116