sig
  type prec = Bigarray.float64_elt
  type num_type = float
  type ('indim, 'outdim, +'a) trans3 =
      ('indim, 'outdim, 'a) Slap_common.trans2
    constraint 'a = [< `N | `T ]
  type ('n, 'cnt_or_dsc) vec =
      ('n, Slap_D.num_type, Slap_D.prec, 'cnt_or_dsc) Slap_vec.t
  type ('m, 'n, 'cnt_or_dsc) mat =
      ('m, 'n, Slap_D.num_type, Slap_D.prec, 'cnt_or_dsc) Slap_mat.t
  type rprec = Bigarray.float64_elt
  type ('n, 'cnt_or_dsc) rvec =
      ('n, float, Slap_D.rprec, 'cnt_or_dsc) Slap_vec.t
  val prec : (Slap_D.num_type, Slap_D.prec) Bigarray.kind
  val rprec : (float, Slap_D.rprec) Bigarray.kind
  module Vec :
    sig
      module type CNTVEC =
        sig type n val value : (Slap_D.Vec.CNTVEC.n, 'cnt) Slap_D.vec end
      module type DSCVEC =
        sig
          type n
          val value : (Slap_D.Vec.DSCVEC.n, Slap_misc.dsc) Slap_D.vec
        end
      val cnt : ('n, Slap_misc.cnt) Slap_D.vec -> ('n, 'cnt) Slap_D.vec
      val empty : (Slap_size.z, 'cnt) Slap_D.vec
      val create : 'Slap_size.t -> ('n, 'cnt) Slap_D.vec
      val make : 'Slap_size.t -> Slap_D.num_type -> ('n, 'cnt) Slap_D.vec
      val make0 : 'Slap_size.t -> ('n, 'cnt) Slap_D.vec
      val make1 : 'Slap_size.t -> ('n, 'cnt) Slap_D.vec
      val init :
        'Slap_size.t -> (int -> Slap_D.num_type) -> ('n, 'cnt) Slap_D.vec
      val dim : ('n, 'cd) Slap_D.vec -> 'Slap_size.t
      val get_dyn : ('n, 'cd) Slap_D.vec -> int -> Slap_D.num_type
      val set_dyn : ('n, 'cd) Slap_D.vec -> int -> Slap_D.num_type -> unit
      val unsafe_get : ('n, 'cd) Slap_D.vec -> int -> Slap_D.num_type
      val unsafe_set : ('n, 'cd) Slap_D.vec -> int -> Slap_D.num_type -> unit
      val replace_dyn :
        ('n, 'cd) Slap_D.vec ->
        int -> (Slap_D.num_type -> Slap_D.num_type) -> unit
      val cons :
        ?y:('Slap_size.s, 'y_cd) Slap_D.vec ->
        Slap_D.num_type ->
        ('n, 'x_cd) Slap_D.vec -> ('Slap_size.s, 'y_cd) Slap_D.vec
      val hd : ('Slap_size.s, 'x_cd) Slap_D.vec -> Slap_D.num_type
      val hd_dyn : ('n, 'x_cd) Slap_D.vec -> Slap_D.num_type
      val last : ('Slap_size.s, 'x_cd) Slap_D.vec -> Slap_D.num_type
      val last_dyn : ('n, 'x_cd) Slap_D.vec -> Slap_D.num_type
      val tl :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('Slap_size.s, 'x_cd) Slap_D.vec -> ('n, 'x_cd) Slap_D.vec
      val tl_dyn :
        ?y:('Slap_size.p, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('Slap_size.p, 'x_cd) Slap_D.vec
      val inits :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('Slap_size.s, 'x_cd) Slap_D.vec -> ('n, 'x_cd) Slap_D.vec
      val inits_dyn :
        ?y:('Slap_size.p, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('Slap_size.p, 'x_cd) Slap_D.vec
      val copy :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val fill : ('n, 'cd) Slap_D.vec -> Slap_D.num_type -> unit
      val append :
        ('m, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> (('m, 'n) Slap_size.add, 'cnt) Slap_D.vec
      val shared_rev : ('n, 'cd) Slap_D.vec -> ('n, 'cd) Slap_D.vec
      val rev : ('n, 'cd) Slap_D.vec -> ('n, 'cd) Slap_D.vec
      val to_array : ('n, 'cd) Slap_D.vec -> Slap_D.num_type array
      val of_array_dyn :
        'Slap_size.t -> Slap_D.num_type array -> ('n, 'cnt) Slap_D.vec
      val of_array : Slap_D.num_type array -> (module Slap_D.Vec.CNTVEC)
      module Of_array :
        functor (X : sig val value : Slap_D.num_type array end-> CNTVEC
      val unsafe_of_array :
        'Slap_size.t -> Slap_D.num_type array -> ('n, 'cnt) Slap_D.vec
      val to_list : ('n, 'cd) Slap_D.vec -> Slap_D.num_type list
      val of_list_dyn :
        'Slap_size.t -> Slap_D.num_type list -> ('n, 'cnt) Slap_D.vec
      val of_list : Slap_D.num_type list -> (module Slap_D.Vec.CNTVEC)
      module Of_list :
        functor (X : sig val value : Slap_D.num_type list end-> CNTVEC
      val unsafe_of_list :
        'Slap_size.t -> Slap_D.num_type list -> ('n, 'cnt) Slap_D.vec
      val to_bigarray :
        ('n, 'cd) Slap_D.vec ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val of_bigarray_dyn :
        ?share:bool ->
        'Slap_size.t ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array1.t -> ('n, 'cnt) Slap_D.vec
      val of_bigarray :
        ?share:bool ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array1.t -> (module Slap_D.Vec.CNTVEC)
      module Of_bigarray :
        functor
          (X : sig
                 val share : bool
                 val value :
                   (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
                   Bigarray.Array1.t
               end->
          CNTVEC
      val unsafe_of_bigarray :
        ?share:bool ->
        'Slap_size.t ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array1.t -> ('n, 'cnt) Slap_D.vec
      val of_array_c :
        Slap_D.num_type array ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_vec.dyn
      val of_list_c :
        Slap_D.num_type list ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_vec.dyn
      val of_bigarray_c :
        ?share:bool ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array1.t ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_vec.dyn
      val map :
        (Slap_D.num_type -> Slap_D.num_type) ->
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val mapi :
        (int -> Slap_D.num_type -> Slap_D.num_type) ->
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val fold_left :
        ('accum -> Slap_D.num_type -> 'accum) ->
        'accum -> ('n, 'cd) Slap_D.vec -> 'accum
      val fold_lefti :
        (int -> 'accum -> Slap_D.num_type -> 'accum) ->
        'accum -> ('n, 'cd) Slap_D.vec -> 'accum
      val fold_right :
        (Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'cd) Slap_D.vec -> 'accum -> 'accum
      val fold_righti :
        (int -> Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'cd) Slap_D.vec -> 'accum -> 'accum
      val replace_all :
        ('n, 'cd) Slap_D.vec -> (Slap_D.num_type -> Slap_D.num_type) -> unit
      val replace_alli :
        ('n, 'cd) Slap_D.vec ->
        (int -> Slap_D.num_type -> Slap_D.num_type) -> unit
      val iter : (Slap_D.num_type -> unit) -> ('n, 'cd) Slap_D.vec -> unit
      val iteri :
        (int -> Slap_D.num_type -> unit) -> ('n, 'cd) Slap_D.vec -> unit
      val map2 :
        (Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type) ->
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val mapi2 :
        (int -> Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type) ->
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val fold_left2 :
        ('accum -> Slap_D.num_type -> Slap_D.num_type -> 'accum) ->
        'accum -> ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> 'accum
      val fold_lefti2 :
        (int -> 'accum -> Slap_D.num_type -> Slap_D.num_type -> 'accum) ->
        'accum -> ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> 'accum
      val fold_right2 :
        (Slap_D.num_type -> Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> 'accum -> 'accum
      val fold_righti2 :
        (int -> Slap_D.num_type -> Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> 'accum -> 'accum
      val iter2 :
        (Slap_D.num_type -> Slap_D.num_type -> unit) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> unit
      val iteri2 :
        (int -> Slap_D.num_type -> Slap_D.num_type -> unit) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> unit
      val map3 :
        (Slap_D.num_type ->
         Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type) ->
        ?w:('n, 'w_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec ->
        ('n, 'z_cd) Slap_D.vec -> ('n, 'w_cd) Slap_D.vec
      val mapi3 :
        (int ->
         Slap_D.num_type ->
         Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type) ->
        ?w:('n, 'w_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec ->
        ('n, 'z_cd) Slap_D.vec -> ('n, 'w_cd) Slap_D.vec
      val fold_left3 :
        ('accum ->
         Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type -> 'accum) ->
        'accum ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> 'accum
      val fold_lefti3 :
        (int ->
         'accum ->
         Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type -> 'accum) ->
        'accum ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> 'accum
      val fold_right3 :
        (Slap_D.num_type ->
         Slap_D.num_type -> Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> 'accum -> 'accum
      val fold_righti3 :
        (int ->
         Slap_D.num_type ->
         Slap_D.num_type -> Slap_D.num_type -> 'accum -> 'accum) ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> 'accum -> 'accum
      val iter3 :
        (Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type -> unit) ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> unit
      val iteri3 :
        (int -> Slap_D.num_type -> Slap_D.num_type -> Slap_D.num_type -> unit) ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec -> unit
      val for_all : (Slap_D.num_type -> bool) -> ('n, 'cd) Slap_D.vec -> bool
      val exists : (Slap_D.num_type -> bool) -> ('n, 'cd) Slap_D.vec -> bool
      val for_all2 :
        (Slap_D.num_type -> Slap_D.num_type -> bool) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> bool
      val exists2 :
        (Slap_D.num_type -> Slap_D.num_type -> bool) ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> bool
      val max : ('n, 'cd) Slap_D.vec -> Slap_D.num_type
      val min : ('n, 'cd) Slap_D.vec -> Slap_D.num_type
      val sum : ('n, 'cd) Slap_D.vec -> Slap_D.num_type
      val prod : ('n, 'cd) Slap_D.vec -> Slap_D.num_type
      val add_const :
        Slap_D.num_type ->
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val sqr_nrm2 : ?stable:bool -> ('n, 'cd) Slap_D.vec -> float
      val ssqr :
        ?c:Slap_D.num_type -> ('n, 'cd) Slap_D.vec -> Slap_D.num_type
      val sort :
        ?cmp:(Slap_D.num_type -> Slap_D.num_type -> int) ->
        ?decr:bool ->
        ?p:('n, 'p_cd) Slap_common.int_vec -> ('n, 'x_cd) Slap_D.vec -> unit
      val neg :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val reci :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val add :
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val sub :
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val mul :
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val div :
        ?z:('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val zpxy :
        ('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val zmxy :
        ('n, 'z_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec ->
        ('n, 'y_cd) Slap_D.vec -> ('n, 'z_cd) Slap_D.vec
      val ssqr_diff :
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> Slap_D.num_type
      val subcntvec_dyn :
        'Slap_size.t ->
        ?ofsx:int -> ('n, Slap_misc.cnt) Slap_D.vec -> ('m, 'cnt) Slap_D.vec
      val subdscvec_dyn :
        'Slap_size.t ->
        ?ofsx:int ->
        ?incx:int -> ('n, 'cd) Slap_D.vec -> ('m, Slap_misc.dsc) Slap_D.vec
      val subvec_dyn :
        'Slap_size.t ->
        ?ofsx:int ->
        ?incx:int -> ('n, 'cd) Slap_D.vec -> ('m, Slap_misc.dsc) Slap_D.vec
      val random :
        ?rnd_state:Random.State.t ->
        ?from:float ->
        ?range:float -> 'Slap_size.t -> ('n, 'cnt) Slap_D.vec
      val sqr :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val sqrt :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val exp :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val log :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val sin :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
      val cos :
        ?y:('n, 'y_cd) Slap_D.vec ->
        ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
    end
  module Mat :
    sig
      module type CNTMAT =
        sig
          type m
          type n
          val value :
            (Slap_D.Mat.CNTMAT.m, Slap_D.Mat.CNTMAT.n, 'cnt) Slap_D.mat
        end
      module type DSCMAT =
        sig
          type m
          type n
          val value :
            (Slap_D.Mat.DSCMAT.m, Slap_D.Mat.DSCMAT.n, Slap_misc.dsc)
            Slap_D.mat
        end
      val cnt :
        ('m, 'n, Slap_misc.cnt) Slap_D.mat -> ('m, 'n, 'cnt) Slap_D.mat
      val empty : (Slap_size.z, Slap_size.z, 'cnt) Slap_D.mat
      val create :
        'Slap_size.t -> 'Slap_size.t -> ('m, 'n, 'cnt) Slap_D.mat
      val make :
        'Slap_size.t ->
        'Slap_size.t -> Slap_D.num_type -> ('m, 'n, 'cnt) Slap_D.mat
      val make0 :
        'Slap_size.t -> 'Slap_size.t -> ('m, 'n, 'cnt) Slap_D.mat
      val make1 :
        'Slap_size.t -> 'Slap_size.t -> ('m, 'n, 'cnt) Slap_D.mat
      val identity : 'Slap_size.t -> ('n, 'n, 'cnt) Slap_D.mat
      val init :
        'Slap_size.t ->
        'Slap_size.t ->
        (int -> int -> Slap_D.num_type) -> ('m, 'n, 'cnt) Slap_D.mat
      val init_cols :
        'Slap_size.t ->
        'Slap_size.t ->
        (int -> int -> Slap_D.num_type) -> ('m, 'n, 'cnt) Slap_D.mat
      val init_rows :
        'Slap_size.t ->
        'Slap_size.t ->
        (int -> int -> Slap_D.num_type) -> ('m, 'n, 'cnt) Slap_D.mat
      val dim : ('m, 'n, 'cd) Slap_D.mat -> 'Slap_size.t * 'Slap_size.t
      val dim1 : ('m, 'n, 'cd) Slap_D.mat -> 'Slap_size.t
      val dim2 : ('m, 'n, 'cd) Slap_D.mat -> 'Slap_size.t
      val get_dyn : ('m, 'n, 'cd) Slap_D.mat -> int -> int -> Slap_D.num_type
      val set_dyn :
        ('m, 'n, 'cd) Slap_D.mat -> int -> int -> Slap_D.num_type -> unit
      val unsafe_get :
        ('m, 'n, 'cd) Slap_D.mat -> int -> int -> Slap_D.num_type
      val unsafe_set :
        ('m, 'n, 'cd) Slap_D.mat -> int -> int -> Slap_D.num_type -> unit
      val col_dyn : ('m, 'n, 'cd) Slap_D.mat -> int -> ('m, 'cnt) Slap_D.vec
      val row_dyn :
        ('m, 'n, 'cd) Slap_D.mat -> int -> ('n, Slap_misc.dsc) Slap_D.vec
      val copy_row_dyn :
        ('m, 'n, 'cd) Slap_D.mat -> int -> ('n, 'cnt) Slap_D.vec
      val diag : ('n, 'n, 'cd) Slap_D.mat -> ('n, Slap_misc.dsc) Slap_D.vec
      val diag_rect :
        ('m, 'n, 'cd) Slap_D.mat ->
        (('m, 'n) Slap_size.min, Slap_misc.dsc) Slap_D.vec
      val copy_diag : ('n, 'n, 'cd) Slap_D.mat -> ('n, 'cnt) Slap_D.vec
      val copy_diag_rect :
        ('m, 'n, 'cd) Slap_D.mat -> (('m, 'n) Slap_size.min, 'cnt) Slap_D.vec
      val as_vec :
        ('m, 'n, Slap_misc.cnt) Slap_D.mat ->
        (('m, 'n) Slap_size.mul, 'cnt) Slap_D.vec
      val fill : ('m, 'n, 'cd) Slap_D.mat -> Slap_D.num_type -> unit
      val copy :
        ?uplo:[ `L | `U ] ->
        ?b:('m, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat
      val of_col_vecs_dyn :
        'Slap_size.t ->
        'Slap_size.t ->
        ('m, Slap_misc.cnt) Slap_D.vec array -> ('m, 'n, 'cnt) Slap_D.mat
      val to_array : ('m, 'n, 'cd) Slap_D.mat -> Slap_D.num_type array array
      val of_array_dyn :
        'Slap_size.t ->
        'Slap_size.t ->
        Slap_D.num_type array array -> ('m, 'n, 'cnt) Slap_D.mat
      val of_array :
        Slap_D.num_type array array -> (module Slap_D.Mat.CNTMAT)
      module Of_array :
        functor (X : sig val value : Slap_D.num_type array array end->
          CNTMAT
      val unsafe_of_array :
        'Slap_size.t ->
        'Slap_size.t ->
        Slap_D.num_type array array -> ('m, 'n, 'cnt) Slap_D.mat
      val to_list : ('m, 'n, 'cd) Slap_D.mat -> Slap_D.num_type list list
      val of_list_dyn :
        'Slap_size.t ->
        'Slap_size.t ->
        Slap_D.num_type list list -> ('m, 'n, 'cnt) Slap_D.mat
      val of_list : Slap_D.num_type list list -> (module Slap_D.Mat.CNTMAT)
      module Of_list :
        functor (X : sig val value : Slap_D.num_type list list end-> CNTMAT
      val unsafe_of_list :
        'Slap_size.t ->
        'Slap_size.t ->
        Slap_D.num_type list list -> ('m, 'n, 'cnt) Slap_D.mat
      val to_bigarray :
        ('m, 'n, 'cd) Slap_D.mat ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array2.t
      val of_bigarray_dyn :
        ?share:bool ->
        'Slap_size.t ->
        'Slap_size.t ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array2.t -> ('m, 'n, 'cnt) Slap_D.mat
      val of_bigarray :
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array2.t -> (module Slap_D.Mat.CNTMAT)
      module Of_bigarray :
        functor
          (X : sig
                 val value :
                   (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
                   Bigarray.Array2.t
               end->
          CNTMAT
      val unsafe_of_bigarray :
        ?share:bool ->
        'Slap_size.t ->
        'Slap_size.t ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array2.t -> ('m, 'n, 'cnt) Slap_D.mat
      val of_array_c :
        Slap_D.num_type array array ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_mat.dyn
      val of_list_c :
        Slap_D.num_type list list ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_mat.dyn
      val of_bigarray_c :
        ?share:bool ->
        (Slap_D.num_type, Slap_D.prec, Bigarray.fortran_layout)
        Bigarray.Array2.t ->
        (Slap_D.num_type, Slap_D.prec, 'cnt) Slap_mat.dyn
      val map :
        (Slap_D.num_type -> Slap_D.num_type) ->
        ?b:('m, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat
      val mapi :
        (int -> int -> Slap_D.num_type -> Slap_D.num_type) ->
        ?b:('m, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat
      val fold_left :
        ('accum -> ('m, 'x_cd) Slap_D.vec -> 'accum) ->
        'accum -> ('m, 'n, 'a_cd) Slap_D.mat -> 'accum
      val fold_lefti :
        (int -> 'accum -> ('m, 'x_cd) Slap_D.vec -> 'accum) ->
        'accum -> ('m, 'n, 'a_cd) Slap_D.mat -> 'accum
      val fold_right :
        (('m, 'x_cd) Slap_D.vec -> 'accum -> 'accum) ->
        ('m, 'n, 'a_cd) Slap_D.mat -> 'accum -> 'accum
      val fold_righti :
        (int -> ('m, 'x_cd) Slap_D.vec -> 'accum -> 'accum) ->
        ('m, 'n, 'a_cd) Slap_D.mat -> 'accum -> 'accum
      val fold_top :
        ('accum -> ('n, Slap_misc.dsc) Slap_D.vec -> 'accum) ->
        'accum -> ('m, 'n, 'a_cd) Slap_D.mat -> 'accum
      val fold_topi :
        (int -> 'accum -> ('n, Slap_misc.dsc) Slap_D.vec -> 'accum) ->
        'accum -> ('m, 'n, 'a_cd) Slap_D.mat -> 'accum
      val fold_bottom :
        (('n, Slap_misc.dsc) Slap_D.vec -> 'accum -> 'accum) ->
        ('m, 'n, 'a_cd) Slap_D.mat -> 'accum -> 'accum
      val fold_bottomi :
        (int -> ('n, Slap_misc.dsc) Slap_D.vec -> 'accum -> 'accum) ->
        ('m, 'n, 'a_cd) Slap_D.mat -> 'accum -> 'accum
      val replace_all :
        ('m, 'n, 'cd) Slap_D.mat ->
        (Slap_D.num_type -> Slap_D.num_type) -> unit
      val replace_alli :
        ('m, 'n, 'cd) Slap_D.mat ->
        (int -> int -> Slap_D.num_type -> Slap_D.num_type) -> unit
      val transpose_copy :
        ?b:('n, 'm, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat -> ('n, 'm, 'b_cd) Slap_D.mat
      val detri : ?up:bool -> ('n, 'n, 'cd) Slap_D.mat -> unit
      val packed :
        ?up:bool ->
        ?x:('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
        ('n, 'n, 'cd) Slap_D.mat -> ('Slap_size.packed, 'cnt) Slap_D.vec
      val unpacked :
        ?up:bool ->
        ?fill_num:Slap_D.num_type option ->
        ?a:('n, 'n, 'cd) Slap_D.mat ->
        ('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
        ('n, 'n, 'cd) Slap_D.mat
      val geband_dyn :
        'kl Slap_size.t ->
        'ku Slap_size.t ->
        ?b:(('m, 'n, 'kl, 'ku) Slap_size.geband, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat ->
        (('m, 'n, 'kl, 'ku) Slap_size.geband, 'n, 'b_cd) Slap_D.mat
      val ungeband :
        'Slap_size.t ->
        'kl Slap_size.t ->
        'ku Slap_size.t ->
        ?fill_num:Slap_D.num_type option ->
        ?a:('m, 'n, 'a_cd) Slap_D.mat ->
        (('m, 'n, 'kl, 'ku) Slap_size.geband, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat
      val syband_dyn :
        'kd Slap_size.t ->
        ?up:bool ->
        ?b:(('n, 'kd) Slap_size.syband, 'n, 'b_cd) Slap_D.mat ->
        ('n, 'n, 'a_cd) Slap_D.mat ->
        (('n, 'kd) Slap_size.syband, 'n, 'b_cd) Slap_D.mat
      val unsyband :
        'kd Slap_size.t ->
        ?up:bool ->
        ?fill_num:Slap_D.num_type option ->
        ?a:('n, 'n, 'a_cd) Slap_D.mat ->
        (('n, 'kd) Slap_size.syband, 'n, 'b_cd) Slap_D.mat ->
        ('n, 'n, 'a_cd) Slap_D.mat
      val luband_dyn :
        'kl Slap_size.t ->
        'ku Slap_size.t ->
        ?ab:(('m, 'n, 'kl, 'ku) Slap_size.luband, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat ->
        (('m, 'n, 'kl, 'ku) Slap_size.luband, 'n, 'b_cd) Slap_D.mat
      val unluband :
        'Slap_size.t ->
        'kl Slap_size.t ->
        'ku Slap_size.t ->
        ?fill_num:Slap_D.num_type option ->
        ?a:('m, 'n, 'a_cd) Slap_D.mat ->
        (('m, 'n, 'kl, 'ku) Slap_size.luband, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat
      val add_const :
        Slap_D.num_type ->
        ?b:('m, 'n, 'b_cd) Slap_D.mat ->
        ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat
      val sum : ('m, 'n, 'cd) Slap_D.mat -> Slap_D.num_type
      val trace : ('m, 'n, 'cd) Slap_D.mat -> Slap_D.num_type
      val scal : Slap_D.num_type -> ('m, 'n, 'cd) Slap_D.mat -> unit
      val scal_cols :
        ('m, 'n, 'cd) Slap_D.mat -> ('n, Slap_misc.cnt) Slap_D.vec -> unit
      val scal_rows :
        ('m, Slap_misc.cnt) Slap_D.vec -> ('m, 'n, 'cd) Slap_D.mat -> unit
      val axpy :
        ?alpha:Slap_D.num_type ->
        ('m, 'n, 'x_cd) Slap_D.mat -> ('m, 'n, 'y_cd) Slap_D.mat -> unit
      val gemm_diag :
        ?beta:Slap_D.num_type ->
        ?y:('n, Slap_misc.cnt) Slap_D.vec ->
        transa:('a_n * 'a_k, 'n * 'k, [< `N | `T ]) Slap_D.trans3 ->
        ?alpha:Slap_D.num_type ->
        ('a_n, 'a_k, 'a_cd) Slap_D.mat ->
        transb:('b_k * 'b_n, 'k * 'n, [< `N | `T ]) Slap_D.trans3 ->
        ('b_k, 'b_n, 'b_cd) Slap_D.mat -> ('n, 'cnt) Slap_D.vec
      val syrk_diag :
        ?beta:Slap_D.num_type ->
        ?y:('n, Slap_misc.cnt) Slap_D.vec ->
        trans:('a_n * 'a_k, 'n * 'k, [< `N | `T ]) Slap_common.trans2 ->
        ?alpha:Slap_D.num_type ->
        ('a_n, 'a_k, 'a_cd) Slap_D.mat -> ('n, 'cnt) Slap_D.vec
      val gemm_trace :
        transa:('a_n * 'a_k, 'n * 'k, [< `N | `T ]) Slap_D.trans3 ->
        ('a_n, 'a_k, 'a_cd) Slap_D.mat ->
        transb:('b_k * 'b_n, 'k * 'n, [< `N | `T ]) Slap_D.trans3 ->
        ('b_k, 'b_n, 'b_cd) Slap_D.mat -> Slap_D.num_type
      val syrk_trace : ('n, 'k, 'cd) Slap_D.mat -> Slap_D.num_type
      val symm2_trace :
        ?upa:bool ->
        ('n, 'n, 'a_cd) Slap_D.mat ->
        ?upb:bool -> ('n, 'n, 'b_cd) Slap_D.mat -> Slap_D.num_type
      val submat_dyn :
        'Slap_size.t ->
        'Slap_size.t ->
        ?ar:int ->
        ?ac:int ->
        ('a, 'b, 'cd) Slap_D.mat -> ('m, 'n, Slap_misc.dsc) Slap_D.mat
      val random :
        ?rnd_state:Random.State.t ->
        ?from:float ->
        ?range:float ->
        'Slap_size.t -> 'Slap_size.t -> ('m, 'n, 'cnt) Slap_D.mat
    end
  val pp_num : Format.formatter -> Slap_D.num_type -> unit
  val pp_vec : Format.formatter -> ('n, 'cnt_or_dsc) Slap_D.vec -> unit
  val pp_mat : Format.formatter -> ('m, 'n, 'cnt_or_dsc) Slap_D.mat -> unit
  val swap : ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> unit
  val scal : Slap_D.num_type -> ('n, 'cd) Slap_D.vec -> unit
  val copy :
    ?y:('n, 'y_cd) Slap_D.vec ->
    ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
  val nrm2 : ('n, 'cd) Slap_D.vec -> float
  val axpy :
    ?alpha:Slap_D.num_type ->
    ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> unit
  val iamax : ('n, 'cd) Slap_D.vec -> int
  val amax : ('n, 'cd) Slap_D.vec -> Slap_D.num_type
  val gemv :
    ?beta:Slap_D.num_type ->
    ?y:('m, 'y_cd) Slap_D.vec ->
    trans:('a_m * 'a_n, 'm * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?alpha:Slap_D.num_type ->
    ('a_m, 'a_n, 'a_cd) Slap_D.mat ->
    ('n, 'x_cd) Slap_D.vec -> ('m, 'y_cd) Slap_D.vec
  val gbmv :
    m:'a_m Slap_size.t ->
    ?beta:Slap_D.num_type ->
    ?y:('m, 'y_cd) Slap_D.vec ->
    trans:('a_m * 'a_n, 'm * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?alpha:Slap_D.num_type ->
    (('a_m, 'a_n, 'kl, 'ku) Slap_size.geband, 'a_n, 'a_cd) Slap_D.mat ->
    'kl Slap_size.t ->
    'ku Slap_size.t -> ('n, 'x_cd) Slap_D.vec -> ('m, 'y_cd) Slap_D.vec
  val symv :
    ?beta:Slap_D.num_type ->
    ?y:('n, 'y_cd) Slap_D.vec ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?alpha:Slap_D.num_type ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
  val trmv :
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'x_cd) Slap_D.vec -> unit
  val trsv :
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'b_cd) Slap_D.vec -> unit
  val tpmv :
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'x_cd) Slap_D.vec -> unit
  val tpsv :
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'x_cd) Slap_D.vec -> unit
  val gemm :
    ?beta:Slap_D.num_type ->
    ?c:('m, 'n, 'c_cd) Slap_D.mat ->
    transa:('a_m * 'a_k, 'm * 'k, [< `N | `T ]) Slap_D.trans3 ->
    ?alpha:Slap_D.num_type ->
    ('a_m, 'a_k, 'a_cd) Slap_D.mat ->
    transb:('b_k * 'b_n, 'k * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ('b_k, 'b_n, 'b_cd) Slap_D.mat -> ('m, 'n, 'c_cd) Slap_D.mat
  val symm :
    side:('k, 'm, 'n) Slap_common.side ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?beta:Slap_D.num_type ->
    ?c:('m, 'n, 'c_cd) Slap_D.mat ->
    ?alpha:Slap_D.num_type ->
    ('k, 'k, 'a_cd) Slap_D.mat ->
    ('m, 'n, 'b_cd) Slap_D.mat -> ('m, 'n, 'c_cd) Slap_D.mat
  val trmm :
    side:('k, 'm, 'n) Slap_common.side ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    transa:('k * 'k, 'k * 'k, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?alpha:Slap_D.num_type ->
    a:('k, 'k, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat -> unit
  val trsm :
    side:('k, 'm, 'n) Slap_common.side ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    transa:('k * 'k, 'k * 'k, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ?alpha:Slap_D.num_type ->
    a:('k, 'k, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat -> unit
  val syrk :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?beta:Slap_D.num_type ->
    ?c:('n, 'n, 'c_cd) Slap_D.mat ->
    trans:('a_n * 'a_k, 'n * 'k, [< `N | `T ]) Slap_common.trans2 ->
    ?alpha:Slap_D.num_type ->
    ('a_n, 'a_k, 'a_cd) Slap_D.mat -> ('n, 'n, 'c_cd) Slap_D.mat
  val syr2k :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?beta:Slap_D.num_type ->
    ?c:('n, 'n, 'c_cd) Slap_D.mat ->
    trans:('p * 'q, 'n * 'k, [< `N | `T ]) Slap_common.trans2 ->
    ?alpha:Slap_D.num_type ->
    ('p, 'q, 'a_cd) Slap_D.mat ->
    ('p, 'q, 'b_cd) Slap_D.mat -> ('n, 'n, 'c_cd) Slap_D.mat
  val lacpy :
    ?uplo:[< `A | `L | `U ] Slap_common.uplo ->
    ?b:('m, 'n, 'b_cd) Slap_D.mat ->
    ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'b_cd) Slap_D.mat
  val lassq :
    ?scale:float -> ?sumsq:float -> ('n, 'cd) Slap_D.vec -> float * float
  type larnv_liseed = Slap_size.four
  val larnv :
    ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
    ?iseed:(Slap_D.larnv_liseed, Slap_misc.cnt) Slap_common.int32_vec ->
    x:('n, Slap_misc.cnt) Slap_D.vec -> unit -> ('n, 'cnt) Slap_D.vec
  type ('m, 'a) lange_min_lwork
  val lange_min_lwork :
    'Slap_size.t ->
    ([< `F | `I | `M | `O ] as 'a) Slap_common.norm4 ->
    ('m, 'a) Slap_D.lange_min_lwork Slap_size.t
  val lange :
    ?norm:[< `F | `I | `M | `O ] Slap_common.norm4 ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.rvec ->
    ('m, 'n, 'cd) Slap_D.mat -> float
  val lauum :
    ?up:[< `L | `U ] Slap_common.uplo -> ('n, 'n, 'cd) Slap_D.mat -> unit
  val getrf :
    ?ipiv:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_common.int32_vec ->
    ('m, 'n, 'cd) Slap_D.mat ->
    (('m, 'n) Slap_size.min, 'cnt) Slap_common.int32_vec
  val getrs :
    ?ipiv:(('n, 'n) Slap_size.min, Slap_misc.cnt) Slap_common.int32_vec ->
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'n, 'b_cd) Slap_D.mat -> unit
  type 'n getri_min_lwork
  val getri_min_lwork :
    'Slap_size.t -> 'Slap_D.getri_min_lwork Slap_size.t
  val getri_opt_lwork : ('n, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val getri :
    ?ipiv:(('n, 'n) Slap_size.min, Slap_misc.cnt) Slap_common.int32_vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'cd) Slap_D.mat -> unit
  type sytrf_min_lwork
  val sytrf_min_lwork : unit -> Slap_D.sytrf_min_lwork Slap_size.t
  val sytrf_opt_lwork :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val sytrf :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'cd) Slap_D.mat -> ('n, 'cnt) Slap_common.int32_vec
  val sytrs :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  type 'n sytri_min_lwork
  val sytri_min_lwork :
    'Slap_size.t -> 'Slap_D.sytri_min_lwork Slap_size.t
  val sytri :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'cd) Slap_D.mat -> unit
  val potrf :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?jitter:Slap_D.num_type -> ('n, 'n, 'cd) Slap_D.mat -> unit
  val potrs :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ?factorize:bool ->
    ?jitter:Slap_D.num_type -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val potri :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?factorize:bool ->
    ?jitter:Slap_D.num_type -> ('n, 'n, 'cd) Slap_D.mat -> unit
  val trtrs :
    ?up:[< `L | `U ] Slap_common.uplo ->
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val tbtrs :
    kd:'kd Slap_size.t ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    trans:('n * 'n, 'n * 'n, [< `N | `T ]) Slap_D.trans3 ->
    ?diag:Slap_common.diag ->
    (('n, 'kd) Slap_size.syband, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val trtri :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?diag:Slap_common.diag -> ('n, 'n, 'cd) Slap_D.mat -> unit
  type 'n geqrf_min_lwork
  val geqrf_min_lwork :
    n:'Slap_size.t -> 'Slap_D.geqrf_min_lwork Slap_size.t
  val geqrf_opt_lwork : ('m, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val geqrf :
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?tau:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ('m, 'n, 'cd) Slap_D.mat -> (('m, 'n) Slap_size.min, 'cnt) Slap_D.vec
  val gesv :
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val gbsv :
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    (('n, 'n, 'kl, 'ku) Slap_size.luband, 'n, 'a_cd) Slap_D.mat ->
    'kl Slap_size.t ->
    'ku Slap_size.t -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val posv :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val ppsv :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val pbsv :
    ?up:[< `L | `U ] Slap_common.uplo ->
    kd:'kd Slap_size.t ->
    (('n, 'kd) Slap_size.syband, 'n, 'ab_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val ptsv :
    ('n, Slap_misc.cnt) Slap_D.vec ->
    ('Slap_size.p, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  type sysv_min_lwork
  val sysv_min_lwork : unit -> Slap_D.sysv_min_lwork Slap_size.t
  val sysv_opt_lwork :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val sysv :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val spsv :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ('Slap_size.packed, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> unit
  type ('m, 'n, 'nrhs) gels_min_lwork
  val gels_min_lwork :
    m:'Slap_size.t ->
    n:'Slap_size.t ->
    nrhs:'nrhs Slap_size.t ->
    ('m, 'n, 'nrhs) Slap_D.gels_min_lwork Slap_size.t
  val gels_opt_lwork :
    trans:('am * 'an, 'm * 'n, [< `N | `T ]) Slap_common.trans2 ->
    ('am, 'an, 'a_cd) Slap_D.mat ->
    ('m, 'nrhs, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val gels :
    ?work:('work, Slap_misc.cnt) Slap_D.vec ->
    trans:('am * 'an, 'm * 'n, [< `N | `T ]) Slap_common.trans2 ->
    ('am, 'an, 'a_cd) Slap_D.mat -> ('m, 'nrhs, 'b_cd) Slap_D.mat -> unit
  val dot : ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec -> float
  val asum : ('n, 'x_cd) Slap_D.vec -> float
  val sbmv :
    k:'Slap_size.t ->
    ?y:('n, 'y_cd) Slap_D.vec ->
    (('n, 'k) Slap_size.syband, 'n, 'a_cd) Slap_D.mat ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?alpha:float ->
    ?beta:float -> ('n, 'x_cd) Slap_D.vec -> ('n, 'y_cd) Slap_D.vec
  val ger :
    ?alpha:float ->
    ('m, 'x_cd) Slap_D.vec ->
    ('n, 'y_cd) Slap_D.vec ->
    ('m, 'n, 'a_cd) Slap_D.mat -> ('m, 'n, 'a_cd) Slap_D.mat
  val syr :
    ?alpha:float ->
    ?up:[< `L | `U ] Slap_common.uplo ->
    ('n, 'x_cd) Slap_D.vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'n, 'a_cd) Slap_D.mat
  type ('m, 'a) lansy_min_lwork
  val lansy_min_lwork :
    'Slap_size.t ->
    ([< `F | `I | `M | `O ] as 'a) Slap_common.norm4 ->
    ('n, 'a) Slap_D.lansy_min_lwork Slap_size.t
  val lansy :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?norm:[< `F | `I | `M | `O ] Slap_common.norm4 ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'cd) Slap_D.mat -> float
  val lamch : [ `B | `E | `L | `M | `N | `O | `P | `R | `S | `U ] -> float
  type 'n orgqr_min_lwork
  val orgqr_min_lwork :
    n:'Slap_size.t -> 'Slap_D.orgqr_min_lwork Slap_size.t
  val orgqr_opt_lwork :
    tau:('k, Slap_misc.cnt) Slap_D.vec ->
    ('m, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val orgqr_dyn :
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    tau:('k, Slap_misc.cnt) Slap_D.vec -> ('m, 'n, 'cd) Slap_D.mat -> unit
  type ('r, 'm, 'n) ormqr_min_lwork
  val ormqr_min_lwork :
    side:('r, 'm, 'n) Slap_common.side ->
    m:'Slap_size.t ->
    n:'Slap_size.t -> ('r, 'm, 'n) Slap_D.ormqr_min_lwork Slap_size.t
  val ormqr_opt_lwork :
    side:('r, 'm, 'n) Slap_common.side ->
    trans:('r * 'r, 'r * 'r, [< `N | `T ]) Slap_common.trans2 ->
    tau:('k, Slap_misc.cnt) Slap_D.vec ->
    ('r, 'k, 'a_cd) Slap_D.mat ->
    ('m, 'n, 'c_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val ormqr_dyn :
    side:('r, 'm, 'n) Slap_common.side ->
    trans:('r * 'r, 'r * 'r, [< `N | `T ]) Slap_common.trans2 ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    tau:('k, Slap_misc.cnt) Slap_D.vec ->
    ('r, 'k, 'a_cd) Slap_D.mat -> ('m, 'n, 'c_cd) Slap_D.mat -> unit
  type 'n gecon_min_lwork
  val gecon_min_lwork :
    'Slap_size.t -> 'Slap_D.gecon_min_lwork Slap_size.t
  type 'n gecon_min_liwork
  val gecon_min_liwork :
    'Slap_size.t -> 'Slap_D.gecon_min_liwork Slap_size.t
  val gecon :
    ?norm:[< `I | `O ] Slap_common.norm2 ->
    ?anorm:float ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'cd) Slap_D.mat -> float
  type 'n sycon_min_lwork
  val sycon_min_lwork :
    'Slap_size.t -> 'Slap_D.sycon_min_lwork Slap_size.t
  type 'n sycon_min_liwork
  val sycon_min_liwork :
    'Slap_size.t -> 'Slap_D.sycon_min_liwork Slap_size.t
  val sycon :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?ipiv:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ?anorm:float ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'cd) Slap_D.mat -> float
  type 'n pocon_min_lwork
  val pocon_min_lwork :
    'Slap_size.t -> 'Slap_D.pocon_min_lwork Slap_size.t
  type 'n pocon_min_liwork
  val pocon_min_liwork :
    'Slap_size.t -> 'Slap_D.pocon_min_liwork Slap_size.t
  val pocon :
    ?up:[< `L | `U ] Slap_common.uplo ->
    ?anorm:float ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'cd) Slap_D.mat -> float
  type ('m, 'n, 'nrhs) gelsy_min_lwork
  val gelsy_min_lwork :
    m:'Slap_size.t ->
    n:'Slap_size.t ->
    nrhs:'nrhs Slap_size.t ->
    ('m, 'n, 'nrhs) Slap_D.gelsy_min_lwork Slap_size.t
  val gelsy_opt_lwork :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val gelsy :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ?rcond:float ->
    ?jpvt:('n, Slap_misc.cnt) Slap_common.int32_vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> int
  type ('m, 'n, 'nrhs) gelsd_min_lwork
  val gelsd_min_lwork :
    m:'Slap_size.t ->
    n:'Slap_size.t ->
    nrhs:'nrhs Slap_size.t ->
    ('m, 'n, 'nrhs) Slap_D.gelsd_min_lwork Slap_size.t
  val gelsd_opt_lwork :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  type ('m, 'n, 'nrhs) gelsd_min_iwork
  val gelsd_min_iwork :
    'Slap_size.t ->
    'Slap_size.t -> ('m, 'n, 'nrhs) Slap_D.gelsd_min_iwork Slap_size.t
  val gelsd :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ?rcond:float ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> int
  type ('m, 'n, 'nrhs) gelss_min_lwork
  val gelss_min_lwork :
    m:'Slap_size.t ->
    n:'Slap_size.t ->
    nrhs:'nrhs Slap_size.t ->
    ('m, 'n, 'nrhs) Slap_D.gelss_min_lwork Slap_size.t
  val gelss_opt_lwork :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val gelss :
    ('m, 'n, 'a_cd) Slap_D.mat ->
    ?rcond:float ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'nrhs, 'b_cd) Slap_D.mat -> int
  type ('m, 'n) gesvd_min_lwork
  val gesvd_min_lwork :
    m:'Slap_size.t ->
    n:'Slap_size.t -> ('m, 'n) Slap_D.gesvd_min_lwork Slap_size.t
  val gesvd_opt_lwork :
    jobu:('u_cols, 'm, ('m, 'n) Slap_size.min, Slap_size.z, Slap_size.z)
         Slap_common.svd_job ->
    jobvt:('vt_rows, 'n, ('m, 'n) Slap_size.min, Slap_size.z, Slap_size.z)
          Slap_common.svd_job ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?u:('m, 'u_cols, 'u_cd) Slap_D.mat ->
    ?vt:('vt_rows, 'n, 'vt_cd) Slap_D.mat ->
    ('m, 'n, 'a_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val gesvd :
    jobu:('u_cols, 'm, ('m, 'n) Slap_size.min, Slap_size.z, Slap_size.z)
         Slap_common.svd_job ->
    jobvt:('vt_rows, 'n, ('m, 'n) Slap_size.min, Slap_size.z, Slap_size.z)
          Slap_common.svd_job ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?u:('m, 'u_cols, 'u_cd) Slap_D.mat ->
    ?vt:('vt_rows, 'n, 'vt_cd) Slap_D.mat ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ('m, 'n, 'a_cd) Slap_D.mat ->
    (('m, 'n) Slap_size.min, 'cnt) Slap_D.vec *
    ('m, 'u_cols, 'cnt) Slap_D.mat * ('vt_rows, 'n, 'cnt) Slap_D.mat
  type ('m, 'n) gesdd_liwork
  val gesdd_liwork :
    m:'Slap_size.t ->
    n:'Slap_size.t -> ('m, 'n) Slap_D.gesdd_liwork Slap_size.t
  type ('m, 'n, 'jobz) gesdd_min_lwork
  val gesdd_min_lwork :
    jobz:('u_cols * 'vt_rows, 'm * 'n,
          ('m, 'n) Slap_size.min * ('m, 'n) Slap_size.min, 'm * 'n,
          Slap_size.z * Slap_size.z)
         Slap_common.svd_job ->
    m:'Slap_size.t ->
    n:'Slap_size.t ->
    unit -> ('m, 'n, 'u_cols * 'vt_rows) Slap_D.gesdd_min_lwork Slap_size.t
  val gesdd_opt_lwork :
    jobz:('u_cols * 'vt_rows, 'm * 'n,
          ('m, 'n) Slap_size.min * ('m, 'n) Slap_size.min, 'm * 'n,
          Slap_size.z * Slap_size.z)
         Slap_common.svd_job ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?u:('m, 'u_cols, 'u_cd) Slap_D.mat ->
    ?vt:('vt_rows, 'n, 'vt_cd) Slap_D.mat ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ('m, 'n, 'a_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val gesdd :
    jobz:('u_cols * 'vt_rows, 'm * 'n,
          ('m, 'n) Slap_size.min * ('m, 'n) Slap_size.min, 'm * 'n,
          Slap_size.z * Slap_size.z)
         Slap_common.svd_job ->
    ?s:(('m, 'n) Slap_size.min, Slap_misc.cnt) Slap_D.vec ->
    ?u:('m, 'u_cols, 'u_cd) Slap_D.mat ->
    ?vt:('vt_rows, 'n, 'vt_cd) Slap_D.mat ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ('m, 'n, 'a_cd) Slap_D.mat ->
    (('m, 'n) Slap_size.min, 'cnt) Slap_D.vec *
    ('m, 'u_cols, 'u_cd) Slap_D.mat option *
    ('vt_rows, 'n, 'vt_cd) Slap_D.mat option
  val geev_min_lwork :
    ?vectors:bool -> 'Slap_size.t -> (module Slap_size.SIZE)
  val geev_opt_lwork :
    ?vl:('n, 'n, 'vl_cd) Slap_D.mat option ->
    ?vr:('n, 'n, 'vr_cd) Slap_D.mat option ->
    ?wr:('n, Slap_misc.cnt) Slap_D.vec ->
    ?wi:('n, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val geev :
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?vl:('n, 'n, 'vl_cd) Slap_D.mat option ->
    ?vr:('n, 'n, 'vr_cd) Slap_D.mat option ->
    ?wr:('n, Slap_misc.cnt) Slap_D.vec ->
    ?wi:('n, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'n, 'vl_cd) Slap_D.mat option * ('n, Slap_misc.cnt) Slap_D.vec *
    ('n, Slap_misc.cnt) Slap_D.vec * ('n, 'n, 'vr_cd) Slap_D.mat option
  type 'n syev_min_lwork
  val syev_min_lwork : 'Slap_size.t -> 'Slap_D.syev_min_lwork Slap_size.t
  val syev_opt_lwork :
    ?vectors:bool ->
    ?up:bool -> ('n, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val syev :
    ?vectors:bool ->
    ?up:bool ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'cd) Slap_D.mat -> ('n, 'cnt) Slap_D.vec
  val syevd_min_lwork :
    vectors:bool -> 'Slap_size.t -> (module Slap_size.SIZE)
  val syevd_min_liwork :
    vectors:bool -> 'Slap_size.t -> (module Slap_size.SIZE)
  val syevd_opt_lwork :
    ?vectors:bool ->
    ?up:bool -> ('n, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val syevd_opt_liwork :
    ?vectors:bool ->
    ?up:bool -> ('n, 'n, 'cd) Slap_D.mat -> (module Slap_size.SIZE)
  val syevd :
    ?vectors:bool ->
    ?up:bool ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    ('n, 'n, 'a_cd) Slap_D.mat -> ('n, 'w_cd) Slap_D.vec
  type 'n sbev_min_lwork
  val sbev_min_lwork : 'Slap_size.t -> 'Slap_D.sbev_min_lwork Slap_size.t
  val sbev :
    kd:'kd Slap_size.t ->
    ?z:('n, 'n, 'z_cd) Slap_D.mat ->
    ?up:bool ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    (('n, 'kd) Slap_size.syband, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'cnt) Slap_D.vec
  type 'n syevr_min_lwork
  val syevr_min_lwork :
    'Slap_size.t -> 'Slap_D.syevr_min_lwork Slap_size.t
  type 'n syevr_min_liwork
  val syevr_min_liwork :
    'Slap_size.t -> 'Slap_D.syevr_min_liwork Slap_size.t
  val syevr_opt_lwork :
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float -> ('n, 'n, 'a_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val syevr_opt_liwork :
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float -> ('n, 'n, 'a_cd) Slap_D.mat -> (module Slap_size.SIZE)
  module type SYEVR_RESULT =
    sig
      type m
      type n
      val value :
        Slap_D.SYEVR_RESULT.m Slap_size.t *
        (Slap_D.SYEVR_RESULT.n, 'cnt) Slap_D.vec *
        (Slap_D.SYEVR_RESULT.n, Slap_D.SYEVR_RESULT.m, 'cnt) Slap_D.mat *
        ((Slap_D.SYEVR_RESULT.m, Slap_D.SYEVR_RESULT.m) Slap_size.add, 'cnt)
        Slap_common.int32_vec
    end
  val syevr_dyn :
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?iwork:('liwork, Slap_misc.cnt) Slap_common.int32_vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    ?z:('n, 'k, 'z_cd) Slap_D.mat ->
    ?isuppz:(('k, 'k) Slap_size.add, Slap_misc.cnt) Slap_common.int32_vec ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    (module Slap_D.SYEVR_RESULT with type n = 'n)
  val sygv_opt_lwork :
    ?vectors:bool ->
    ?up:bool ->
    ?itype:[ `AB | `A_B | `BA ] ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'n, 'b_cd) Slap_D.mat -> (module Slap_size.SIZE)
  val sygv :
    ?vectors:bool ->
    ?up:bool ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    ?itype:[ `AB | `A_B | `BA ] ->
    ('n, 'n, 'a_cd) Slap_D.mat ->
    ('n, 'n, 'b_cd) Slap_D.mat -> ('n, 'cnt) Slap_D.vec
  val sbgv :
    ka:'ka Slap_size.t ->
    kb:'kb Slap_size.t ->
    ?z:('n, 'n, 'z_cd) Slap_D.mat ->
    ?up:bool ->
    ?work:('lwork, Slap_misc.cnt) Slap_D.vec ->
    ?w:('n, Slap_misc.cnt) Slap_D.vec ->
    (('n, 'ka) Slap_size.syband, 'n, 'ab_cd) Slap_D.mat ->
    (('n, 'kb) Slap_size.syband, 'n, 'bb_cd) Slap_D.mat ->
    ('n, 'cnt) Slap_D.vec
end