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
      type t = Lacaml__D.vec
      type unop =
          ?n:int ->
          ?ofsy:int ->
          ?incy:int ->
          ?y:Lacaml__D.vec ->
          ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
      type binop =
          ?n:int ->
          ?ofsz:int ->
          ?incz:int ->
          ?z:Lacaml__D.vec ->
          ?ofsx:int ->
          ?incx:int ->
          Lacaml__D.vec ->
          ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> Lacaml__D.vec
      val random :
        ?rnd_state:Stdlib.Random.State.t ->
        ?from:float -> ?range:float -> int -> Lacaml__D.vec
      val abs : Lacaml__D.Vec.unop
      val signum : Lacaml__D.Vec.unop
      val sqr : Lacaml__D.Vec.unop
      val sqrt : Lacaml__D.Vec.unop
      val cbrt : Lacaml__D.Vec.unop
      val exp : Lacaml__D.Vec.unop
      val exp2 : Lacaml__D.Vec.unop
      val expm1 : Lacaml__D.Vec.unop
      val log : Lacaml__D.Vec.unop
      val log10 : Lacaml__D.Vec.unop
      val log2 : Lacaml__D.Vec.unop
      val log1p : Lacaml__D.Vec.unop
      val sin : Lacaml__D.Vec.unop
      val cos : Lacaml__D.Vec.unop
      val tan : Lacaml__D.Vec.unop
      val asin : Lacaml__D.Vec.unop
      val acos : Lacaml__D.Vec.unop
      val atan : Lacaml__D.Vec.unop
      val sinh : Lacaml__D.Vec.unop
      val cosh : Lacaml__D.Vec.unop
      val tanh : Lacaml__D.Vec.unop
      val asinh : Lacaml__D.Vec.unop
      val acosh : Lacaml__D.Vec.unop
      val atanh : Lacaml__D.Vec.unop
      val floor : Lacaml__D.Vec.unop
      val ceil : Lacaml__D.Vec.unop
      val round : Lacaml__D.Vec.unop
      val trunc : Lacaml__D.Vec.unop
      val erf : Lacaml__D.Vec.unop
      val erfc : Lacaml__D.Vec.unop
      val logistic : Lacaml__D.Vec.unop
      val relu : Lacaml__D.Vec.unop
      val softplus : Lacaml__D.Vec.unop
      val softsign : Lacaml__D.Vec.unop
      val pow : Lacaml__D.Vec.binop
      val atan2 : Lacaml__D.Vec.binop
      val hypot : Lacaml__D.Vec.binop
      val min2 : Lacaml__D.Vec.binop
      val max2 : Lacaml__D.Vec.binop
      val log_sum_exp :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val create : int -> Lacaml__D.vec
      val make : int -> float -> Lacaml__D.vec
      val make0 : int -> Lacaml__D.vec
      val init : int -> (int -> float) -> Lacaml__D.vec
      val of_array : float array -> Lacaml__D.vec
      val to_array : Lacaml__D.vec -> float array
      val of_list : float list -> Lacaml__D.vec
      val to_list : Lacaml__D.vec -> float list
      val append : Lacaml__D.vec -> Lacaml__D.vec -> Lacaml__D.vec
      val concat : Lacaml__D.vec list -> Lacaml__D.vec
      val empty : Lacaml__D.vec
      val linspace :
        ?y:Lacaml__D.vec -> float -> float -> int -> Lacaml__D.vec
      val logspace :
        ?y:Lacaml__D.vec ->
        float -> float -> ?base:float -> int -> Lacaml__D.vec
      val dim : Lacaml__D.vec -> int
      val has_zero_dim : Lacaml__D.vec -> bool
      val map :
        (float -> float) ->
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml__D.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
      val iter :
        (float -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
      val iteri :
        (int -> float -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
      val fold :
        ('-> float -> 'a) ->
        '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> 'a
      val rev : Lacaml__D.vec -> Lacaml__D.vec
      val max : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val min : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val sort :
        ?cmp:(float -> float -> int) ->
        ?decr:bool ->
        ?n:int ->
        ?ofsp:int ->
        ?incp:int ->
        ?p:Lacaml__common.int_vec ->
        ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
      val fill :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float -> unit
      val sum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val prod : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val add_const : float -> Lacaml__D.Vec.unop
      val sqr_nrm2 :
        ?stable:bool ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val ssqr :
        ?n:int ->
        ?c:float -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
      val neg : Lacaml__D.Vec.unop
      val reci : Lacaml__D.Vec.unop
      val add : Lacaml__D.Vec.binop
      val sub : Lacaml__D.Vec.binop
      val mul : Lacaml__D.Vec.binop
      val div : Lacaml__D.Vec.binop
      val zpxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        Lacaml__D.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> unit
      val zmxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        Lacaml__D.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> unit
      val ssqr_diff :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> float
    end
  module Mat :
    sig
      type t = Lacaml__D.mat
      type unop =
          ?m:int ->
          ?n:int ->
          ?br:int ->
          ?bc:int ->
          ?b:Lacaml__D.mat ->
          ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.mat
      type binop =
          ?m:int ->
          ?n:int ->
          ?cr:int ->
          ?cc:int ->
          ?c:Lacaml__D.mat ->
          ?ar:int ->
          ?ac:int ->
          Lacaml__D.mat ->
          ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.mat
      val hilbert : int -> Lacaml__D.mat
      val hankel : int -> Lacaml__D.mat
      val pascal : int -> Lacaml__D.mat
      val rosser : unit -> Lacaml__D.mat
      val toeplitz : Lacaml__D.vec -> Lacaml__D.mat
      val vandermonde : Lacaml__D.vec -> Lacaml__D.mat
      val wilkinson : int -> Lacaml__D.mat
      val random :
        ?rnd_state:Stdlib.Random.State.t ->
        ?from:float -> ?range:float -> int -> int -> Lacaml__D.mat
      val abs : Lacaml__D.Mat.unop
      val signum : Lacaml__D.Mat.unop
      val sqr : Lacaml__D.Mat.unop
      val sqrt : Lacaml__D.Mat.unop
      val cbrt : Lacaml__D.Mat.unop
      val exp : Lacaml__D.Mat.unop
      val exp2 : Lacaml__D.Mat.unop
      val expm1 : Lacaml__D.Mat.unop
      val log : Lacaml__D.Mat.unop
      val log10 : Lacaml__D.Mat.unop
      val log2 : Lacaml__D.Mat.unop
      val log1p : Lacaml__D.Mat.unop
      val sin : Lacaml__D.Mat.unop
      val cos : Lacaml__D.Mat.unop
      val tan : Lacaml__D.Mat.unop
      val asin : Lacaml__D.Mat.unop
      val acos : Lacaml__D.Mat.unop
      val atan : Lacaml__D.Mat.unop
      val sinh : Lacaml__D.Mat.unop
      val cosh : Lacaml__D.Mat.unop
      val tanh : Lacaml__D.Mat.unop
      val asinh : Lacaml__D.Mat.unop
      val acosh : Lacaml__D.Mat.unop
      val atanh : Lacaml__D.Mat.unop
      val floor : Lacaml__D.Mat.unop
      val ceil : Lacaml__D.Mat.unop
      val round : Lacaml__D.Mat.unop
      val trunc : Lacaml__D.Mat.unop
      val erf : Lacaml__D.Mat.unop
      val erfc : Lacaml__D.Mat.unop
      val logistic : Lacaml__D.Mat.unop
      val relu : Lacaml__D.Mat.unop
      val softplus : Lacaml__D.Mat.unop
      val softsign : Lacaml__D.Mat.unop
      val pow : Lacaml__D.Mat.binop
      val atan2 : Lacaml__D.Mat.binop
      val hypot : Lacaml__D.Mat.binop
      val min2 : Lacaml__D.Mat.binop
      val max2 : Lacaml__D.Mat.binop
      val cpab :
        ?m:int ->
        ?n:int ->
        ?cr:int ->
        ?cc:int ->
        Lacaml__D.mat ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
      val cmab :
        ?m:int ->
        ?n:int ->
        ?cr:int ->
        ?cc:int ->
        Lacaml__D.mat ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
      val log_sum_exp :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> float
      val create : int -> int -> Lacaml__D.mat
      val make : int -> int -> float -> Lacaml__D.mat
      val make0 : int -> int -> Lacaml__D.mat
      val of_array : float array array -> Lacaml__D.mat
      val to_array : Lacaml__D.mat -> float array array
      val of_list : float list list -> Lacaml__D.mat
      val to_list : Lacaml__D.mat -> float list list
      val of_col_vecs : Lacaml__D.vec array -> Lacaml__D.mat
      val to_col_vecs : Lacaml__D.mat -> Lacaml__D.vec array
      val of_col_vecs_list : Lacaml__D.vec list -> Lacaml__D.mat
      val to_col_vecs_list : Lacaml__D.mat -> Lacaml__D.vec list
      val as_vec : Lacaml__D.mat -> Lacaml__D.vec
      val init_rows : int -> int -> (int -> int -> float) -> Lacaml__D.mat
      val init_cols : int -> int -> (int -> int -> float) -> Lacaml__D.mat
      val create_mvec : int -> Lacaml__D.mat
      val make_mvec : int -> float -> Lacaml__D.mat
      val mvec_of_array : float array -> Lacaml__D.mat
      val mvec_to_array : Lacaml__D.mat -> float array
      val from_col_vec : Lacaml__D.vec -> Lacaml__D.mat
      val from_row_vec : Lacaml__D.vec -> Lacaml__D.mat
      val empty : Lacaml__D.mat
      val identity : int -> Lacaml__D.mat
      val of_diag :
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml__D.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.mat
      val dim1 : Lacaml__D.mat -> int
      val dim2 : Lacaml__D.mat -> int
      val has_zero_dim : Lacaml__D.mat -> bool
      val col : Lacaml__D.mat -> int -> Lacaml__D.vec
      val copy_row :
        ?vec:Lacaml__D.vec -> Lacaml__D.mat -> int -> Lacaml__D.vec
      val swap :
        ?uplo:[ `L | `U ] ->
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
      val transpose_copy : Lacaml__D.Mat.unop
      val detri :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
      val packed :
        ?up:bool ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec
      val unpacked : ?up:bool -> ?n:int -> Lacaml__D.vec -> Lacaml__D.mat
      val fill :
        ?m:int ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> float -> unit
      val sum :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> float
      val add_const : float -> Lacaml__D.Mat.unop
      val neg : Lacaml__D.Mat.unop
      val reci : Lacaml__D.Mat.unop
      val copy_diag :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml__D.vec ->
        ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec
      val trace : Lacaml__D.mat -> float
      val scal :
        ?m:int ->
        ?n:int -> float -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
      val scal_cols :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int -> Lacaml__D.mat -> ?ofs:int -> Lacaml__D.vec -> unit
      val scal_rows :
        ?m:int ->
        ?n:int ->
        ?ofs:int ->
        Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
      val syrk_trace :
        ?n:int -> ?k:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> float
      val syrk_diag :
        ?n:int ->
        ?k:int ->
        ?beta:float ->
        ?ofsy:int ->
        ?y:Lacaml__D.vec ->
        ?trans:Lacaml__common.trans2 ->
        ?alpha:float -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec
      val add : Lacaml__D.Mat.binop
      val sub : Lacaml__D.Mat.binop
      val mul : Lacaml__D.Mat.binop
      val div : Lacaml__D.Mat.binop
      val axpy :
        ?alpha:float ->
        ?m:int ->
        ?n:int ->
        ?xr:int ->
        ?xc:int ->
        Lacaml__D.mat -> ?yr:int -> ?yc:int -> Lacaml__D.mat -> unit
      val gemm_diag :
        ?n:int ->
        ?k:int ->
        ?beta:float ->
        ?ofsy:int ->
        ?y:Lacaml__D.vec ->
        ?transa:Lacaml__D.trans3 ->
        ?alpha:float ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat ->
        ?transb:Lacaml__D.trans3 ->
        ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.vec
      val gemm_trace :
        ?n:int ->
        ?k:int ->
        ?transa:Lacaml__D.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat ->
        ?transb:Lacaml__D.trans3 ->
        ?br:int -> ?bc:int -> Lacaml__D.mat -> float
      val symm2_trace :
        ?n:int ->
        ?upa:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat ->
        ?upb:bool -> ?br:int -> ?bc:int -> Lacaml__D.mat -> float
      val ssqr_diff :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> float
      val map :
        (float -> float) ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml__D.mat ->
        ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.mat
      val fold_cols :
        ('-> Lacaml__D.vec -> 'a) ->
        ?n:int -> ?ac:int -> '-> Lacaml__D.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__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> float
  val asum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
  val sbmv :
    ?n:int ->
    ?k:int ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?up:bool ->
    ?alpha:float ->
    ?beta:float -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
  val ger :
    ?m:int ->
    ?n:int ->
    ?alpha:float ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml__D.vec ->
    ?ofsy:int ->
    ?incy:int -> Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val syr :
    ?n:int ->
    ?alpha:float ->
    ?up:bool ->
    ?ofsx:int ->
    ?incx:int -> Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val lansy_min_lwork : int -> Lacaml__common.norm4 -> int
  val lansy :
    ?n:int ->
    ?up:bool ->
    ?norm:Lacaml__common.norm4 ->
    ?work:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.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__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val orgqr :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?work:Lacaml__D.vec ->
    tau:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val ormqr_opt_lwork :
    ?side:Lacaml__common.side ->
    ?trans:Lacaml__common.trans2 ->
    ?m:int ->
    ?n:int ->
    ?k:int ->
    tau:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int -> Lacaml__D.mat -> ?cr:int -> ?cc:int -> Lacaml__D.mat -> int
  val ormqr :
    ?side:Lacaml__common.side ->
    ?trans:Lacaml__common.trans2 ->
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?work:Lacaml__D.vec ->
    tau:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int -> Lacaml__D.mat -> ?cr:int -> ?cc:int -> Lacaml__D.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__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.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__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> float
  val pocon_min_lwork : int -> int
  val pocon_min_liwork : int -> int
  val pocon :
    ?n:int ->
    ?up:bool ->
    ?anorm:float ->
    ?work:Lacaml__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.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__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gelsy :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?rcond:float ->
    ?jpvt:Lacaml__common.int32_vec ->
    ?work:Lacaml__D.vec ->
    ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.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__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gelsd_min_iwork : int -> int -> int
  val gelsd :
    ?m:int ->
    ?n:int ->
    ?rcond:float ->
    ?ofss:int ->
    ?s:Lacaml__D.vec ->
    ?work:Lacaml__D.vec ->
    ?iwork:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gelss_min_lwork : m:int -> n:int -> nrhs:int -> int
  val gelss_opt_lwork :
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?m:int ->
    ?n:int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gelss :
    ?m:int ->
    ?n:int ->
    ?rcond:float ->
    ?ofss:int ->
    ?s:Lacaml__D.vec ->
    ?work:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gees :
    ?n:int ->
    ?jobvs:Lacaml__common.schur_vectors ->
    ?sort:Lacaml__common.eigen_value_sort ->
    ?wr:Lacaml__D.vec ->
    ?wi:Lacaml__D.vec ->
    ?vsr:int ->
    ?vsc:int ->
    ?vs:Lacaml__D.mat ->
    ?work:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> int * Lacaml__D.vec * Lacaml__D.vec * Lacaml__D.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__D.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml__D.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml__D.mat -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val gesvd :
    ?m:int ->
    ?n:int ->
    ?jobu:Lacaml__common.svd_job ->
    ?jobvt:Lacaml__common.svd_job ->
    ?s:Lacaml__D.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml__D.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml__D.mat ->
    ?work:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec * Lacaml__D.mat * Lacaml__D.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__D.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml__D.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml__D.mat ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val gesdd :
    ?m:int ->
    ?n:int ->
    ?jobz:Lacaml__common.svd_job ->
    ?s:Lacaml__D.vec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml__D.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml__D.mat ->
    ?work:Lacaml__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ar:int ->
    ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec * Lacaml__D.mat * Lacaml__D.mat
  val geev_min_lwork : ?vectors:bool -> int -> int
  val geev_opt_lwork :
    ?n:int ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml__D.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml__D.mat option ->
    ?ofswr:int ->
    ?wr:Lacaml__D.vec ->
    ?ofswi:int ->
    ?wi:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val geev :
    ?n:int ->
    ?work:Lacaml__D.vec ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml__D.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml__D.mat option ->
    ?ofswr:int ->
    ?wr:Lacaml__D.vec ->
    ?ofswi:int ->
    ?wi:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    Lacaml__D.mat * Lacaml__D.vec * Lacaml__D.vec * Lacaml__D.mat
  val syev_min_lwork : int -> int
  val syev_opt_lwork :
    ?n:int ->
    ?vectors:bool -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val syev :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml__D.vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.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__D.mat -> int
  val syevd_opt_liwork :
    ?n:int ->
    ?vectors:bool -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val syevd_opt_l_li_work :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int * int
  val syevd :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec
  val sbev_min_lwork : int -> int
  val sbev :
    ?n:int ->
    ?kd:int ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml__D.mat ->
    ?up:bool ->
    ?work:Lacaml__D.vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec ->
    ?abr:int -> ?abc:int -> Lacaml__D.mat -> Lacaml__D.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__D.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__D.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__D.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__D.vec ->
    ?iwork:Lacaml__common.int32_vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml__D.mat ->
    ?isuppz:Lacaml__common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    int * Lacaml__D.vec * Lacaml__D.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__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val sygv :
    ?n:int ->
    ?vectors:bool ->
    ?up:bool ->
    ?work:Lacaml__D.vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec ->
    ?itype:[ `AB | `A_B | `BA ] ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.vec
  val sbgv :
    ?n:int ->
    ?ka:int ->
    ?kb:int ->
    ?zr:int ->
    ?zc:int ->
    ?z:Lacaml__D.mat ->
    ?up:bool ->
    ?work:Lacaml__D.vec ->
    ?ofsw:int ->
    ?w:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.vec
  val swap :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> unit
  val scal :
    ?n:int -> float -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
  val copy :
    ?n:int ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml__D.vec ->
    ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
  val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
  val axpy :
    ?alpha:float ->
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    Lacaml__D.vec -> ?ofsy:int -> ?incy:int -> Lacaml__D.vec -> unit
  val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> int
  val amax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float
  val gemv :
    ?m:int ->
    ?n:int ->
    ?beta:float ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml__D.vec ->
    ?trans:Lacaml__D.trans3 ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
  val gbmv :
    ?m:int ->
    ?n:int ->
    ?beta:float ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml__D.vec ->
    ?trans:Lacaml__D.trans3 ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    int -> int -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
  val symv :
    ?n:int ->
    ?beta:float ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml__D.vec ->
    ?up:bool ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> Lacaml__D.vec
  val trmv :
    ?n:int ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
  val trsv :
    ?n:int ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
  val tpmv :
    ?n:int ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml__D.vec -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
  val tpsv :
    ?n:int ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml__D.vec -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> unit
  val gemm :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?beta:float ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml__D.mat ->
    ?transa:Lacaml__D.trans3 ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?transb:Lacaml__D.trans3 ->
    ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.mat
  val symm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml__common.side ->
    ?up:bool ->
    ?beta:float ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml__D.mat ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.mat
  val trmm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml__common.side ->
    ?up:bool ->
    ?transa:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int -> a:Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val trsm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml__common.side ->
    ?up:bool ->
    ?transa:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int -> a:Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val syrk :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:float ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml__D.mat ->
    ?trans:Lacaml__common.trans2 ->
    ?alpha:float -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.mat
  val syr2k :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:float ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml__D.mat ->
    ?trans:Lacaml__common.trans2 ->
    ?alpha:float ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?br:int -> ?bc:int -> Lacaml__D.mat -> Lacaml__D.mat
  val lacpy :
    ?uplo:[ `L | `U ] ->
    ?m:int ->
    ?n:int ->
    ?br:int ->
    ?bc:int ->
    ?b:Lacaml__D.mat -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.mat
  val laswp :
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?k1:int -> ?k2:int -> ?incx:int -> Lacaml__common.int32_vec -> unit
  val lapmt :
    ?forward:bool ->
    ?m:int ->
    ?n:int ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__common.int32_vec -> unit
  val lassq :
    ?n:int ->
    ?scale:float ->
    ?sumsq:float -> ?ofsx:int -> ?incx:int -> Lacaml__D.vec -> float * float
  val larnv :
    ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
    ?iseed:Lacaml__common.int32_vec ->
    ?n:int -> ?ofsx:int -> ?x:Lacaml__D.vec -> unit -> Lacaml__D.vec
  val lange_min_lwork : int -> Lacaml__common.norm4 -> int
  val lange :
    ?m:int ->
    ?n:int ->
    ?norm:Lacaml__common.norm4 ->
    ?work:Lacaml__D.rvec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> float
  val lauum :
    ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val getrf :
    ?m:int ->
    ?n:int ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__common.int32_vec
  val getrs :
    ?n:int ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?trans:Lacaml__D.trans3 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val getri_min_lwork : int -> int
  val getri_opt_lwork : ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val getri :
    ?n:int ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?work:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val sytrf_min_lwork : unit -> int
  val sytrf_opt_lwork :
    ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val sytrf :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?work:Lacaml__D.vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__common.int32_vec
  val sytrs :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val sytri_min_lwork : int -> int
  val sytri :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?work:Lacaml__D.vec -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val potrf :
    ?n:int ->
    ?up:bool -> ?ar:int -> ?ac:int -> ?jitter:float -> Lacaml__D.mat -> unit
  val potrs :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat ->
    ?nrhs:int ->
    ?br:int ->
    ?bc:int -> ?factorize:bool -> ?jitter:float -> Lacaml__D.mat -> unit
  val potri :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int -> ?factorize:bool -> ?jitter:float -> Lacaml__D.mat -> unit
  val trtrs :
    ?n:int ->
    ?up:bool ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val tbtrs :
    ?n:int ->
    ?kd:int ->
    ?up:bool ->
    ?trans:Lacaml__D.trans3 ->
    ?diag:Lacaml__common.diag ->
    ?abr:int ->
    ?abc:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val trtri :
    ?n:int ->
    ?up:bool ->
    ?diag:Lacaml__common.diag -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> unit
  val geqrf_opt_lwork :
    ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__D.mat -> int
  val geqrf_min_lwork : n:int -> int
  val geqrf :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml__D.vec ->
    ?tau:Lacaml__D.vec ->
    ?ar:int -> ?ac:int -> Lacaml__D.mat -> Lacaml__D.vec
  val gesv :
    ?n:int ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val gbsv :
    ?n:int ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?abr:int ->
    ?abc:int ->
    Lacaml__D.mat ->
    int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val gtsv :
    ?n:int ->
    ?ofsdl:int ->
    Lacaml__D.vec ->
    ?ofsd:int ->
    Lacaml__D.vec ->
    ?ofsdu:int ->
    Lacaml__D.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val posv :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val ppsv :
    ?n:int ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml__D.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val pbsv :
    ?n:int ->
    ?up:bool ->
    ?kd:int ->
    ?abr:int ->
    ?abc:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val ptsv :
    ?n:int ->
    ?ofsd:int ->
    Lacaml__D.vec ->
    ?ofse:int ->
    Lacaml__D.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val sysv_opt_lwork :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val sysv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?work:Lacaml__D.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
  val spsv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml__common.int32_vec ->
    ?ofsap:int ->
    Lacaml__D.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.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__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> int
  val gels :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml__D.vec ->
    ?trans:Lacaml__common.trans2 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml__D.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml__D.mat -> unit
end