From: Peter Wainwright Date: Sun, 22 May 2005 21:17:42 +0000 (+0000) Subject: re PR libfortran/21376 (libfortran "E" output format causes FPE) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c220bdaec9733bbeb9bfd96dedb706db9af73338;p=gcc.git re PR libfortran/21376 (libfortran "E" output format causes FPE) PR libfortran/21376 * io/write.c (output_float): Rework logic to avoid call to log10 with argument equal to zero. From-SVN: r100068 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7e34ec86483..07154824854 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2005-05-22 Francois-Xavier Coudert + + PR libfortran/21376 + * io/write.c (output_float): Rework logic to avoid call to log10 + with argument equal to zero. + 2005-05-21 Eric Botcazou * configure.ac: Check for trunc and truncf in libm. diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index 36fee925988..793031a9375 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -296,6 +296,7 @@ output_float (fnode *f, double value) int nblanks; int i; sign_t sign; + double abslog; ft = f->format; w = f->u.real.w; @@ -320,9 +321,11 @@ output_float (fnode *f, double value) edigits = 2; else { - edigits = 1 + (int) log10 (fabs(log10 (value))); - if (edigits < 2) + abslog = fabs(log10 (value)); + if (abslog < 100) edigits = 2; + else + edigits = 1 + (int) log10 (abslog); } if (ft == FMT_F || ft == FMT_EN