+2005-03-12 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20124
+ * gfortran.dg/pr20124.f90: New Test
+
2005-03-10 James A. Morrison <phython@gcc.gnu.org>
PR tree-optimization/20130
--- /dev/null
+! { dg-do run }
+! pr 20124
+ character*80 line
+ x = -.01
+ y = .01
+ write(line,'(2f10.2)') x, y
+ if (line.ne.' -0.01 0.01') call abort
+ end
+2005-03-11 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20124
+ * write.c (output_float): Adds a nzero_real variable to store
+ the number of leading zeros whatever the format width is. Corrects
+ the rounding of numbers less than 10^(-width). Fixes typo in an
+ error message. Updates copyright years
+
2005-02-27 Toon Moene <toon@moene.indiv.nluug.nl>
* runtime/environ.c: Update copyright years.
int nzero;
/* Number of digits after the decimal point. */
int nafter;
+ /* Number of zeros after the decimal point, whatever the precision. */
+ int nzero_real;
int leadzero;
int nblanks;
int i;
w = f->u.real.w;
d = f->u.real.d;
+ nzero_real = -1;
+
+
/* We should always know the field width and precision. */
if (d < 0)
internal_error ("Unspecified precision");
if (nbefore < 0)
{
nzero = -nbefore;
+ nzero_real = nzero;
if (nzero > d)
nzero = d;
nafter = d - nzero;
/* Round the value. */
if (nbefore + nafter == 0)
- ndigits = 0;
+ {
+ ndigits = 0;
+ if (nzero_real == d && digits[0] >= '5')
+ {
+ /* We rounded to zero but shouldn't have */
+ nzero--;
+ nafter = 1;
+ digits[0] = '1';
+ ndigits = 1;
+ }
+ }
else if (nbefore + nafter < ndigits)
{
ndigits = nbefore + nafter;