sig
  type prec = Bigarray.complex32_elt
  type num_type = Complex.t
  type vec =
      (Complex.t, Bigarray.complex32_elt, Bigarray.fortran_layout)
      Bigarray.Array1.t
  type rvec =
      (float, Bigarray.float32_elt, Bigarray.fortran_layout)
      Bigarray.Array1.t
  type mat =
      (Complex.t, Bigarray.complex32_elt, Bigarray.fortran_layout)
      Bigarray.Array2.t
  type trans3 = [ `C | `N | `T ]
  val prec : (Complex.t, Bigarray.complex32_elt) Bigarray.kind
  module Vec :
    sig
      val random :
        ?rnd_state:Random.State.t ->
        ?re_from:float ->
        ?re_range:float ->
        ?im_from:float -> ?im_range:float -> int -> Lacaml.C.vec
      val create : int -> Lacaml.C.vec
      val make : int -> Lacaml.C.num_type -> Lacaml.C.vec
      val make0 : int -> Lacaml.C.vec
      val init : int -> (int -> Lacaml.C.num_type) -> Lacaml.C.vec
      val of_array : Lacaml.C.num_type array -> Lacaml.C.vec
      val to_array : Lacaml.C.vec -> Lacaml.C.num_type array
      val of_list : Lacaml.C.num_type list -> Lacaml.C.vec
      val to_list : Lacaml.C.vec -> Lacaml.C.num_type list
      val append : Lacaml.C.vec -> Lacaml.C.vec -> Lacaml.C.vec
      val concat : Lacaml.C.vec list -> Lacaml.C.vec
      val empty : Lacaml.C.vec
      val linspace :
        ?y:Lacaml.C.vec ->
        Lacaml.C.num_type -> Lacaml.C.num_type -> int -> Lacaml.C.vec
      val logspace :
        ?y:Lacaml.C.vec ->
        Lacaml.C.num_type ->
        Lacaml.C.num_type -> ?base:float -> int -> Lacaml.C.vec
      val dim : Lacaml.C.vec -> int
      val map :
        (Lacaml.C.num_type -> Lacaml.C.num_type) ->
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val iter :
        (Lacaml.C.num_type -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val iteri :
        (int -> Lacaml.C.num_type -> unit) ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val fold :
        ('-> Lacaml.C.num_type -> 'a) ->
        '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> 'a
      val fill :
        ?n:int ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type -> unit
      val rev : Lacaml.C.vec -> Lacaml.C.vec
      val max :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val min :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val sum :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val prod :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val add_const :
        Lacaml.C.num_type ->
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val sqr_nrm2 :
        ?stable:bool ->
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float
      val ssqr :
        ?n:int ->
        ?c:Lacaml.C.num_type ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val sort :
        ?cmp:(Lacaml.C.num_type -> Lacaml.C.num_type -> int) ->
        ?decr:bool ->
        ?n:int ->
        ?ofsp:int ->
        ?incp:int ->
        ?p:Lacaml.Common.int_vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val neg :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val reci :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val add :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val sub :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val mul :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val div :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val zpxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val zmxy :
        ?n:int ->
        ?ofsz:int ->
        ?incz:int ->
        ?z:Lacaml.C.vec ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
      val ssqr_diff :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
    end
  module Mat :
    sig
      val random :
        ?rnd_state:Random.State.t ->
        ?re_from:float ->
        ?re_range:float ->
        ?im_from:float -> ?im_range:float -> int -> int -> Lacaml.C.mat
      val create : int -> int -> Lacaml.C.mat
      val make : int -> int -> Lacaml.C.num_type -> Lacaml.C.mat
      val make0 : int -> int -> Lacaml.C.mat
      val of_array : Lacaml.C.num_type array array -> Lacaml.C.mat
      val to_array : Lacaml.C.mat -> Lacaml.C.num_type array array
      val of_col_vecs : Lacaml.C.vec array -> Lacaml.C.mat
      val to_col_vecs : Lacaml.C.mat -> Lacaml.C.vec array
      val as_vec : Lacaml.C.mat -> Lacaml.C.vec
      val init_rows :
        int -> int -> (int -> int -> Lacaml.C.num_type) -> Lacaml.C.mat
      val init_cols :
        int -> int -> (int -> int -> Lacaml.C.num_type) -> Lacaml.C.mat
      val create_mvec : int -> Lacaml.C.mat
      val make_mvec : int -> Lacaml.C.num_type -> Lacaml.C.mat
      val mvec_of_array : Lacaml.C.num_type array -> Lacaml.C.mat
      val mvec_to_array : Lacaml.C.mat -> Lacaml.C.num_type array
      val from_col_vec : Lacaml.C.vec -> Lacaml.C.mat
      val from_row_vec : Lacaml.C.vec -> Lacaml.C.mat
      val empty : Lacaml.C.mat
      val identity : int -> Lacaml.C.mat
      val of_diag : Lacaml.C.vec -> Lacaml.C.mat
      val dim1 : Lacaml.C.mat -> int
      val dim2 : Lacaml.C.mat -> int
      val col : Lacaml.C.mat -> int -> Lacaml.C.vec
      val copy_row : ?vec:Lacaml.C.vec -> Lacaml.C.mat -> int -> Lacaml.C.vec
      val transpose_copy :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int -> Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val transpose :
        ?m:int ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
      val detri :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val packed :
        ?up:bool ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
      val unpacked : ?up:bool -> ?n:int -> Lacaml.C.vec -> Lacaml.C.mat
      val add_const :
        Lacaml.C.num_type ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
      val sum :
        ?m:int ->
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type
      val fill :
        ?m:int ->
        ?n:int ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type -> unit
      val copy_diag : Lacaml.C.mat -> Lacaml.C.vec
      val trace : Lacaml.C.mat -> Lacaml.C.num_type
      val scal :
        ?m:int ->
        ?n:int ->
        Lacaml.C.num_type -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val scal_cols :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int -> Lacaml.C.mat -> ?ofs:int -> Lacaml.C.vec -> unit
      val scal_rows :
        ?m:int ->
        ?n:int ->
        ?ofs:int ->
        Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val axpy :
        ?m:int ->
        ?n:int ->
        ?alpha:Lacaml.C.num_type ->
        ?xr:int ->
        ?xc:int ->
        x:Lacaml.C.mat -> ?yr:int -> ?yc:int -> Lacaml.C.mat -> unit
      val gemm_diag :
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.C.num_type ->
        ?ofsy:int ->
        ?y:Lacaml.C.vec ->
        ?transa:Lacaml.C.trans3 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?transb:Lacaml.C.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.vec
      val syrk_diag :
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.C.num_type ->
        ?ofsy:int ->
        ?y:Lacaml.C.vec ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
      val gemm_trace :
        ?n:int ->
        ?k:int ->
        ?transa:Lacaml.C.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?transb:Lacaml.C.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.num_type
      val syrk_trace :
        ?n:int ->
        ?k:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type
      val symm2_trace :
        ?n:int ->
        ?upa:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?upb:bool -> ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.num_type
      val map :
        (Lacaml.C.num_type -> Lacaml.C.num_type) ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
      val fold_cols :
        ('-> Lacaml.C.vec -> 'a) ->
        ?n:int -> ?ac:int -> '-> Lacaml.C.mat -> 'a
    end
  val pp_num : Format.formatter -> Complex.t -> unit
  val pp_vec : (Complex.t, 'a) Lacaml.Io.pp_vec
  val pp_mat : (Complex.t, 'a) Lacaml.Io.pp_mat
  val dotu :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    x:Lacaml.C.vec ->
    ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
  val dotc :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    x:Lacaml.C.vec ->
    ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
  val lansy_min_lwork : int -> Lacaml.Common.norm4 -> int
  val lansy :
    ?n:int ->
    ?up:bool ->
    ?norm:Lacaml.Common.norm4 ->
    ?work:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
  val gecon_min_lwork : int -> int
  val gecon_min_lrwork : int -> int
  val gecon :
    ?n:int ->
    ?norm:Lacaml.Common.norm2 ->
    ?anorm:float ->
    ?work:Lacaml.C.vec ->
    ?rwork:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
  val sycon_min_lwork : int -> int
  val sycon :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?anorm:float ->
    ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
  val pocon_min_lwork : int -> int
  val pocon_min_lrwork : int -> int
  val pocon :
    ?n:int ->
    ?up:bool ->
    ?anorm:float ->
    ?work:Lacaml.C.vec ->
    ?rwork:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
  val gesvd_min_lwork : m:int -> n:int -> int
  val gesvd_lrwork : 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.C.rvec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml.C.mat ->
    ?vtr:int ->
    ?vtc:int -> ?vt:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
  val gesvd :
    ?m:int ->
    ?n:int ->
    ?jobu:Lacaml.Common.svd_job ->
    ?jobvt:Lacaml.Common.svd_job ->
    ?s:Lacaml.C.rvec ->
    ?ur:int ->
    ?uc:int ->
    ?u:Lacaml.C.mat ->
    ?vtr:int ->
    ?vtc:int ->
    ?vt:Lacaml.C.mat ->
    ?work:Lacaml.C.vec ->
    ?rwork:Lacaml.C.rvec ->
    ?ar:int ->
    ?ac:int -> Lacaml.C.mat -> Lacaml.C.rvec * Lacaml.C.mat * Lacaml.C.mat
  val geev_min_lwork : int -> int
  val geev_min_lrwork : int -> int
  val geev_opt_lwork :
    ?n:int ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml.C.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml.C.mat option ->
    ?ofsw:int -> ?w:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
  val geev :
    ?n:int ->
    ?work:Lacaml.C.vec ->
    ?rwork:Lacaml.C.vec ->
    ?vlr:int ->
    ?vlc:int ->
    ?vl:Lacaml.C.mat option ->
    ?vrr:int ->
    ?vrc:int ->
    ?vr:Lacaml.C.mat option ->
    ?ofsw:int ->
    ?w:Lacaml.C.vec ->
    ?ar:int ->
    ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat * Lacaml.C.vec * Lacaml.C.mat
  val swap :
    ?n:int ->
    ?ofsx:int ->
    ?incx:int ->
    x:Lacaml.C.vec -> ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> unit
  val scal :
    ?n:int ->
    Lacaml.C.num_type -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
  val copy :
    ?n:int ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml.C.vec -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
  val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float
  val axpy :
    ?n:int ->
    ?alpha:Lacaml.C.num_type ->
    ?ofsx:int ->
    ?incx:int ->
    x:Lacaml.C.vec -> ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> unit
  val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> int
  val amax :
    ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
  val gemv :
    ?m:int ->
    ?n:int ->
    ?beta:Lacaml.C.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml.C.vec ->
    ?trans:Lacaml.C.trans3 ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
  val gbmv :
    ?m:int ->
    ?n:int ->
    ?beta:Lacaml.C.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml.C.vec ->
    ?trans:Lacaml.C.trans3 ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat ->
    int -> int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
  val symv :
    ?n:int ->
    ?beta:Lacaml.C.num_type ->
    ?ofsy:int ->
    ?incy:int ->
    ?y:Lacaml.C.vec ->
    ?up:bool ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
  val trmv :
    ?n:int ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int -> Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
  val trsv :
    ?n:int ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int -> Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
  val tpmv :
    ?n:int ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml.C.vec -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
  val tpsv :
    ?n:int ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml.C.vec -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
  val gemm :
    ?m:int ->
    ?n:int ->
    ?k:int ->
    ?beta:Lacaml.C.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml.C.mat ->
    ?transa:Lacaml.C.trans3 ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat ->
    ?transb:Lacaml.C.trans3 ->
    ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
  val symm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml.Common.side ->
    ?up:bool ->
    ?beta:Lacaml.C.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml.C.mat ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
  val trmm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml.Common.side ->
    ?up:bool ->
    ?transa:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int -> a:Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val trsm :
    ?m:int ->
    ?n:int ->
    ?side:Lacaml.Common.side ->
    ?up:bool ->
    ?transa:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int -> a:Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val syrk :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:Lacaml.C.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml.C.mat ->
    ?trans:Lacaml.Common.trans2 ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
  val syr2k :
    ?n:int ->
    ?k:int ->
    ?up:bool ->
    ?beta:Lacaml.C.num_type ->
    ?cr:int ->
    ?cc:int ->
    ?c:Lacaml.C.mat ->
    ?trans:Lacaml.Common.trans2 ->
    ?alpha:Lacaml.C.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
  val lacpy :
    ?uplo:[ `L | `U ] ->
    ?m:int ->
    ?n:int ->
    ?br:int ->
    ?bc:int ->
    ?b:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
  val lassq :
    ?n:int ->
    ?scale:float ->
    ?sumsq:float -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float * float
  val larnv :
    ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
    ?iseed:Lacaml.Common.int32_vec ->
    ?n:int -> ?ofsx:int -> ?x:Lacaml.C.vec -> unit -> Lacaml.C.vec
  val lange_min_lwork : int -> Lacaml.Common.norm4 -> int
  val lange :
    ?m:int ->
    ?n:int ->
    ?norm:Lacaml.Common.norm4 ->
    ?work:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
  val lauum :
    ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
  val getrf :
    ?m:int ->
    ?n:int ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.Common.int32_vec
  val getrs :
    ?n:int ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?trans:Lacaml.C.trans3 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val getri_min_lwork : int -> int
  val getri_opt_lwork : ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
  val getri :
    ?n:int ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
  val sytrf_min_lwork : unit -> int
  val sytrf_opt_lwork :
    ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
  val sytrf :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?work:Lacaml.C.vec ->
    ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.Common.int32_vec
  val sytrs :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val sytri_min_lwork : int -> int
  val sytri :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
  val potrf :
    ?n:int ->
    ?up:bool ->
    ?ar:int -> ?ac:int -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
  val potrs :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat ->
    ?nrhs:int ->
    ?br:int ->
    ?bc:int ->
    ?factorize:bool -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
  val potri :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    ?factorize:bool -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
  val trtrs :
    ?n:int ->
    ?up:bool ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val tbtrs :
    ?n:int ->
    ?kd:int ->
    ?up:bool ->
    ?trans:Lacaml.C.trans3 ->
    ?diag:Lacaml.Common.diag ->
    ?abr:int ->
    ?abc:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val trtri :
    ?n:int ->
    ?up:bool ->
    ?diag:Lacaml.Common.diag -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
  val geqrf_opt_lwork :
    ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
  val geqrf_min_lwork : n:int -> int
  val geqrf :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml.C.vec ->
    ?tau:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
  val gesv :
    ?n:int ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val gbsv :
    ?n:int ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?abr:int ->
    ?abc:int ->
    Lacaml.C.mat ->
    int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val gtsv :
    ?n:int ->
    ?ofsdl:int ->
    Lacaml.C.vec ->
    ?ofsd:int ->
    Lacaml.C.vec ->
    ?ofsdu:int ->
    Lacaml.C.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val posv :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val ppsv :
    ?n:int ->
    ?up:bool ->
    ?ofsap:int ->
    Lacaml.C.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val pbsv :
    ?n:int ->
    ?up:bool ->
    ?kd:int ->
    ?abr:int ->
    ?abc:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val ptsv :
    ?n:int ->
    ?ofsd:int ->
    Lacaml.C.vec ->
    ?ofse:int ->
    Lacaml.C.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val sysv_opt_lwork :
    ?n:int ->
    ?up:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> int
  val sysv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?work:Lacaml.C.vec ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
  val spsv :
    ?n:int ->
    ?up:bool ->
    ?ipiv:Lacaml.Common.int32_vec ->
    ?ofsap:int ->
    Lacaml.C.vec -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.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.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> int
  val gels :
    ?m:int ->
    ?n:int ->
    ?work:Lacaml.C.vec ->
    ?trans:Lacaml.Common.trans2 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml.C.mat -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
end