logcf {DPQ} | R Documentation |
Compute a continued fraction approximation to the series (infinite sum)
sum(k=0,...,Inf; x^k/(i+k*d)) = 1/i + x/(i+d) + x^2/(i+2*d) + x^3/(i+3*d) + ...
Needed as auxiliary function in log1pmx()
and lgamma1p()
.
logcfR (x, i, d, eps, maxit = 10000L, trace = FALSE) logcfR.(x, i, d, eps, maxit = 10000L, trace = FALSE) logcf (x, i, d, eps, trace = FALSE)
x |
numeric vector, "mpfr" now works, too. |
i |
positive numeric |
d |
non-negative numeric |
eps |
positive number, the convergence tolerance. |
maxit |
a positive integer, the maximal number of iterations or terms in the truncated series used. |
trace |
logical (or non-negative integer in the future) indicating if (and how much) diagnostic output should be printed to the console during the computations. |
logcfR.()
:the first pure R version where the iterations happen
vectorized in x
, i.e., relatively fast; however
convergence and rescaling are a “group decision” which is
really suboptimal for reproducibility or careful comparisons.
logcfR()
:a pure R version where each x[i]
is
treated separately, hence “properly” vectorized, but slowly
so. Now recommended when x
is an "mpfr"-number vector.
logcf()
:only for numeric
x
, calls
into (a clone of) R's own (non-API currently) logcf()
C
Mathlib function.
a numeric-alike vector with the same attributes as x
.
Rescaling is done by (namespace hidden) “global”
scalefactor
which is 2^{256}, represented exactly (in
double
precision).
Martin Maechler, based on R's ‘nmath/pgamma.c’ implementation.
lgamma1p
, log1pmx
, and
pbeta
, whose prinicipal algorithm has evolved from TOMS 708.
l32 <- curve(logcf(x, 3,2, eps=1e-7), -3, 1) abline(h=0,v=1, lty=3, col="gray50") plot(y~x, l32, log="y", type = "o", main = "logcf(*, 3,2) in log-scale")