help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Possible loss of accuracy


From: Laurent Hoeltgen
Subject: Re: Possible loss of accuracy
Date: Wed, 15 May 2013 15:53:20 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130510 Thunderbird/17.0.6

On 15/05/13 11:27, Marco Caliari wrote:
Dear all,

if I compute

t=50
(1-2^(-t))^(2^t)

I get (different versions, machines, ...)

ans =  3.67879441128629e-01

which is correct to the 10th digit (compared with www.wolframalpha.com).
I can stay with it, but Matlab is correct to the 15th digit. While
trying to understand, I wrote the following Fortran code

program test
integer t
t = 50
write(6,'(1x,e24.16)') (1.d0-2.d0**(-t))**(2.d0**t)
write(6,'(1x,e24.16)') (1.d0-2.d0**(-50))**(2.d0**50)
stop
end

If I compile with gfortran test.f (gfortran 4.3.3) and run, I get

0.3678794411286288E+00 (~ Octave value)
0.3678794411714422E+00 (~ Matlab value)

and if I compile with gfortran -O2 test.f and run, I get

0.3678794411714422E+00
0.3678794411714422E+00

So, I understand that compiler optimizations are involved. On the other
hand, I compiled Octave with -O2 (and other flags).

Can anyone point me to the right direction?

Thanks,

Marco
_______________________________________________
Help-octave mailing list
address@hidden
https://mailman.cae.wisc.edu/listinfo/help-octave

Hi,

if I compile your program on my Xubuntu 12.04 laptop I get

   0.3678794411714422E+00
   0.3678794411714422E+00

with gfortran 4.6.4 and gfortran 4.8.0 (with -O2 and -O3 flags). Not sure if this is helpful for you, though.

Regards,
Laurent


reply via email to

[Prev in Thread] Current Thread [Next in Thread]