sig
  val random :
    ?rnd_state:Stdlib.Random.State.t ->
    ?re_from:float ->
    ?re_range:float ->
    ?im_from:float -> ?im_range:float -> int -> int -> Lacaml_complex64.mat
  val create : int -> int -> Lacaml_complex64.mat
  val make : int -> int -> Lacaml_complex64.num_type -> Lacaml_complex64.mat
  val make0 : int -> int -> Lacaml_complex64.mat
  val of_array :
    Lacaml_complex64.num_type array array -> Lacaml_complex64.mat
  val to_array :
    Lacaml_complex64.mat -> Lacaml_complex64.num_type array array
  val of_col_vecs : Lacaml_complex64.vec array -> Lacaml_complex64.mat
  val to_col_vecs : Lacaml_complex64.mat -> Lacaml_complex64.vec array
  val as_vec : Lacaml_complex64.mat -> Lacaml_complex64.vec
  val init_rows :
    int ->
    int -> (int -> int -> Lacaml_complex64.num_type) -> Lacaml_complex64.mat
  val init_cols :
    int ->
    int -> (int -> int -> Lacaml_complex64.num_type) -> Lacaml_complex64.mat
  val create_mvec : int -> Lacaml_complex64.mat
  val make_mvec : int -> Lacaml_complex64.num_type -> Lacaml_complex64.mat
  val mvec_of_array : Lacaml_complex64.num_type array -> Lacaml_complex64.mat
  val mvec_to_array : Lacaml_complex64.mat -> Lacaml_complex64.num_type array
  val from_col_vec : Lacaml_complex64.vec -> Lacaml_complex64.mat
  val from_row_vec : Lacaml_complex64.vec -> Lacaml_complex64.mat
  val empty : Lacaml_complex64.mat
  val identity : int -> Lacaml_complex64.mat
  val of_diag : Lacaml_complex64.vec -> Lacaml_complex64.mat
  val dim1 : Lacaml_complex64.mat -> int
  val dim2 : Lacaml_complex64.mat -> int
  val col : Lacaml_complex64.mat -> int -> Lacaml_complex64.vec
  val copy_row :
    ?vec:Lacaml_complex64.vec ->
    Lacaml_complex64.mat -> int -> Lacaml_complex64.vec
  val transpose_copy :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_complex64.mat ->
    ?br:int -> ?bc:int -> Lacaml_complex64.mat -> unit
  val transpose :
    ?m:int ->
    ?n:int ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.mat
  val detri :
    ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> unit
  val packed :
    ?up:bool ->
    ?n:int ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.vec
  val unpacked :
    ?up:bool -> ?n:int -> Lacaml_complex64.vec -> Lacaml_complex64.mat
  val add_const :
    Lacaml_complex64.num_type ->
    ?m:int ->
    ?n:int ->
    ?br:int ->
    ?bc:int ->
    ?b:Lacaml_complex64.mat ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.mat
  val sum :
    ?m:int ->
    ?n:int ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.num_type
  val fill :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.num_type -> unit
  val copy_diag : Lacaml_complex64.mat -> Lacaml_complex64.vec
  val trace : Lacaml_complex64.mat -> Lacaml_complex64.num_type
  val scal :
    ?m:int ->
    ?n:int ->
    Lacaml_complex64.num_type ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> unit
  val scal_cols :
    ?m:int ->
    ?n:int ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_complex64.mat -> ?ofs:int -> Lacaml_complex64.vec -> unit
  val scal_rows :
    ?m:int ->
    ?n:int ->
    ?ofs:int ->
    Lacaml_complex64.vec ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> unit
  val axpy :
    ?alpha:Lacaml_complex64.num_type ->
    ?m:int ->
    ?n:int ->
    ?xr:int ->
    ?xc:int ->
    Lacaml_complex64.mat ->
    ?yr:int -> ?yc:int -> Lacaml_complex64.mat -> unit
  val gemm_diag :
    ?n:int ->
    ?k:int ->
    ?beta:Lacaml_complex64.num_type ->
    ?ofsy:int ->
    ?y:Lacaml_complex64.vec ->
    ?transa:Lacaml_complex64.trans3 ->
    ?alpha:Lacaml_complex64.num_type ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_complex64.mat ->
    ?transb:Lacaml_complex64.trans3 ->
    ?br:int -> ?bc:int -> Lacaml_complex64.mat -> Lacaml_complex64.vec
  val syrk_diag :
    ?n:int ->
    ?k:int ->
    ?beta:Lacaml_complex64.num_type ->
    ?ofsy:int ->
    ?y:Lacaml_complex64.vec ->
    ?trans:Lacaml_common.trans2 ->
    ?alpha:Lacaml_complex64.num_type ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.vec
  val gemm_trace :
    ?n:int ->
    ?k:int ->
    ?transa:Lacaml_complex64.trans3 ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_complex64.mat ->
    ?transb:Lacaml_complex64.trans3 ->
    ?br:int -> ?bc:int -> Lacaml_complex64.mat -> Lacaml_complex64.num_type
  val syrk_trace :
    ?n:int ->
    ?k:int ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.num_type
  val symm2_trace :
    ?n:int ->
    ?upa:bool ->
    ?ar:int ->
    ?ac:int ->
    Lacaml_complex64.mat ->
    ?upb:bool ->
    ?br:int -> ?bc:int -> Lacaml_complex64.mat -> Lacaml_complex64.num_type
  val map :
    (Lacaml_complex64.num_type -> Lacaml_complex64.num_type) ->
    ?m:int ->
    ?n:int ->
    ?br:int ->
    ?bc:int ->
    ?b:Lacaml_complex64.mat ->
    ?ar:int -> ?ac:int -> Lacaml_complex64.mat -> Lacaml_complex64.mat
  val fold_cols :
    ('-> Lacaml_complex64.vec -> 'a) ->
    ?n:int -> ?ac:int -> '-> Lacaml_complex64.mat -> 'a
end