[R] Precision in estimating log
Duncan Murdoch
murdoch at stats.uwo.ca
Fri May 19 14:32:40 CEST 2006
On 5/19/2006 8:25 AM, Gichangi, Anthony wrote:
> Hi R-users,
>
> I have the following code:
>
> f <-function(x,p)sqrt(-(x^2)-2*log(1-p))
>
> r1 <-sqrt(-2*log(1-0.95))
>
> r2 <-sqrt(-2*log(0.05))
>
> on executing i get the following results
>
>> f(r1,0.95)
> [1] 0
>> f(r2,0.95)
> [1] NaN
> Warning message:
> NaNs produced in: sqrt(-(x^2) - 2 * log(1 - p))
>
> I tried to track the problem and found that the answer to
> log(0.05) is different from the answer to log(1-0.95) which
> is ofcourse not true and hence it causes problems in the code
>
> print(log(0.05),digit=22)
>
> [1] -2.9957322735539909
>> print(log(1-0.95),digit=22)
>
> [1] -2.99573227355399
>
>
> Any possible explanation ?
R uses finite precision arithmetic, usually giving around 15-16 digit
accuracy. Your results agree in the first 15 digits.
Duncan Murdoch
More information about the R-help
mailing list