sig
  type elt
  type t = Matrix.MAT.elt array array
  val ( + ) : Matrix.MAT.elt -> Matrix.MAT.elt -> Matrix.MAT.elt
  val ( * ) : Matrix.MAT.elt -> Matrix.MAT.elt -> Matrix.MAT.elt
  val ( - ) : Matrix.MAT.elt -> Matrix.MAT.elt -> Matrix.MAT.elt
  val ( ~- ) : Matrix.MAT.elt -> Matrix.MAT.elt
  val ( / ) : Matrix.MAT.elt -> Matrix.MAT.elt -> Matrix.MAT.elt
  val elt_of_int : int -> Matrix.MAT.elt
  val dimx : Matrix.MAT.t -> int
  val dimy : Matrix.MAT.t -> int
  val zeroes : w:int -> h:int -> Matrix.MAT.t
  val init : (int -> int -> Matrix.MAT.elt) -> w:int -> h:int -> Matrix.MAT.t
  val map :
    ?bw:int ->
    ?bh:int ->
    (int -> int -> Matrix.MAT.elt -> 'a) -> Matrix.MAT.t -> 'a array array
  val iter :
    ?bw:int ->
    ?bh:int -> (int -> int -> Matrix.MAT.elt -> unit) -> Matrix.MAT.t -> unit
  val fold :
    ?bw:int ->
    ?bh:int ->
    ('-> int -> int -> Matrix.MAT.elt -> 'a) -> '-> Matrix.MAT.t -> 'a
end