Hello fellow cygwinners, I'm seeing incorrect behavior when I use the "-ffast-math" option to gcc on cygwin. Here is a Short Test Case:
#include <stdio.h> #include <math.h> int main(void) { double d1 = 0.0; double d2 = 0.0; d1 = tan(d1); d2 = tan(d2); (void) printf("d1 = %lg, expecting 0 (or -0)\n", d1); (void) printf("d2 = %lg, expecting 0 (or -0)\n", d2); return 0; } Compile this with "gcc -ffast-math testprog.c -o testprog", then run "./testprog". Correct output would be: d1 = 0, expecting 0 (or -0) d2 = 0, expecting 0 (or -0) Some time ago, on cygwin 1.5 and presumably with an older version of gcc, this code (well, actually, a more complicated version of this in a library we use) worked correctly. It worked correctly both with and without "-mno-cygwin", and both with and without -ffast-math. Today, on cygwin 1.7, I get this output: d1 = -0, expecting 0 (or -0) d2 = nan, expecting 0 (or -0) I get this output from both gcc-3 (which is 3.4.4) and from gcc-4 (which is 4.3.4), when -ffast-math is used. If I remove -ffast-math, I get the expected output of 0 for both d1 and d2. If I compile with -mno-cygwin on gcc-3, either with or without -ffast-math, I get the expected output of 0 for both d1 and d2. So the problem seems to be limited to -ffast-math, and to the cygwin (non-mingw32) platform, and perhaps to relatively recent versions of gcc. My completely uninformed guess is that this is a cygwin-specific defect in gcc. But I really don't know. Any ideas how I should deal with this would be helpful! -- Eric -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple