sig
  type prec = Bigarray.float64_elt
  type num_type = float
  type vec =
      (float, Bigarray.float64_elt, Bigarray.fortran_layout)
      Bigarray.Array1.t
  type rvec = Lacaml_D.vec
  type mat =
      (float, Bigarray.float64_elt, Bigarray.fortran_layout)
      Bigarray.Array2.t
  type trans3 = [ `N | `T ]
  val prec : (float, Bigarray.float64_elt) Bigarray.kind
  module Vec :
    sig
      val random :
        ?rnd_state:Stdlib.Random.State.t ->
        ?from:float -> ?range:float -> int -> Lacaml_float64.vec
      val sqr :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val sqrt :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val exp :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val log :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val sin :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val cos :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val create : int -> Lacaml_float64.vec
      val make : int -> Lacaml_float64.num_type -> Lacaml_float64.vec
      val make0 : int -> Lacaml_float64.vec
      val init :
        int -> (int -> Lacaml_float64.num_type) -> Lacaml_float64.vec
      val of_array : Lacaml_float64.num_type array -> Lacaml_float64.vec
      val to_array : Lacaml_float64.vec -> Lacaml_float64.num_type array
      val of_list : Lacaml_float64.num_type list -> Lacaml_float64.vec
      val to_list : Lacaml_float64.vec -> Lacaml_float64.num_type list
      val append :
        Lacaml_float64.vec -> Lacaml_float64.vec -> Lacaml_float64.vec
      val concat : Lacaml_float64.vec list -> Lacaml_float64.vec
      val empty : Lacaml_float64.vec
      val linspace :
        ?y:Lacaml_float64.vec ->
        Lacaml_float64.num_type ->
        Lacaml_float64.num_type -> int -> Lacaml_float64.vec
      val logspace :
        ?y:Lacaml_float64.vec ->
        Lacaml_float64.num_type ->
        Lacaml_float64.num_type -> ?base:float -> int -> Lacaml_float64.vec
      val dim : Lacaml_float64.vec -> int
      val map :
        (Lacaml_float64.num_type -> Lacaml_float64.num_type) ->
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val iter :
        (Lacaml_float64.num_type -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
      val iteri :
        (int -> Lacaml_float64.num_type -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
      val fold :
        ('-> Lacaml_float64.num_type -> 'a) ->
        '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> 'a
      val fill :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type -> unit
      val rev : Lacaml_float64.vec -> Lacaml_float64.vec
      val max :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
      val min :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
      val sum :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
      val prod :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
      val add_const :
        Lacaml_float64.num_type ->
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val sqr_nrm2 :
        ?stable:bool ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> float
      val ssqr :
        ?n:int ->
        ?c:Lacaml_float64.num_type ->
        ?ofsx:int ->
        ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
      val sort :
        ?cmp:(Lacaml_float64.num_type -> Lacaml_float64.num_type -> int) ->
        ?decr:bool ->
        ?n:int ->
        ?ofsp:int ->
        ?incp:int ->
        ?p:Lacaml_common.int_vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
      val neg :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val reci :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml_float64.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val add :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val sub :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val mul :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val div :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val zpxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val zmxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml_float64.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.vec
      val ssqr_diff :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml_float64.vec ->
        ?ofsy:int ->
        ?incy:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
    end
  module Mat :
    sig
      val hilbert : int -> Lacaml_float64.mat
      val hankel : int -> Lacaml_float64.mat
      val pascal : int -> Lacaml_float64.mat
      val rosser : unit -> Lacaml_float64.mat
      val toeplitz : Lacaml_float64.vec -> Lacaml_float64.mat
      val vandermonde : Lacaml_float64.vec -> Lacaml_float64.mat
      val wilkinson : int -> Lacaml_float64.mat
      val random :
        ?rnd_state:Stdlib.Random.State.t ->
        ?from:float -> ?range:float -> int -> int -> Lacaml_float64.mat
      val create : int -> int -> Lacaml_float64.mat
      val make : int -> int -> Lacaml_float64.num_type -> Lacaml_float64.mat
      val make0 : int -> int -> Lacaml_float64.mat
      val of_array :
        Lacaml_float64.num_type array array -> Lacaml_float64.mat
      val to_array :
        Lacaml_float64.mat -> Lacaml_float64.num_type array array
      val of_col_vecs : Lacaml_float64.vec array -> Lacaml_float64.mat
      val to_col_vecs : Lacaml_float64.mat -> Lacaml_float64.vec array
      val as_vec : Lacaml_float64.mat -> Lacaml_float64.vec
      val init_rows :
        int ->
        int -> (int -> int -> Lacaml_float64.num_type) -> Lacaml_float64.mat
      val init_cols :
        int ->
        int -> (int -> int -> Lacaml_float64.num_type) -> Lacaml_float64.mat
      val create_mvec : int -> Lacaml_float64.mat
      val make_mvec : int -> Lacaml_float64.num_type -> Lacaml_float64.mat
      val mvec_of_array : Lacaml_float64.num_type array -> Lacaml_float64.mat
      val mvec_to_array : Lacaml_float64.mat -> Lacaml_float64.num_type array
      val from_col_vec : Lacaml_float64.vec -> Lacaml_float64.mat
      val from_row_vec : Lacaml_float64.vec -> Lacaml_float64.mat
      val empty : Lacaml_float64.mat
      val identity : int -> Lacaml_float64.mat
      val of_diag : Lacaml_float64.vec -> Lacaml_float64.mat
      val dim1 : Lacaml_float64.mat -> int
      val dim2 : Lacaml_float64.mat -> int
      val col : Lacaml_float64.mat -> int -> Lacaml_float64.vec
      val copy_row :
        ?vec:Lacaml_float64.vec ->
        Lacaml_float64.mat -> int -> Lacaml_float64.vec
      val transpose_copy :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml_float64.mat ->
        ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
      val transpose :
        ?m:int ->
        ?n:int ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
      val detri :
        ?up:bool ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
      val packed :
        ?up:bool ->
        ?n:int ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.vec
      val unpacked :
        ?up:bool -> ?n:int -> Lacaml_float64.vec -> Lacaml_float64.mat
      val add_const :
        Lacaml_float64.num_type ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml_float64.mat ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
      val sum :
        ?m:int ->
        ?n:int ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.num_type
      val fill :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.num_type -> unit
      val copy_diag : Lacaml_float64.mat -> Lacaml_float64.vec
      val trace : Lacaml_float64.mat -> Lacaml_float64.num_type
      val scal :
        ?m:int ->
        ?n:int ->
        Lacaml_float64.num_type ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
      val scal_cols :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml_float64.mat -> ?ofs:int -> Lacaml_float64.vec -> unit
      val scal_rows :
        ?m:int ->
        ?n:int ->
        ?ofs:int ->
        Lacaml_float64.vec ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
      val axpy :
        ?alpha:Lacaml_float64.num_type ->
        ?m:int ->
        ?n:int ->
        ?xr:int ->
        ?xc:int ->
        Lacaml_float64.mat ->
        ?yr:int -> ?yc:int -> Lacaml_float64.mat -> unit
      val gemm_diag :
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml_float64.num_type ->
        ?ofsy:int ->
        ?y:Lacaml_float64.vec ->
        ?transa:Lacaml_float64.trans3 ->
        ?alpha:Lacaml_float64.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml_float64.mat ->
        ?transb:Lacaml_float64.trans3 ->
        ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.vec
      val syrk_diag :
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml_float64.num_type ->
        ?ofsy:int ->
        ?y:Lacaml_float64.vec ->
        ?trans:Lacaml_common.trans2 ->
        ?alpha:Lacaml_float64.num_type ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.vec
      val gemm_trace :
        ?n:int ->
        ?k:int ->
        ?transa:Lacaml_float64.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml_float64.mat ->
        ?transb:Lacaml_float64.trans3 ->
        ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.num_type
      val syrk_trace :
        ?n:int ->
        ?k:int ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.num_type
      val symm2_trace :
        ?n:int ->
        ?upa:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml_float64.mat ->
        ?upb:bool ->
        ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.num_type
      val map :
        (Lacaml_float64.num_type -> Lacaml_float64.num_type) ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml_float64.mat ->
        ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
      val fold_cols :
        ('-> Lacaml_float64.vec -> 'a) ->
        ?n:int -> ?ac:int -> '-> Lacaml_float64.mat -> 'a
    end
  val pp_num : Stdlib.Format.formatter -> float -> unit
  val pp_vec : (float, 'a) Lacaml_io.pp_vec
  val pp_mat : (float, 'a) Lacaml_io.pp_mat
  val dot :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml_float64.vec ->
    ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> float
  val asum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> float
  val sbmv :
    ?n:int ->
    ?k:int ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?up:bool ->
    ?alpha:float ->
    ?beta:float ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
  val ger :
    ?m:int ->
    ?n:int ->
    ?alpha:float ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml_float64.vec ->
    ?ofsy:int ->
    ?incy:int ->
    Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val syr :
    ?n:int ->
    ?alpha:float ->
    ?up:bool ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val lansy_min_lwork : int -> Lacaml_common.norm4 -> int
  val lansy :
    ?n:int ->
    ?up:bool ->
    ?norm:Lacaml_common.norm4 ->
    ?work:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> float
  val lamch : [ `B | `E | `L | `M | `N | `O | `P | `R | `S | `U ] -> float
  val orgqr_min_lwork : n:int -> int
  val orgqr_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    tau:Lacaml_float64.vec -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val orgqr :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?work:Lacaml_float64.vec ->
    tau:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
  val ormqr_opt_lwork :
    ?side:Lacaml_common.side ->
    ?trans:Lacaml_common.trans2 ->
    ?m:int ->
    ?n:int ->
    ?k:int ->
    tau:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat -> ?cr:int -> ?cc:int -> Lacaml_float64.mat -> int
  val ormqr :
    ?side:Lacaml_common.side ->
    ?trans:Lacaml_common.trans2 ->
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?work:Lacaml_float64.vec ->
    tau:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat -> ?cr:int -> ?cc:int -> Lacaml_float64.mat -> unit
  val gecon_min_lwork : int -> int
  val gecon_min_liwork : int -> int
  val gecon :
    ?n:int ->
    ?norm:Lacaml_common.norm2 ->
    ?anorm:float ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> float
  val sycon_min_lwork : int -> int
  val sycon_min_liwork : int -> int
  val sycon :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?anorm:float ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> float
  val pocon_min_lwork : int -> int
  val pocon_min_liwork : int -> int
  val pocon :
    ?n:int ->
    ?up:bool ->
    ?anorm:float ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> float
  val gelsy_min_lwork : m:int -> n:int -> nrhs:int -> int
  val gelsy_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gelsy :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?rcond:float ->
    ?jpvt:Lacaml_common.int32_vec ->
    ?work:Lacaml_float64.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gelsd_min_lwork : m:int -> n:int -> nrhs:int -> int
  val gelsd_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gelsd_min_iwork : int -> int -> int
  val gelsd :
    ?m:int ->
    ?n:int ->
    ?rcond:float ->
    ?ofss:int ->
    ?s:Lacaml_float64.vec ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gelss_min_lwork : m:int -> n:int -> nrhs:int -> int
  val gelss_opt_lwork :
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?m:int ->
    ?n:int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gelss :
    ?m:int ->
    ?n:int ->
    ?rcond:float ->
    ?ofss:int ->
    ?s:Lacaml_float64.vec ->
    ?work:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gees :
    ?n:int ->
    ?jobvs:Lacaml_common.schur_vectors ->
    ?sort:Lacaml_common.eigen_value_sort ->
    ?wr:Lacaml_float64.vec ->
    ?wi:Lacaml_float64.vec ->
    ?vsr:int ->
    ?vsc:int ->
    ?vs:Lacaml_float64.mat ->
    ?work:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    int * Lacaml_float64.vec * Lacaml_float64.vec * Lacaml_float64.mat
  val gesvd_min_lwork : m:int -> n:int -> int
  val gesvd_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?jobu:Lacaml_common.svd_job ->
    ?jobvt:Lacaml_common.svd_job ->
    ?s:Lacaml_float64.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml_float64.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml_float64.mat -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val gesvd :
    ?m:int ->
    ?n:int ->
    ?jobu:Lacaml_common.svd_job ->
    ?jobvt:Lacaml_common.svd_job ->
    ?s:Lacaml_float64.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml_float64.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml_float64.mat ->
    ?work:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    Lacaml_float64.vec * Lacaml_float64.mat * Lacaml_float64.mat
  val gesdd_liwork : m:int -> n:int -> int
  val gesdd_min_lwork :
    ?jobz:Lacaml_common.svd_job -> m:int -> n:int -> unit -> int
  val gesdd_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?jobz:Lacaml_common.svd_job ->
    ?s:Lacaml_float64.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml_float64.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml_float64.mat ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val gesdd :
    ?m:int ->
    ?n:int ->
    ?jobz:Lacaml_common.svd_job ->
    ?s:Lacaml_float64.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml_float64.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml_float64.mat ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    Lacaml_float64.vec * Lacaml_float64.mat * Lacaml_float64.mat
  val geev_min_lwork : ?vectors:bool -> int -> int
  val geev_opt_lwork :
    ?n:int ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml_float64.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml_float64.mat option ->
    ?ofswr:int ->
    ?wr:Lacaml_float64.vec ->
    ?ofswi:int ->
    ?wi:Lacaml_float64.vec -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val geev :
    ?n:int ->
    ?work:Lacaml_float64.vec ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml_float64.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml_float64.mat option ->
    ?ofswr:int ->
    ?wr:Lacaml_float64.vec ->
    ?ofswi:int ->
    ?wi:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    Lacaml_float64.mat * Lacaml_float64.vec * Lacaml_float64.vec *
    Lacaml_float64.mat
  val syev_min_lwork : int -> int
  val syev_opt_lwork :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val syev :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml_float64.vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val syevd_min_lwork : vectors:bool -> int -> int
  val syevd_min_liwork : vectors:bool -> int -> int
  val syevd_opt_lwork :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val syevd_opt_liwork :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val syevd_opt_l_li_work :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int * int
  val syevd :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val sbev_min_lwork : int -> int
  val sbev :
    ?n:int ->
    ?kd:int ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml_float64.mat ->
    ?up:bool ->
    ?work:Lacaml_float64.vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?abr:int -> ?abc:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val syevr_min_lwork : int -> int
  val syevr_min_liwork : int -> int
  val syevr_opt_lwork :
    ?n:int ->
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val syevr_opt_liwork :
    ?n:int ->
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val syevr_opt_l_li_work :
    ?n:int ->
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int * int
  val syevr :
    ?n:int ->
    ?vectors:bool ->
    ?range:[ `A | `I of int * int | `V of float * float ] ->
    ?up:bool ->
    ?abstol:float ->
    ?work:Lacaml_float64.vec ->
    ?iwork:Lacaml_common.int32_vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml_float64.mat ->
    ?isuppz:Lacaml_common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    int * Lacaml_float64.vec * Lacaml_float64.mat * Lacaml_common.int32_vec
  val sygv_opt_lwork :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?itype:[ `AB | `A_B | `BA ] ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val sygv :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml_float64.vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?itype:[ `AB | `A_B | `BA ] ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val sbgv :
    ?n:int ->
    ?ka:int ->
    ?kb:int ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml_float64.mat ->
    ?up:bool ->
    ?work:Lacaml_float64.vec ->
    ?ofsw:int ->
    ?w:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val swap :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    x:Lacaml_float64.vec ->
    ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> unit
  val scal :
    ?n:int ->
    Lacaml_float64.num_type ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
  val copy :
    ?n:int ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml_float64.vec ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
  val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> float
  val axpy :
    ?alpha:Lacaml_float64.num_type ->
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml_float64.vec ->
    ?ofsy:int -> ?incy:int -> Lacaml_float64.vec -> unit
  val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> int
  val amax :
    ?n:int ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.num_type
  val gemv :
    ?m:int ->
    ?n:int ->
    ?beta:Lacaml_float64.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml_float64.vec ->
    ?trans:Lacaml_float64.trans3 ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
  val gbmv :
    ?m:int ->
    ?n:int ->
    ?beta:Lacaml_float64.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml_float64.vec ->
    ?trans:Lacaml_float64.trans3 ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    int ->
    int -> ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
  val symv :
    ?n:int ->
    ?beta:Lacaml_float64.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml_float64.vec ->
    ?up:bool ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> Lacaml_float64.vec
  val trmv :
    ?n:int ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
  val trsv :
    ?n:int ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
  val tpmv :
    ?n:int ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml_float64.vec ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
  val tpsv :
    ?n:int ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml_float64.vec ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> unit
  val gemm :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?beta:Lacaml_float64.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml_float64.mat ->
    ?transa:Lacaml_float64.trans3 ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?transb:Lacaml_float64.trans3 ->
    ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val symm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml_common.side ->
    ?up:bool ->
    ?beta:Lacaml_float64.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml_float64.mat ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val trmm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml_common.side ->
    ?up:bool ->
    ?transa:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    a:Lacaml_float64.mat -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val trsm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml_common.side ->
    ?up:bool ->
    ?transa:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    a:Lacaml_float64.mat -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val syrk :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:Lacaml_float64.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml_float64.mat ->
    ?trans:Lacaml_common.trans2 ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val syr2k :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:Lacaml_float64.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml_float64.mat ->
    ?trans:Lacaml_common.trans2 ->
    ?alpha:Lacaml_float64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?br:int -> ?bc:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val lacpy :
    ?uplo:[ `L | `U ] ->
    ?m:int ->
    ?n:int ->
    ?br:int ->
    ?bc:int ->
    ?b:Lacaml_float64.mat ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.mat
  val lassq :
    ?n:int ->
    ?scale:float ->
    ?sumsq:float ->
    ?ofsx:int -> ?incx:int -> Lacaml_float64.vec -> float * float
  val larnv :
    ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
    ?iseed:Lacaml_common.int32_vec ->
    ?n:int ->
    ?ofsx:int -> ?x:Lacaml_float64.vec -> unit -> Lacaml_float64.vec
  val lange_min_lwork : int -> Lacaml_common.norm4 -> int
  val lange :
    ?m:int ->
    ?n:int ->
    ?norm:Lacaml_common.norm4 ->
    ?work:Lacaml_float64.rvec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> float
  val lauum :
    ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
  val getrf :
    ?m:int ->
    ?n:int ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_common.int32_vec
  val getrs :
    ?n:int ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?trans:Lacaml_float64.trans3 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val getri_min_lwork : int -> int
  val getri_opt_lwork :
    ?n:int -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val getri :
    ?n:int ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?work:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
  val sytrf_min_lwork : unit -> int
  val sytrf_opt_lwork :
    ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val sytrf :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?work:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_common.int32_vec
  val sytrs :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val sytri_min_lwork : int -> int
  val sytri :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?work:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
  val potrf :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int -> ?jitter:Lacaml_float64.num_type -> Lacaml_float64.mat -> unit
  val potrs :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int ->
    ?br:int ->
    ?bc:int ->
    ?factorize:bool ->
    ?jitter:Lacaml_float64.num_type -> Lacaml_float64.mat -> unit
  val potri :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    ?factorize:bool ->
    ?jitter:Lacaml_float64.num_type -> Lacaml_float64.mat -> unit
  val trtrs :
    ?n:int ->
    ?up:bool ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val tbtrs :
    ?n:int ->
    ?kd:int ->
    ?up:bool ->
    ?trans:Lacaml_float64.trans3 ->
    ?diag:Lacaml_common.diag ->
    ?abr:int ->
    ?abc:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val trtri :
    ?n:int ->
    ?up:bool ->
    ?diag:Lacaml_common.diag ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> unit
  val geqrf_opt_lwork :
    ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml_float64.mat -> int
  val geqrf_min_lwork : n:int -> int
  val geqrf :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml_float64.vec ->
    ?tau:Lacaml_float64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_float64.mat -> Lacaml_float64.vec
  val gesv :
    ?n:int ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val gbsv :
    ?n:int ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?abr:int ->
    ?abc:int ->
    Lacaml_float64.mat ->
    int ->
    int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val gtsv :
    ?n:int ->
    ?ofsdl:int ->
    Lacaml_float64.vec ->
    ?ofsd:int ->
    Lacaml_float64.vec ->
    ?ofsdu:int ->
    Lacaml_float64.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val posv :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val ppsv :
    ?n:int ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml_float64.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val pbsv :
    ?n:int ->
    ?up:bool ->
    ?kd:int ->
    ?abr:int ->
    ?abc:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val ptsv :
    ?n:int ->
    ?ofsd:int ->
    Lacaml_float64.vec ->
    ?ofse:int ->
    Lacaml_float64.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val sysv_opt_lwork :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val sysv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?work:Lacaml_float64.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val spsv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml_common.int32_vec ->
    ?ofsap:int ->
    Lacaml_float64.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
  val gels_min_lwork : m:int -> n:int -> nrhs:int -> int
  val gels_opt_lwork :
    ?m:int ->
    ?n:int ->
    ?trans:Lacaml_common.trans2 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> int
  val gels :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml_float64.vec ->
    ?trans:Lacaml_common.trans2 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_float64.mat ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml_float64.mat -> unit
end