https://github.com/cran/pracma
Tip revision: 63f12837f2d7d6d30cdc2b2df60efdef228d8d0f authored by HwB on 10 May 2011, 00:00:00 UTC
version 0.4-0
version 0.4-0
Tip revision: 63f1283
agm.R
##
## a g m . R Arithmetic-geometric Mean
##
agm <- function(a, b, maxiter = 25, tol = .Machine$double.eps^(1/2)) {
stopifnot(is.numeric(a), length(a) == 1, a >= 0,
is.numeric(b), length(b) == 1, b >= 0)
niter <- 0
while (abs(a-b) >= tol && niter <= maxiter) {
a1 <- (a + b) / 2
b1 <- sqrt(a * b)
a <- a1
b <- b1
niter <- niter + 1
}
if (niter > maxiter)
warning("Maximum number of allowed iterations exceeded.")
return(list(agm=(a+b)/2, niter = niter, estim.prec = abs(a-b)))
}