| log1mexp {DPQ} | R Documentation |
Compute f(a) = log(1 - exp(-a)) quickly and numerically accurately.
log1mexp() is simple pure R code;
log1mexpC() is an interface to R C API (‘Mathlib’ / ‘Rmath.h’)
function.
log1pexpC() is an interface to R's ‘Mathlib’ double
function log1pexp() which computes log(1 + exp(x)),
accurately, notably for large x, say, x > 720.
log1mexp (x) log1mexpC(x) log1pexpC(x)
x |
numeric vector of positive values. |
Martin Maechler
Martin Mächler (2012). Accurately Computing \log(1-\exp(-|a|)); https://CRAN.R-project.org/package=Rmpfr/vignettes/log1mexp-note.pdf.
The log1mexp() function in CRAN package copula,
and the corresponding vignette (in the ‘References’).
l1m.xy <- curve(log1mexp(x), -10, 10, n=1001)
stopifnot(with(l1m.xy, all.equal(y, log1mexpC(x))))
x <- seq(0, 710, length=1+710*2^4); stopifnot(diff(x) == 1/2^4)
l1pm <- cbind(log1p(exp(x)),
log1pexpC(x))
matplot(x, l1pm, type="l", log="xy") # both look the same
iF <- is.finite(l1pm[,1])
stopifnot(all.equal(l1pm[iF,2], l1pm[iF,1], tol=1e-15))