sig
  type t = Sundials.RealArray2.t
  val make : int -> int -> float -> Sundials_Matrix.ArrayDense.t
  val create : int -> int -> Sundials_Matrix.ArrayDense.t
  val size : Sundials_Matrix.ArrayDense.t -> int * int
  val pp : Stdlib.Format.formatter -> Sundials_Matrix.ArrayDense.t -> unit
  val get : Sundials_Matrix.ArrayDense.t -> int -> int -> float
  val set : Sundials_Matrix.ArrayDense.t -> int -> int -> float -> unit
  val update :
    Sundials_Matrix.ArrayDense.t -> int -> int -> (float -> float) -> unit
  val unwrap : Sundials_Matrix.ArrayDense.t -> Sundials.RealArray2.data
  val ops :
    (Sundials_Matrix.ArrayDense.t, Sundials.RealArray.t)
    Sundials_Matrix.matrix_ops
  val scale_add :
    float ->
    Sundials_Matrix.ArrayDense.t -> Sundials_Matrix.ArrayDense.t -> unit
  val scale_addi : float -> Sundials_Matrix.ArrayDense.t -> unit
  val matvec :
    Sundials_Matrix.ArrayDense.t ->
    Sundials.RealArray.t -> Sundials.RealArray.t -> unit
  val set_to_zero : Sundials_Matrix.ArrayDense.t -> unit
  val blit :
    src:Sundials_Matrix.ArrayDense.t ->
    dst:Sundials_Matrix.ArrayDense.t -> unit
  val space : Sundials_Matrix.ArrayDense.t -> int * int
  val add_identity : Sundials_Matrix.ArrayDense.t -> unit
  val scale : float -> Sundials_Matrix.ArrayDense.t -> unit
  val getrf : Sundials_Matrix.ArrayDense.t -> Sundials.LintArray.t -> unit
  val getrs :
    Sundials_Matrix.ArrayDense.t ->
    Sundials.LintArray.t -> Sundials.RealArray.t -> unit
  val getrs' :
    Sundials_Matrix.ArrayDense.t ->
    Sundials.LintArray.t -> Sundials.RealArray.t -> int -> unit
  val potrf : Sundials_Matrix.ArrayDense.t -> unit
  val potrs : Sundials_Matrix.ArrayDense.t -> Sundials.RealArray.t -> unit
  val geqrf :
    Sundials_Matrix.ArrayDense.t ->
    Sundials.RealArray.t -> Sundials.RealArray.t -> unit
  val ormqr :
    a:Sundials_Matrix.ArrayDense.t ->
    beta:Sundials.RealArray.t ->
    v:Sundials.RealArray.t ->
    w:Sundials.RealArray.t -> work:Sundials.RealArray.t -> unit
end