Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Statistics
- const tol = 1e-9 # tolerance threshold
- const expo = 1/3 # cube root exponent
- function agm(x::Real, y::Real)
- while abs(x - y) > tol
- a = (x + y)/2
- b = sqrt(x*y)
- x, y = a, b
- end
- return x
- end
- function gmdm(x::Array{<:Real})
- a = mean(x)
- g = (prod(x))^(1/length(x))
- m = median(x)
- x = [a, g, m]
- smallest, largest = extrema(x)
- while largest - smallest > tol
- a = mean(x)
- g = (prod(x))^expo
- m = median(x)
- x = [a, g, m]
- smallest, largest = extrema(x)
- end
- return a
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement