sig
  module Vec :
    sig
      type t = float array
      val copy : Linear_algebra.Vec.t -> Linear_algebra.Vec.t
      val create0 : int -> Linear_algebra.Vec.t
      val sumsq : Linear_algebra.Vec.t -> float
      val norm : Linear_algebra.Vec.t -> float
      val t_of_sexp : Sexplib.Sexp.t -> Linear_algebra.Vec.t
      val sexp_of_t : Linear_algebra.Vec.t -> Sexplib.Sexp.t
    end
  module Mat :
    sig
      type t = float array array
      val copy : Linear_algebra.Mat.t -> Linear_algebra.Mat.t
      val create0 : rows:int -> cols:int -> Linear_algebra.Mat.t
      val create_per_row :
        rows:int -> cols:int -> f:(int -> float) -> Linear_algebra.Mat.t
      val get_column : Linear_algebra.Mat.t -> int -> Linear_algebra.Vec.t
      val t_of_sexp : Sexplib.Sexp.t -> Linear_algebra.Mat.t
      val sexp_of_t : Linear_algebra.Mat.t -> Sexplib.Sexp.t
    end
  val qr :
    ?in_place:bool ->
    Linear_algebra.Mat.t -> Linear_algebra.Mat.t * Linear_algebra.Mat.t
  val triu_solve :
    Linear_algebra.Mat.t ->
    Linear_algebra.Vec.t -> Linear_algebra.Vec.t Core.Std.Or_error.t
  val mul_mv :
    ?transa:bool ->
    Linear_algebra.Mat.t -> Linear_algebra.Vec.t -> Linear_algebra.Vec.t
  val ols :
    ?in_place:bool ->
    Linear_algebra.Mat.t ->
    Linear_algebra.Vec.t -> Linear_algebra.Vec.t Core.Std.Or_error.t
end