On 06/11/2011 12:23 AM, Thomas Henlich wrote: >> I don't agree with this; with the patch we now output 10 significant >> digits, whereas 9 is sufficient for a binary->ascii->binary roundtrip. >> So please retain the "reduce d by one when E editing is used" thing >> for list format and G0. This is just a side effect of using 1PGw.d >> format for list format and G0 in order to avoid duplicating code, but >> we don't need to follow this particular craziness that is due to how >> the scale factor is specified in the standard. > > I hadn't noticed this, but I agree with Janne. > > It should be easy to implement: > > After the switch between F and E editing, we just need to shift the > decimal point and decrement the exponent. No new rounding is required, > because we keep the number of significant digits. > OK, after a little bit of experimentation, I have arrived at the updated patch attached. This has been regression tested and passes all test cases I am aware of. I also have included a new test case gcc/testsuite/gfortran.dg/fmt_g.f90. OK for trunk? Jerry