help-octave
[Top][All Lists]
Advanced

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

Re: Possible loss of accuracy


From: John W. Eaton
Subject: Re: Possible loss of accuracy
Date: Wed, 15 May 2013 12:59:10 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.11) Gecko/20121122 Icedove/10.0.11

On 05/15/2013 05:27 AM, 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

I don't know what the problem is, but with Octave 3.6.2 on my system,
I get 0.367879441171442 for your expression.

jwe


reply via email to

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