[Bug libfortran/48602] Invalid F conversion of G descriptor for values close to powers of 10
thenlich at users dot sourceforge.net
gcc-bugzilla@gcc.gnu.org
Sat Apr 16 17:28:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48602
--- Comment #14 from Thomas Henlich <thenlich at users dot sourceforge.net> 2011-04-16 17:28:16 UTC ---
(In reply to comment #13)
> OK, here is what I have settled on for the IF clause after checking the
> factoring.
>
> rexp_d = calculate_exp_ ## x (-d);\
> if ((m > 0.0 && m < 0.1 - 0.1 * r * rexp_d) || (rexp_d * (m + r) >= 1.0) ||\
> ((m == 0.0) && !(compile_options.allow_std & GFC_STD_F2003)))\
> { \
> newf->format = FMT_E;\
> newf->u.real.w = w;\
> newf->u.real.d = d;\
> newf->u.real.e = e;\
> nb = 0;\
> goto finish;\
> }\
>
> Regression testing now.
Just noticed:
Shouldn't the last term in the if clause be:
compile_options.allow_std & (GFC_STD_F2003 | GFC_STD_F2008)
Fortran 2008 requires the F conversion for a magnitude of 0.0.
More information about the Gcc-bugs
mailing list