let eratosthenes n = ...
C.(i).(j) = sum 0 n (fun k -> A.(i).(k)*B.(k).(j))
let det2 A = ... let rec det (* n = Array.length A *) A = ... uses minors