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