From: Daniel C. <dca...@gm...> - 2013-01-30 13:54:31
|
I've cut this problem down into a test program to keep this straight to the point: A test fortran program: program simple implicit none real*8 test test = 0.0277777777777776 write(*,*) 'test = ',test end program simple A test run compiling and testing between gfortran versions: C:\MinGW-GCC462>PATH=.\bin;.\lib C:\MinGW-GCC462>gfortran.exe --version GNU Fortran (GCC) 4.6.2 ... C:\MinGW-GCC462>gfortran -m32 -o test.exe test.f C:\MinGW-GCC462>test.exe test = 2.77777779847383499E-002 *<-- 17 Significant digits.* C:\MinGW-GCC462>cd C:\MinGW-GCC472 C:\MinGW-GCC472>gfortran.exe --version GNU Fortran (GCC) 4.7.2 ... C:\MinGW-GCC472>gfortran -m32 -o test.exe test.f C:\MinGW-GCC472>gfortran -m32 -o test.exe test.f C:\MinGW-GCC472>test test = 2.7777777984738350E-002 *<-- 16 Significant digits.* Why does a GCC 4.7.2 produced binary spit double precision FPs out to 16 places instead of 17 now by default. How annoying? Any thoughts? -- Daniel |
From: Keith M. <kei...@us...> - 2013-01-30 14:13:19
|
On 30 January 2013 13:54, Daniel Carrion <dca...@gm...> wrote: > A test fortran program: > > program simple > implicit none > real*8 test > test = 0.0277777777777776 > write(*,*) 'test = ',test > end program simple > C:\MinGW-GCC462>gfortran.exe --version > GNU Fortran (GCC) 4.6.2 > ... > C:\MinGW-GCC462>gfortran -m32 -o test.exe test.f > C:\MinGW-GCC462>test.exe > test = 2.77777779847383499E-002 <-- 17 Significant digits. How do you fit 17 decimal digits of precision into a 53 bit mantissa? > C:\MinGW-GCC472>gfortran.exe --version > GNU Fortran (GCC) 4.7.2 > ... > C:\MinGW-GCC472>gfortran -m32 -o test.exe test.f > C:\MinGW-GCC472>test > test = 2.7777777984738350E-002 <-- 16 Significant digits. Or even 16? > Why does a GCC 4.7.2 produced binary spit double precision FPs out to 16 > places instead of 17 now by default. How annoying? Any thoughts? Wrong question. You should be asking "why does gFORTRAN print REAL*8 values to a default precision of 17 digits, when the best that the format can support is a maximum of 15 digits"? In both cases, your output agrees, up to the available accuracy of the data format; the additional 2 digits, in both of these cases, are garbage. -- Regards, Keith. |
From: Daniel C. <dca...@gm...> - 2013-01-30 14:24:14
|
That's the answer I was looking for. Cheers Keith ---------- Forwarded message ---------- From: Keith Marshall <kei...@us...> Date: Thu, Jan 31, 2013 at 1:13 AM Subject: Re: [Mingw-users] Gfortran/GCC 4.6.2 - 4.7.2 significant digit differences. To: MinGW Users List <min...@li...> On 30 January 2013 13:54, Daniel Carrion <dca...@gm...> wrote: > A test fortran program: > > program simple > implicit none > real*8 test > test = 0.0277777777777776 > write(*,*) 'test = ',test > end program simple > C:\MinGW-GCC462>gfortran.exe --version > GNU Fortran (GCC) 4.6.2 > ... > C:\MinGW-GCC462>gfortran -m32 -o test.exe test.f > C:\MinGW-GCC462>test.exe > test = 2.77777779847383499E-002 <-- 17 Significant digits. How do you fit 17 decimal digits of precision into a 53 bit mantissa? > C:\MinGW-GCC472>gfortran.exe --version > GNU Fortran (GCC) 4.7.2 > ... > C:\MinGW-GCC472>gfortran -m32 -o test.exe test.f > C:\MinGW-GCC472>test > test = 2.7777777984738350E-002 <-- 16 Significant digits. Or even 16? > Why does a GCC 4.7.2 produced binary spit double precision FPs out to 16 > places instead of 17 now by default. How annoying? Any thoughts? Wrong question. You should be asking "why does gFORTRAN print REAL*8 values to a default precision of 17 digits, when the best that the format can support is a maximum of 15 digits"? In both cases, your output agrees, up to the available accuracy of the data format; the additional 2 digits, in both of these cases, are garbage. -- Regards, Keith. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_jan _______________________________________________ MinGW-users mailing list Min...@li... This list observes the Etiquette found at http://www.mingw.org/Mailing_Lists. We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated. _______________________________________________ You may change your MinGW Account Options or unsubscribe at: https://lists.sourceforge.net/lists/listinfo/mingw-users Also: mailto:min...@li...?subject=unsubscribe |