------- Comment #4 from fxcoudert at gcc dot gnu dot org 2006-02-17 20:33
-------
This is a problem in libgfortran scalbn fallback version not handling correctly
denormals. A i686-linux testcase is included below. I switch this to severity
"minor".
$ cat a.c
#include <stdio.h>
#include <math.h>
double
gfortran_scalbn(double x, int y)
{
static double two = 2;
return x * pow(two, y);
}
int main (void)
{
double x, y;
int n, dummy;
n = 1024;
x = 2.22507385850720088902458687608585988765042311224e-308;
y = gfortran_scalbn (frexp (x, &dummy), n);
printf ("%lg\n", y);
return 0;
}
$ gcc a.c -lm && ./a.out
inf
If we use the libm scalbn instead (at least on i686-linux), the result printed
is 1.79769e+308.
--
fxcoudert at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |minor
GCC build triplet|hppa1.1-hp-hpux10.20 |
GCC host triplet|hppa1.1-hp-hpux10.20 |
GCC target triplet|hppa1.1-hp-hpux10.20 |
Last reconfirmed|2006-02-15 09:15:24 |2006-02-17 20:33:15
date| |
Summary|FAIL: gfortran.fortran- |fallback scalbn doesn't
|torture/execute/intrinsic_se|handle denormals correctly
|t_exponent.f90 execution |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26253