There's an obvious bug in libfortran/io/write.c which causes a failure
to print "1.0" in exp. format - here's the fix:

diff -U3 -r gcc-4.0.0-old/libgfortran/io/write.c 
gcc-4.0.0/libgfortran/io/write.c
--- gcc-4.0.0-old/libgfortran/io/write.c        2005-04-05 15:24:36.000000000 
+0100
+++ gcc-4.0.0/libgfortran/io/write.c    2005-05-04 07:55:12.000000000 +0100
@@ -316,9 +316,11 @@
     edigits = 2;
   else
     {
-      edigits = 1 + (int) log10 (fabs(log10 (value)));
-      if (edigits < 2)
+      double absexp = fabs(log10 (value));
+      if (absexp < 100)
        edigits = 2;
+      else
+       edigits = 1 + (int) log10 (absexp);
     }

   if (ft == FMT_F || ft == FMT_EN

-- 
           Summary: libfortran "E" output format causes FPE
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libfortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: prw at ceiriog1 dot demon dot co dot uk
                CC: gcc-bugs at gcc dot gnu dot org,prw at ceiriog1 dot
                    demon dot co dot uk
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21376

Reply via email to