Bug in egcs-2.91.66 - double comparisons

Richard Bielak richieb@calfp.com
Tue Oct 19 12:59:00 GMT 1999


Hi,

I'm using egcs-2.91.66 on a RH 6.0 system:

	Linux chippewa 2.2.9 #20 SMP Thu May 20 00:01:37 PDT 1999 i686 unknown

and I compile this program:

----------------------------------------------------------
#include <stdio.h>

int main (int argc, char **argv) {

  double t1, t2, t3, t4;

  t1 = 0.040000000000000008;
  t2 = 0.20000000000000001;
  t3 = 0.20000000000000001;


  /* The comparison fails here */
  if (t1 <= t3 * t2) {
	printf ("Seems OK \n");
  }
  else {
	printf ("Seems wrong \n");
  }


  t4 = t3 * t2;

  /* Comparison OK here */
  if (t1 <= t4) {
	printf ("Seems OK \n");
  }
  else {
	printf ("Seems wrong \n");
  }


  printf ("t1=%E t2=%E t3=%E t3*t2=%E \n", t1, t2, t3, t2 * t3);

}

--------------------------------------------------------

Depending on the kind of optimization I use the answers come out differently.
Here is what I type:

[richieb on chippewa] numbers > gcc -o doubles doubles.c
[richieb on chippewa] numbers > ./doubles 
Seems wrong 
Seems OK 
t1=4.000000E-02 t2=2.000000E-01 t3=2.000000E-01 t3*t2=4.000000E-02 
[richieb on chippewa] numbers > 
[richieb on chippewa] numbers > gcc -O -o doubles doubles.c
[richieb on chippewa] numbers > ./doubles 
Seems OK 
Seems wrong 
t1=4.000000E-02 t2=2.000000E-01 t3=2.000000E-01 t3*t2=4.000000E-02 
[richieb on chippewa] numbers > 
[richieb on chippewa] numbers > gcc -O2 -o doubles doubles.c
[richieb on chippewa] numbers > ./doubles 
Seems OK 
Seems OK 
t1=4.000000E-02 t2=2.000000E-01 t3=2.000000E-01 t3*t2=4.000000E-02 
[richieb on chippewa] numbers > 
[richieb on chippewa] numbers > 
[richieb on chippewa] numbers > gcc -O3 -o doubles doubles.c
[richieb on chippewa] numbers > ./doubles 
Seems OK 
Seems OK 
t1=4.000000E-02 t2=2.000000E-01 t3=2.000000E-01 t3*t2=4.000000E-02 
[richieb on chippewa] numbers > 



The correct answer is that both comparisons should come out the same.

This code works OK with earlier versions of GCC (2.8.1).

Thanks for any help...

...richie


More information about the Gcc-bugs mailing list