http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59774
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Inconsistent rounding |[Regression] Inconsistent |between -m32 and -m64 |rounding between -m32 and | |-m64 --- Comment #2 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- I think this gets back to: http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=185433 Using: print "(ru,g11.2)", 99._8 print "(ru,g11.2)", 99._4 end Looking at the buffer in output_float we get: $ gfc -m32 pr59771.f90 $ ./a.out buffer=+99900000000000000000000e+01<<< 0.99E+02 buffer=+99.000000000000<<< 10. $ gfc -m64 pr59771.f90 $ ./a.out buffer=+99900000000000000000000e+01<<< 0.99E+02 buffer=+999000000000000e+01<<< 0.99E+02 Notice the '.' in the buffer for kind=4 vs kind=8 I don't know all the reasons for the changes made, but think "." needs to get stripped out before we ever get to output_float and the exponent needs to be there. I do recall the reason gfortran does its own rounding is because the C implementations across platforms are not consistent.