sig
  type mat
  type arr
  type elt = float
  val create :
    int ->
    int ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val empty : int -> int -> Owl_algodiff_generic.MatrixSig.mat
  val zeros : int -> int -> Owl_algodiff_generic.MatrixSig.mat
  val uniform :
    ?scale:Owl_algodiff_generic.MatrixSig.elt ->
    int -> int -> Owl_algodiff_generic.MatrixSig.mat
  val gaussian :
    ?sigma:Owl_algodiff_generic.MatrixSig.elt ->
    int -> int -> Owl_algodiff_generic.MatrixSig.mat
  val bernoulli :
    ?p:float -> ?seed:int -> int -> int -> Owl_algodiff_generic.MatrixSig.mat
  val shape : Owl_algodiff_generic.MatrixSig.mat -> int * int
  val row_num : Owl_algodiff_generic.MatrixSig.mat -> int
  val col_num : Owl_algodiff_generic.MatrixSig.mat -> int
  val numel : Owl_algodiff_generic.MatrixSig.mat -> int
  val get :
    Owl_algodiff_generic.MatrixSig.mat ->
    int -> int -> Owl_algodiff_generic.MatrixSig.elt
  val set :
    Owl_algodiff_generic.MatrixSig.mat ->
    int -> int -> Owl_algodiff_generic.MatrixSig.elt -> unit
  val row :
    Owl_algodiff_generic.MatrixSig.mat ->
    int -> Owl_algodiff_generic.MatrixSig.mat
  val clone :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val reset : Owl_algodiff_generic.MatrixSig.mat -> unit
  val reshape :
    int ->
    int ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val copy_row_to :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> int -> unit
  val copy_col_to :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> int -> unit
  val mapi :
    (int ->
     int ->
     Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.elt) ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val iteri_rows :
    (int -> Owl_algodiff_generic.MatrixSig.mat -> unit) ->
    Owl_algodiff_generic.MatrixSig.mat -> unit
  val iter2_rows :
    (Owl_algodiff_generic.MatrixSig.mat ->
     Owl_algodiff_generic.MatrixSig.mat -> unit) ->
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> unit
  val draw_rows :
    ?replacement:bool ->
    Owl_algodiff_generic.MatrixSig.mat ->
    int -> Owl_algodiff_generic.MatrixSig.mat * int array
  val draw_rows2 :
    ?replacement:bool ->
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat ->
    int ->
    Owl_algodiff_generic.MatrixSig.mat * Owl_algodiff_generic.MatrixSig.mat *
    int array
  val of_arrays :
    Owl_algodiff_generic.MatrixSig.elt array array ->
    Owl_algodiff_generic.MatrixSig.mat
  val of_rows :
    Owl_algodiff_generic.MatrixSig.mat array ->
    Owl_algodiff_generic.MatrixSig.mat
  val to_ndarray :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.arr
  val of_ndarray :
    Owl_algodiff_generic.MatrixSig.arr -> Owl_algodiff_generic.MatrixSig.mat
  val print : Owl_algodiff_generic.MatrixSig.mat -> unit
  val max :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val abs :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val neg :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val floor :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val ceil :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val round :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val sqr :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val sqrt :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val log :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val log2 :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val log10 :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val exp :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val sin :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val cos :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val tan :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val sinh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val cosh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val tanh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val asin :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val acos :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val atan :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val asinh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val acosh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val atanh :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val inv :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val trace :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val sum :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val sum_rows :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val signum :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val transpose :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val l1norm :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val l2norm :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val l2norm_sqr :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.elt
  val sigmoid :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val relu :
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val clip_by_l2norm :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val pow :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_pow :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val pow_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val atan2 :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_atan2 :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val atan2_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val add :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val sub :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val mul :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val div :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val add_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val sub_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val mul_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val div_scalar :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.elt -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_add :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_sub :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_mul :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val scalar_div :
    Owl_algodiff_generic.MatrixSig.elt ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
  val dot :
    Owl_algodiff_generic.MatrixSig.mat ->
    Owl_algodiff_generic.MatrixSig.mat -> Owl_algodiff_generic.MatrixSig.mat
end