$define EPS = 1e-14 local function agm(a, g) while math.abs(a - g) > math.abs(a) * EPS do a, g = (a + g) / 2, math.sqrt(a * g) end return a end print(agm(1.0, 1.0 /math.sqrt(2)))