re PR libfortran/48787 (Invalid UP/DOWN rounding with F editing)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 1 May 2011 12:37:05 +0000 (12:37 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 1 May 2011 12:37:05 +0000 (12:37 +0000)
2011-05-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/48787
* gfortran.dg/round_3.f08: Add more checks.

From-SVN: r173233

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/round_3.f08

index d3d88c8a5029bd99d162f67c37313ff19e649184..01eabe0ad553d6775bfb898aad031ed82d23f4e5 100644 (file)
@@ -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
index ec02bc9312916de18eed4e93f31917a540a32a9e..12d9770fd76ee611e4e302dce2742dfea8b71bb0 100644 (file)
@@ -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