[Bug fortran/34333] if(nan == nan) wrongly returns TRUE, when nan is a parameter
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Dec 4 14:00:00 GMT 2007
------- Comment #2 from burnus at gcc dot gnu dot org 2007-12-04 14:00 -------
Created an attachment (id=14697)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14697&action=view)
Test case and partial patch
Attached you find a patch for simplify.c's min/max and for the comparison of
complex numbers.
The comparison for real numbers needs some work: Currently, the actual
comparison is done in gfc_compare_expr, however, the result is used at several
places. Especially result > 0 and result < 0 is used.
"nan < nan", "nan == nan" and "nan > nan" is all false thus one needs to take
care of the NaN at different places.
For compare_complex one can use mpfr_equal_p as there is no order for complex
functions.
One should consider removing the REAL check from gfc_compare_expr and add
special cases for BT_REAL using mpfr_equal_p, mpfr_greater_p etc. to the
various callers of gfc_compare_expr.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34333
More information about the Gcc-bugs
mailing list