[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