factorialMpfr {Rmpfr} | R Documentation |
Factorial 'n!' in Arbitrary Precision
Description
Efficiently compute n!
in arbitrary precision,
using the MPFR-internal implementation.
This is mathematically (but not numerically) the same as
\Gamma(n+1)
.
factorialZ
(package gmp) should typically be
used instead of factorialMpfr()
nowadays. Hence,
factorialMpfr
now is somewhat deprecated.
Usage
factorialMpfr(n, precBits = max(2, ceiling(lgamma(n+1)/log(2))),
rnd.mode = c("N","D","U","Z","A"))
Arguments
n |
non-negative integer (vector). |
precBits |
desired precision in bits (“binary digits”); the default sets the precision high enough for the result to be exact. |
rnd.mode |
a 1-letter string specifying how rounding
should happen at C-level conversion to MPFR, see |
Value
a number of (S4) class mpfr
.
See Also
factorial
and gamma
in base R.
factorialZ
(package gmp), to replace
factorialMpfr
, see above.
chooseMpfr()
and pochMpfr()
(on the same page).
Examples
factorialMpfr(200)
n <- 1000:1010
f1000 <- factorialMpfr(n)
stopifnot(1e-15 > abs(as.numeric(1 - lfactorial(n)/log(f1000))))
## Note that---astonishingly--- measurements show only
## *small* efficiency gain of ~ 10% : over using the previous "technique"
system.time(replicate(8, f1e4 <- factorialMpfr(10000)))
system.time(replicate(8, f.1e4 <- factorial(mpfr(10000,
prec=1+lfactorial(10000)/log(2)))))
[Package Rmpfr version 0.9-5 Index]