aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2011-05-01 12:37:05 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2011-05-01 12:37:05 +0000
commit12c0e3856baf63f933061aacd4f70cd865913ab1 (patch)
treee7e24d42157918f0b591e322d1b3ae28916fd1ae
parent6f76a8788eebd50b78213f086166889167f0fcb2 (diff)
downloadgcc-12c0e3856baf63f933061aacd4f70cd865913ab1.zip
gcc-12c0e3856baf63f933061aacd4f70cd865913ab1.tar.gz
gcc-12c0e3856baf63f933061aacd4f70cd865913ab1.tar.bz2
re PR libfortran/48787 (Invalid UP/DOWN rounding with F editing)
2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48787 * gfortran.dg/round_3.f08: Add more checks. From-SVN: r173233
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/round_3.f0825
2 files changed, 21 insertions, 9 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d3d88c8..01eabe0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48787
+ * gfortran.dg/round_3.f08: Add more checks.
+
2011-04-30 Tobias Burnus <burnus@net-b.de>
PR fortran/48821
diff --git a/gcc/testsuite/gfortran.dg/round_3.f08 b/gcc/testsuite/gfortran.dg/round_3.f08
index ec02bc9..12d9770f 100644
--- a/gcc/testsuite/gfortran.dg/round_3.f08
+++ b/gcc/testsuite/gfortran.dg/round_3.f08
@@ -4,10 +4,17 @@
program pr48615
call checkfmt("(RU,F17.0)", 2.5, " 3.")
call checkfmt("(RU,-1P,F17.1)", 2.5, " 0.3")
- call checkfmt("(RU,E17.1)", 2.5, " 0.3E+01") ! 0.2E+01
+ call checkfmt("(RU,E17.1)", 2.5, " 0.3E+01")
call checkfmt("(RU,1P,E17.0)", 2.5, " 3.E+00")
- call checkfmt("(RU,ES17.0)", 2.5, " 3.E+00") ! 2.E+00
+ call checkfmt("(RU,ES17.0)", 2.5, " 3.E+00")
call checkfmt("(RU,EN17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RU,F2.0)", 2.0, "2.")
+ call checkfmt("(RU,F6.4)", 2.0, "2.0000")
+ call checkfmt("(RU,1P,E6.0E2)", 2.0, "2.E+00")
+ call checkfmt("(RU,1P,E7.1E2)", 2.5, "2.5E+00")
+ call checkfmt("(RU,1P,E10.4E2)", 2.5, "2.5000E+00")
+ call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00")
+ call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05")
call checkfmt("(RD,F17.0)", 2.5, " 2.")
call checkfmt("(RD,-1P,F17.1)", 2.5, " 0.2")
@@ -18,9 +25,9 @@ program pr48615
call checkfmt("(RC,F17.0)", 2.5, " 3.")
call checkfmt("(RC,-1P,F17.1)", 2.5, " 0.3")
- call checkfmt("(RC,E17.1)", 2.5, " 0.3E+01") ! 0.2E+01
+ call checkfmt("(RC,E17.1)", 2.5, " 0.3E+01")
call checkfmt("(RC,1P,E17.0)", 2.5, " 3.E+00")
- call checkfmt("(RC,ES17.0)", 2.5, " 3.E+00") ! 2.E+00
+ call checkfmt("(RC,ES17.0)", 2.5, " 3.E+00")
call checkfmt("(RC,EN17.0)", 2.5, " 3.E+00")
call checkfmt("(RN,F17.0)", 2.5, " 2.")
@@ -53,20 +60,20 @@ program pr48615
call checkfmt("(RC,F17.0)", -2.5, " -3.")
call checkfmt("(RC,-1P,F17.1)", -2.5, " -0.3")
- call checkfmt("(RC,E17.1)", -2.5, " -0.3E+01") ! -0.2E+01
+ call checkfmt("(RC,E17.1)", -2.5, " -0.3E+01")
call checkfmt("(RC,1P,E17.0)", -2.5, " -3.E+00")
- call checkfmt("(RC,ES17.0)", -2.5, " -3.E+00") ! -2.E+00
+ call checkfmt("(RC,ES17.0)", -2.5, " -3.E+00")
call checkfmt("(RC,EN17.0)", -2.5, " -3.E+00")
- call checkfmt("(RU,E17.1)", nearest(2.0, 1.0), " 0.3E+01") ! 0.2E+01
- call checkfmt("(RD,E17.1)", nearest(3.0, -1.0), " 0.2E+01") ! 0.3E+01
+ call checkfmt("(RU,E17.1)", nearest(2.0, 1.0), " 0.3E+01")
+ call checkfmt("(RD,E17.1)", nearest(3.0, -1.0), " 0.2E+01")
contains
subroutine checkfmt(fmt, x, cmp)
character(len=*), intent(in) :: fmt
real, intent(in) :: x
character(len=*), intent(in) :: cmp
- character(len=40) :: s
+ character(len=20) :: s
write(s, fmt) x
if (s /= cmp) call abort