[Bug libfortran/48615] New: Invalid UP/DOWN rounding with E and ES descriptors
thenlich at users dot sourceforge.net
gcc-bugzilla@gcc.gnu.org
Fri Apr 15 07:08:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48615
Summary: Invalid UP/DOWN rounding with E and ES descriptors
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: thenlich@users.sourceforge.net
The E and ES descriptors ignore the I/O rounding mode:
print "(RU,F17.0)", 1.1
print "(RU,G17.1)", 1.1e9
print "(RU,E17.1)", 1.1e9 ! 0.1E+10 expected 0.2E+10
print "(RU,ES17.0)", 1.1e9 ! 1.E+09 expected 2.E+09
print "(RU,EN17.0)", 1.1e9
print "(RD,F17.0)", 1.9
print "(RD,G17.1)", 1.9e9
print "(RD,E17.1)", 1.9e9 ! 0.2E+10 expected 0.1E+10
print "(RD,ES17.0)", 1.9e9 ! 2.E+09 expected 1.E+09
print "(RD,EN17.0)", 1.9e9
end
Fortran 2008:
10.7.2.3.3 E and D editing
4 ...
- x1 x2 ... xd are the d most significant digits of the internal value after
rounding (10.7.2.3.7);
10.7.2.3.5 ES editing
5 ...
- y is a decimal digit representative of the most significant digit of the
internal value after rounding (10.7.2.3.7);
- signifies a decimal symbol (10.6);
- x1 x2 ... xd are the d next most significant digits of the internal value
after rounding;
10.7.2.3.7 I/O rounding mode
3 When the I/O rounding mode is UP, the value resulting from conversion shall
be the smallest representable value that is greater than or equal to the
original value. When the I/O rounding mode is DOWN, the value resulting
from conversion shall be the largest representable value that is less than or
equal to the original value.
More information about the Gcc-bugs
mailing list