https://github.com/cran/pracma
Tip revision: a7001ff1805634d18a10fa371b38dbe3e48f8c9e authored by HwB on 30 October 2011, 00:00:00 UTC
version 0.8.1
version 0.8.1
Tip revision: a7001ff
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)))
}