diff options
author | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-28 05:14:05 +0000 |
---|---|---|
committer | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-28 05:14:05 +0000 |
commit | 6e48ddb8c320ba65abf84916691b22b619fa0f10 (patch) | |
tree | 784aa5a8321e597079f249cda1afed864f63db7e /libgfortran | |
parent | 8b5eeb907d951fcb1494a6a598e14fca3062a727 (diff) | |
download | ppe42-gcc-6e48ddb8c320ba65abf84916691b22b619fa0f10.tar.gz ppe42-gcc-6e48ddb8c320ba65abf84916691b22b619fa0f10.zip |
2006-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/28354
* io/write.c: Check for special case of zero precision in format
and pre-round the real value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116502 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/write.c | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 773f80636db..7151344be7e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2006-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libgfortran/28354 + * io/write.c: Check for special case of zero precision in format + and pre-round the real value. + 2006-08-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/25828 diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index bee367c49ae..79018ccd4fa 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -426,6 +426,15 @@ output_float (st_parameter_dt *dtp, const fnode *f, GFC_REAL_LARGEST value) if (value < 0) value = -value; + /* Special case when format specifies no digits after the decimal point. */ + if (d == 0) + { + if (value < 0.5) + value = 0.0; + else if (value < 1.0) + value = value + 0.5; + } + /* Printf always prints at least two exponent digits. */ if (value == 0) edigits = 2; |