regression in list directed write
Paul Thomas
paulthomas2@wanadoo.fr
Mon Jan 10 16:15:00 GMT 2005
>
> This works for me on i386-*-freebsd. That error message
> originates in only 1 place in io/write.c in output_float.
Indeed, I just did a grep on the error message "printf is broken" to find
that.
> To call output_float, you need to get pass an if()
> statement that uses isfinite() and isnan(). Are these
> functions working correctly on your target.
>
I had tested that printf and sprintf are correctly yielding NaN and
Infinity.
However, isfinite and isnan are indeed broken in gcc-4.0 for both float and
double. isnan works for float in the Cygwin supplied gcc-3.3 but the other
combos are broken.
#include <stdio.h>
#include <math.h>
int main( void)
{
float x =0.0, y=0.0;
char outc[30];
sprintf(outc , "x/y = %+-#31.*e" , 10 , x/y );
printf("%s\n" , outc );
printf("isfinite=%d isnan=%d \n" , isfinite( x/y ) , isnan( x/y) );
return 0;
}
Paul Thomas
More information about the Fortran
mailing list