http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47567
Thomas Henlich <thenlich at users dot sourceforge.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | --- Comment #20 from Thomas Henlich <thenlich at users dot sourceforge.net> 2011-02-21 13:22:59 UTC --- print "(F3.0)", -0.0 ! => -0. print "(F2.0)", -0.0 ! => ** print "(F1.0)", -0.0 ! => 0 print "(F3.1)", -0.0 ! => -.0 print "(F2.1)", -0.0 ! => ** print "(F1.1)", -0.0 ! => 0 I think it's still wrong: It is not possible for any value to fit into a field of width w, but not into w+1. Either 1) For the special case of a zero, we consider the minus sign and the decimal symbol optional (which I think does not conform to the standard), then the result should be: print "(F3.0)", -0.0 ! => -0. print "(F2.0)", -0.0 ! => -0 (or 0. or 0) print "(F1.0)", -0.0 ! => 0 print "(F3.1)", -0.0 ! => -.0 print "(F2.1)", -0.0 ! => -0 (or .0 or 0) print "(F1.1)", -0.0 ! => 0 or 2) We never consider the minus sign nor the decimal symbol optional (which I think is required by the standard), then the result should be: print "(F0.0)", -0.0 ! => -0. print "(F3.0)", -0.0 ! => -0. print "(F2.0)", -0.0 ! => ** print "(F1.0)", -0.0 ! => * print "(F0.1)", -0.0 ! => -.0 print "(F3.1)", -0.0 ! => -.0 print "(F2.1)", -0.0 ! => ** print "(F1.1)", -0.0 ! => *