BLAS and LAPACK binding in OCaml with type-based static size checking for matrix operations