This is the mail archive of the
mailing list for the GCC project.
- To: Philippe Després <p0663835 at magellan dot umontreal dot ca>
- Subject: Re: _FP_SETCW()
- From: tprinceusa at mindspring dot com
- Date: Tue, 08 May 2001 15:08:37 -0400
- Cc: gcc at gcc dot gnu dot org
Philippe =?iso-8859-1?Q?Despr=E9s?= <firstname.lastname@example.org> wrote:
anyone know how to set the control word from fpu_control.h to obtain a
floating point behavior like the one on Windows (VC++), i.e. that for a
printf("%20.20f",x); on windows gives
x=0.98006657784124163000 (zeros after the 17th digit)
on linux, those zeros are filled with something else and my results
depends on this...
Actually, I use
fp_ctrl=(_FPU_DEFAULT & ~ _FPU_EXTENDED)|_FPU_DOUBLE;
You are mixing enough issues together that it is difficult to tell what you want. Yes, you can set the ia32 processor to 53-bit rounding mode, as VC++ does without giving you an option. Whether the way you mention is the right one for your linux installation depends on which library you have. Unless you use long double formats in your conversion, and leave the cpu in long double rounding mode, digits after the 17th are meaningless. The IEEE 754 standard specifically required 17 significant digits when in 53-bit rounding mode, and specifically allows the remainder to be set zero or implementation dependent. If your program requires 53-bit rounding mode and depends on the digits beyond the 17th, it could be considered erroneous.