[R] (arbitrary) precision

Douglas Bates bates at stat.wisc.edu
Fri Feb 18 04:38:44 CET 2005


Gabor Grothendieck wrote:
> Michael Grottke <Michael.Grottke <at> duke.edu> writes:
> 
> 
> : I am currently using R for fitting a model to various data sets 
> : (minimizing the negative log-likelihood) and calculating a number of 
> : metrics based on the parameter estimates. Within these calculations, I 
> : have steps of the form
> : 
> : log(log(1+x)),
> : 
> : where x can be very small (e.g., around 1e-16). Unfortunately, the 
> : precision of doubles does not suffice for coping with the difference in 
> : the orders of magnitude of 1 and x: 1+x is rounded to 1.
> : 
> : One way for solving this problem seems to be to use an arbitrary 
> : precision library implemented in C and call the respective routines for 
> : calculating the logarithm(s) from within R.
> : 
> : My questions are as follows:
> : 1. Is there any better/more direct way to solve the problem?
> : 2. Is there any arbitrary precision library you can suggest in particular?
> : 
> 
> The approximation log(1+x) = x would be accuate to several decimal
> places in your case so your expression would reduce to 
> log(log(1+x)) = log(x).

Another possibility is to use the log1p function to evaluate log1p(x) = 
log(1+x).  The two expressions give similar answers in this case
 > options(digits=12)
 > log(log1p(1e-16))
[1] -36.8413614879
 > log(1e-16)
[1] -36.8413614879




More information about the R-help mailing list