let solve a b =
(* (* This is the debug version, with a matrix multiplication to check. *)
let _a = copy a in
let _b = Array.copy b in
print_sys_silhouette a b ;
gauss a b ;
print_sys_silhouette a b ;
let x = basic_solve a b in
Printf.printf "
(error b
(Array.make (Array.length b) 0.)) ;
(* Below is a check of the corectness of the result. *)
let vx = of_vector_v x in
let b = _b in
let ax = to_vector_v (mult _a vx) in
let e = error ax b in
Printf.printf " e ;
if e>0.1 then raise (Error e) ;
x
*)
gauss a b ;
basic_solve a b