https://github.com/cran/pracma
Tip revision: c79a04b5074656b36e591191eb8137b70a349932 authored by Hans W. Borchers on 30 June 2014, 00:00:00 UTC
version 1.7.0
version 1.7.0
Tip revision: c79a04b
fact.R
##
## f a c t . R Factorial Function
##
fact <- function(n) {
if (!is.numeric(n))
stop("Argument 'n' must be a numeric vector or matrix.")
d <- dim(n)
n <- c(n)
n <- floor(n)
f <- rep(1, length(n))
i0 <- which(n > 170)
if (length(i0) > 0) f[i0] <- Inf
i1 <- which(n < 0)
if (length(i1) > 0) f[i1] <- NaN
i2 <- which(is.na(n))
if (length(i2) > 0) f[i2] <- NA
ii <- which(n > 0 & n <= 170)
if (length(ii) > 0) {
nn <- n[ii]
ff <- numeric(length(nn))
s = 1
for (k in 1:max(nn)) {
s <- s * k
p <- which(nn == k)
ff[p] <- s
}
f[ii] <- ff
}
dim(f) <- d
return(f)
}