M(x, y) is a number between the geometric and arithmetic mean of x and y; in particular it is between x and y. If r > 0, then M(rx, ry) = r M(x, y).
Implementation
The following example code in the Scheme programming language computes the arithmetic-geometric mean of two positive real numbers:
(define agmean(lambda (a b epsilon) (letrec ((ratio-diff ; determine whether two numbers(lambda (a b) ; are already very close together (abs (/ (- a b) b)))) (loop ; actually do the computation (lambda (a b) ;; if they're already really close together, ;; just return the arithmetic mean (if (< (ratio-diff a b) epsilon) (/ (+ a b) 2) ;; otherwise, do another step (loop (sqrt (* a b)) (/ (+ a b) 2))))));; error checking (if (or (not (real? a))(not (real? b)) (<= a 0) (<= b 0)) (error 'agmean "~s and ~s must both be positive real numbers" a b) (loop a b)))))
One can show that
The geometric harmonic mean can be calculated by an analogous method, using sequences of geometric and harmonic means. The arithmetic harmonic mean is none other than the geometric mean.
See also: generalized mean