Commit e0876e21 by Dominique d'Humieres

[multiple changes]

2016-03-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR libgfortran/70235
	* io/write_float.def: Fix PF format for negative values of the scale
	factor.

2016-03-30  Dominique d'Humieres  <dominiq@lps.ens.fr>
	    Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* gfortran.dg/fmt_pf.f90: New test.

From-SVN: r234600
parent c73f71b7
2016-03-30 Dominique d'Humieres <dominiq@lps.ens.fr>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
* gfortran.dg/fmt_pf.f90: New test.
2016-03-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Forward-port from 5 branch
......
2016-03-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Dominique d'Humieres <dominiq@lps.ens.fr>
PR libgfortran/70235
* io/write_float.def: Fix PF format for negative values of the scale
factor.
2016-03-28 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
* caf/libcaf.h: caf_stop_numeric and caf_stop_str prototype.
......
......@@ -184,9 +184,6 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
memmove (digits + nbefore, digits + nbefore + 1, p);
digits[nbefore + p] = '.';
nbefore += p;
nafter = d - p;
if (nafter < 0)
nafter = 0;
nafter = d;
nzero = 0;
}
......@@ -204,12 +201,27 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
{
nzero = -(nbefore + p);
memmove (digits + 1, digits, nbefore);
digits++;
nafter = d + nbefore;
nafter = d - nzero;
if (nafter == 0 && d > 0)
{
/* This is needed to get the correct rounding. */
memmove (digits + 1, digits, ndigits - 1);
digits[1] = '0';
nafter = 1;
nzero = d - 1;
}
else if (nafter < 0)
{
/* Reset digits to 0 in order to get correct rounding
towards infinity. */
for (i = 0; i < ndigits; i++)
digits[i] = '0';
digits[ndigits - 1] = '1';
nafter = d;
nzero = 0;
}
nbefore = 0;
}
if (nzero > d)
nzero = d;
}
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment