    sig
      type ('a, 'b, 'c) t
      external create :
        ('a, 'b) Bigarray.kind ->
        'c Bigarray.layout -> int array -> ('a, 'b, 'c) Bigarray.Genarray.t
        = "bigarray_create"
      external num_dims : ('a, 'b, 'c) Bigarray.Genarray.t -> int
        = "bigarray_num_dims"
      external nth_dim : ('a, 'b, 'c) Bigarray.Genarray.t -> int -> int
        = "bigarray_dim"
      external get : ('a, 'b, 'c) Bigarray.Genarray.t -> int array -> 'a
        = "bigarray_get_generic"
      external set : ('a, 'b, 'c) Bigarray.Genarray.t -> int array -> 'a -> unit
        = "bigarray_set_generic"
      external sub_left :
        ('a, 'b, Bigarray.c_layout) Bigarray.Genarray.t ->
        int -> int -> ('a, 'b, Bigarray.c_layout) Bigarray.Genarray.t
        = "bigarray_sub"
      external sub_right :
        ('a, 'b, Bigarray.fortran_layout) Bigarray.Genarray.t ->
        int -> int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Genarray.t
        = "bigarray_sub"
      external slice_left :
        ('a, 'b, Bigarray.c_layout) Bigarray.Genarray.t ->
        int array -> ('a, 'b, Bigarray.c_layout) Bigarray.Genarray.t
        = "bigarray_slice"
      external slice_right :
        ('a, 'b, Bigarray.fortran_layout) Bigarray.Genarray.t ->
        int array -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Genarray.t
        = "bigarray_slice"
      external blit :
        ('a, 'b, 'c) Bigarray.Genarray.t ->
        ('a, 'b, 'c) Bigarray.Genarray.t -> unit = "bigarray_blit"
      external fill : ('a, 'b, 'c) Bigarray.Genarray.t -> 'a -> unit
        = "bigarray_fill"
      external map_file :
        Unix.file_descr ->
        ('a, 'b) Bigarray.kind ->
        'c Bigarray.layout ->
        bool -> int array -> ('a, 'b, 'c) Bigarray.Genarray.t
        = "bigarray_map_file"
    end