help-octave
[Top][All Lists]
Advanced

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

Possible loss of accuracy


From: Marco Caliari
Subject: Possible loss of accuracy
Date: Wed, 15 May 2013 11:27:01 +0200 (CEST)
User-agent: Alpine 1.00 (DEB 882 2007-12-20)

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


reply via email to

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