Mail Archives: cygwin/2000/07/10/19:46:30
In porting some astronomical data handling software from linux/unix to
Cygwin (the latest nework release, 1.1.0 I believe), I discovered an
error in how gcc 2.95.2-2 generates output of a floating or double
variable set to 0.0 when formatted with a %E format. I didn't get any
hits on this problem in the FAQ or mail lists. The following little
test program illustrates the problem:
main()
{
float value = 0.0;
double dvalue = 0.0;
printf("%11.0f %15.6f %13.5E\n",value,value,value);
printf("%11.0f %15.6f %21.14E\n",dvalue,dvalue,dvalue);
dvalue = value = 3.0;
printf("%11.0f %15.6f %13.5E\n",value,value,value);
printf("%11.0f %15.6f %21.14E\n",dvalue,dvalue,dvalue);
}
Under linux/unix, this little program produces the following
output:
0 0.000000 0.00000E+00
0 0.000000 0.00000000000000E+00
3 3.000000 3.00000E+00
3 3.000000 3.00000000000000E+00
But the following is produced by the Cygwin gcc 2.95.2-2:
0 0.000000 0.
0 0.000000 0.
3 3.000000 3.00000E+00
3 3.000000 3.00000000000000E+00
When the output is sent to the terminal screen, the results for 0.0 with
the E format come out as 0. followed by some "strange" characters and
then E+00. Saving stdout to a file and then moving from Cygwin to linux,
I find there are a bunch of control characters after the leading 0. and
preceeding the E+00.
Sorry, I don't know enough about compilers to even take a wack a solving
this problem, but would very much appreciate a patch for the sources
or a working binary with the patch incorporated if someone could kindly
generate one.
Thanks,
Jim Heasley
Professor of Astronomy
Institute for Astronomy heasley AT hoku DOT ifa DOT hawaii DOT edu
University of Hawaii phone: 808-956-6826
2680 Woodlawn Drive fax: 808-956-9580
Honolulu, HI 96822
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -