    sig
      type ('a, 'b, 'c) t
      val create :
        ('a, 'b) Bigarray.kind ->
        'c Bigarray.layout -> int -> int -> ('a, 'b, 'c) Bigarray.Array2.t
      val dim1 : ('a, 'b, 'c) Bigarray.Array2.t -> int
      val dim2 : ('a, 'b, 'c) Bigarray.Array2.t -> int
      external get : ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a
        = "%bigarray_ref_2"
      external set : ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a -> unit
        = "%bigarray_set_2"
      external sub_left :
        ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t ->
        int -> int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t
        = "bigarray_sub"
      external sub_right :
        ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t ->
        int -> int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t
        = "bigarray_sub"
      val slice_left :
        ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t ->
        int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t
      val slice_right :
        ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t ->
        int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array1.t
      external blit :
        ('a, 'b, 'c) Bigarray.Array2.t -> ('a, 'b, 'c) Bigarray.Array2.t -> unit
        = "bigarray_blit"
      external fill : ('a, 'b, 'c) Bigarray.Array2.t -> 'a -> unit
        = "bigarray_fill"
      val of_array :
        ('a, 'b) Bigarray.kind ->
        'c Bigarray.layout -> 'a array array -> ('a, 'b, 'c) Bigarray.Array2.t
      val map_file :
        Unix.file_descr ->
        ('a, 'b) Bigarray.kind ->
        'c Bigarray.layout ->
        bool -> int -> int -> ('a, 'b, 'c) Bigarray.Array2.t
    end