https://github.com/cran/pracma
Raw File
Tip revision: 9a644c12884525087aa1db3ecf57586b29fb17d8 authored by HwB on 06 June 2011, 00:00:00 UTC
version 0.5-3
Tip revision: 9a644c1
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)))
}
back to top