func agm(a, g) { loop { var (a1, g1) = ((a+g)/2, sqrt(a*g)) [a1,g1] == [a,g] && return a (a, g) = (a1, g1) } } say agm(1, 1/sqrt(2))