diff options
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/write_0_pe_format.f90 | 9 | ||||
| -rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
| -rw-r--r-- | libgfortran/io/write.c | 3 |
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aebf34b..5c55f5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-27 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/20101 + * gfortran.dg/write_0_pe_format.f90: New test. + 2005-02-27 Jakub Jelinek <jakub@redhat.com> PR c++/20206 diff --git a/gcc/testsuite/gfortran.dg/write_0_pe_format.f90 b/gcc/testsuite/gfortran.dg/write_0_pe_format.f90 new file mode 100644 index 0000000..3890c32 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/write_0_pe_format.f90 @@ -0,0 +1,9 @@ +! { dg-do run } +! PR libfortran/20101 +! With format "PE", 0.0 must still have "+00" as exponent +character(len=10) :: c1, c2 +write(c1,"(1pe9.2)") 0.0 +write(c2,"(1pe9.2)") 1.0 +if (trim(adjustl(c1)) .ne. "0.00E+00") call abort() +if (trim(adjustl(c2)) .ne. "1.00E+00") call abort() +end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c7b5821..052664c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2005-02-27 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/20101 + * write.c (output_float): Added special check for value 0.0 in + PE format. + 2004-02-27 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> * io/write.c (output_float): Fix typo in condition. diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index d4ee605..9b71cc5 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -375,7 +375,8 @@ output_float (fnode *f, double value, int len) case FMT_E: case FMT_D: i = g.scale_factor; - e -= i; + if (value != 0.0) + e -= i; if (i < 0) { nbefore = 0; |
