Averages/Pythagorean means: Difference between revisions

means in ocaml
(add Ruby)
(means in ocaml)
Line 156:
print(a, g, h)
assert(a >= g and g >= h)</lang>
 
=={{header|OCaml}}==
 
The three means in one function
 
<lang ocaml>let means v = let n = Array.length v and a = ref 0.0 and b = ref 1.0 and c = ref 0.0 in
for i=0 to n-1 do a := !a +. v.(i); b := !b *. v.(i); c := !c +. 1.0/.v.(i) done;
let nn = float_of_int n in (!a /. nn, !b ** (1.0/.nn), nn /. !c);;</lang>
 
Sample output
<lang ocaml>means (Array.init 10 (function i -> (float_of_int (i+1))));;
(* (5.5, 4.5287286881167654, 3.4141715214740551) *)</lang>
 
=={{header|Oz}}==
506

edits