Module Bigarray
    type float32_elt = 
  | Float32_elt
    
  
    type float64_elt = 
  | Float64_elt
    
  
    type int8_signed_elt = 
  | Int8_signed_elt
    
  
    type int8_unsigned_elt = 
  | Int8_unsigned_elt
    
  
    type int16_signed_elt = 
  | Int16_signed_elt
    
  
    type int16_unsigned_elt = 
  | Int16_unsigned_elt
    
  
    type int32_elt = 
  | Int32_elt
    
  
    type int64_elt = 
  | Int64_elt
    
  
    type int_elt = 
  | Int_elt
    
  
    type nativeint_elt = 
  | Nativeint_elt
    
  
    type complex32_elt = 
  | Complex32_elt
    
  
    type complex64_elt = 
  | Complex64_elt
    
  
    type ('a, 'b) kind = 
  | Float32 : (float, float32_elt) kind
| Float64 : (float, float64_elt) kind
| Int8_signed : (int, int8_signed_elt) kind
| Int8_unsigned : (int, int8_unsigned_elt) kind
| Int16_signed : (int, int16_signed_elt) kind
| Int16_unsigned : (int, int16_unsigned_elt) kind
| Int32 : (int32, int32_elt) kind
| Int64 : (int64, int64_elt) kind
| Int : (int, int_elt) kind
| Nativeint : (nativeint, nativeint_elt) kind
| Char : (char, int8_unsigned_elt) kind
    
  
    val float32 : (float, float32_elt) kind
    
  
  
    val float64 : (float, float64_elt) kind
    
  
  
    val int8_signed : (int, int8_signed_elt) kind
    
  
  
    val int8_unsigned : (int, int8_unsigned_elt) kind
    
  
  
    val int16_signed : (int, int16_signed_elt) kind
    
  
  
    val int16_unsigned : (int, int16_unsigned_elt) kind
    
  
  
    val int : (int, int_elt) kind
    
  
  
    val int32 : (int32, int32_elt) kind
    
  
  
    val int64 : (int64, int64_elt) kind
    
  
  
    val nativeint : (nativeint, nativeint_elt) kind
    
  
  
    val char : (char, int8_unsigned_elt) kind
    
  
  
    type c_layout = 
  | C_layout_typ
    
  
    type fortran_layout = 
  | Fortran_layout_typ
    
  
    type 'a layout = 
  | C_layout : c_layout layout
| Fortran_layout : fortran_layout layout
    
  
    val c_layout : c_layout layout
    
  
  
    val fortran_layout : fortran_layout layout
    
  
  module Genarray : sig
      
      
    type ('a, 'b, 'c) t
    
  
  
    val create : ('a, 'b) kind -> 'c layout -> int array -> ('a, 'b, 'c) t
    
  
  
    val num_dims : ('a, 'b, 'c) t -> int
    
  
  
    val dims : ('a, 'b, 'c) t -> int array
    
  
  
    val nth_dim : ('a, 'b, 'c) t -> int -> int
    
  
  
    val kind : ('a, 'b, 'c) t -> ('a, 'b) kind
    
  
  
    val layout : ('a, 'b, 'c) t -> 'c layout
    
  
  
    val get : ('a, 'b, 'c) t -> int array -> 'a
    
  
  
    val set : ('a, 'b, 'c) t -> int array -> 'a -> unit
    
  
  
    val sub_left : ('a, 'b, c_layout) t -> int -> int -> ('a, 'b, c_layout) t
    
  
  
    val sub_right : ('a, 'b, fortran_layout) t -> int -> int -> ('a, 'b, fortran_layout) t
    
  
  
    val slice_left : ('a, 'b, c_layout) t -> int array -> ('a, 'b, c_layout) t
    
  
  
    val slice_right : ('a, 'b, fortran_layout) t -> int array -> ('a, 'b, fortran_layout) t
    
  
  
    val blit : ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> unit
    
  
  
    val fill : ('a, 'b, 'c) t -> 'a -> unit
    
  
  
    val map_file : Unix.file_descr -> ?pos:int64 -> ('a, 'b) kind -> 'c layout -> bool -> int array -> ('a, 'b, 'c) t
    
  
  end
    module Array1 : sig
      
      
    type ('a, 'b, 'c) t
    
  
  
    val create : ('a, 'b) kind -> 'c layout -> int -> ('a, 'b, 'c) t
    
  
  
    val dim : ('a, 'b, 'c) t -> int
    
  
  
    val kind : ('a, 'b, 'c) t -> ('a, 'b) kind
    
  
  
    val layout : ('a, 'b, 'c) t -> 'c layout
    
  
  
    val get : ('a, 'b, 'c) t -> int -> 'a
    
  
  
    val set : ('a, 'b, 'c) t -> int -> 'a -> unit
    
  
  
    val sub : ('a, 'b, 'c) t -> int -> int -> ('a, 'b, 'c) t
    
  
  
    val blit : ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> unit
    
  
  
    val fill : ('a, 'b, 'c) t -> 'a -> unit
    
  
  
    val of_array : ('a, 'b) kind -> 'c layout -> 'a array -> ('a, 'b, 'c) t
    
  
  
    val map_file : Unix.file_descr -> ?pos:int64 -> ('a, 'b) kind -> 'c layout -> bool -> int -> ('a, 'b, 'c) t
    
  
  
    val unsafe_get : ('a, 'b, 'c) t -> int -> 'a
    
  
  
    val unsafe_set : ('a, 'b, 'c) t -> int -> 'a -> unit
    
  
  end
    module Array2 : sig
      
      
    type ('a, 'b, 'c) t
    
  
  
    val create : ('a, 'b) kind -> 'c layout -> int -> int -> ('a, 'b, 'c) t
    
  
  
    val dim1 : ('a, 'b, 'c) t -> int
    
  
  
    val dim2 : ('a, 'b, 'c) t -> int
    
  
  
    val kind : ('a, 'b, 'c) t -> ('a, 'b) kind
    
  
  
    val layout : ('a, 'b, 'c) t -> 'c layout
    
  
  
    val get : ('a, 'b, 'c) t -> int -> int -> 'a
    
  
  
    val set : ('a, 'b, 'c) t -> int -> int -> 'a -> unit
    
  
  
    val sub_left : ('a, 'b, c_layout) t -> int -> int -> ('a, 'b, c_layout) t
    
  
  
    val sub_right : ('a, 'b, fortran_layout) t -> int -> int -> ('a, 'b, fortran_layout) t
    
  
  
    val slice_left : ('a, 'b, c_layout) t -> int -> ('a, 'b, c_layout) Array1.t
    
  
  
    val slice_right : ('a, 'b, fortran_layout) t -> int -> ('a, 'b, fortran_layout) Array1.t
    
  
  
    val blit : ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> unit
    
  
  
    val fill : ('a, 'b, 'c) t -> 'a -> unit
    
  
  
    val of_array : ('a, 'b) kind -> 'c layout -> 'a array array -> ('a, 'b, 'c) t
    
  
  
    val map_file : Unix.file_descr -> ?pos:int64 -> ('a, 'b) kind -> 'c layout -> bool -> int -> int -> ('a, 'b, 'c) t
    
  
  
    val unsafe_get : ('a, 'b, 'c) t -> int -> int -> 'a
    
  
  
    val unsafe_set : ('a, 'b, 'c) t -> int -> int -> 'a -> unit
    
  
  end
    module Array3 : sig
      
      
    type ('a, 'b, 'c) t
    
  
  
    val create : ('a, 'b) kind -> 'c layout -> int -> int -> int -> ('a, 'b, 'c) t
    
  
  
    val dim1 : ('a, 'b, 'c) t -> int
    
  
  
    val dim2 : ('a, 'b, 'c) t -> int
    
  
  
    val dim3 : ('a, 'b, 'c) t -> int
    
  
  
    val kind : ('a, 'b, 'c) t -> ('a, 'b) kind
    
  
  
    val layout : ('a, 'b, 'c) t -> 'c layout
    
  
  
    val get : ('a, 'b, 'c) t -> int -> int -> int -> 'a
    
  
  
    val set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit
    
  
  
    val sub_left : ('a, 'b, c_layout) t -> int -> int -> ('a, 'b, c_layout) t
    
  
  
    val sub_right : ('a, 'b, fortran_layout) t -> int -> int -> ('a, 'b, fortran_layout) t
    
  
  
    val slice_left_1 : ('a, 'b, c_layout) t -> int -> int -> ('a, 'b, c_layout) Array1.t
    
  
  
    val slice_right_1 : ('a, 'b, fortran_layout) t -> int -> int -> ('a, 'b, fortran_layout) Array1.t
    
  
  
    val slice_left_2 : ('a, 'b, c_layout) t -> int -> ('a, 'b, c_layout) Array2.t
    
  
  
    val slice_right_2 : ('a, 'b, fortran_layout) t -> int -> ('a, 'b, fortran_layout) Array2.t
    
  
  
    val blit : ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> unit
    
  
  
    val fill : ('a, 'b, 'c) t -> 'a -> unit
    
  
  
    val of_array : ('a, 'b) kind -> 'c layout -> 'a array array array -> ('a, 'b, 'c) t
    
  
  
    val map_file : Unix.file_descr -> ?pos:int64 -> ('a, 'b) kind -> 'c layout -> bool -> int -> int -> int -> ('a, 'b, 'c) t
    
  
  
    val unsafe_get : ('a, 'b, 'c) t -> int -> int -> int -> 'a
    
  
  
    val unsafe_set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit
    
  
  end
    
    val genarray_of_array1 : ('a, 'b, 'c) Array1.t -> ('a, 'b, 'c) Genarray.t
    
  
  
    val genarray_of_array2 : ('a, 'b, 'c) Array2.t -> ('a, 'b, 'c) Genarray.t
    
  
  
    val genarray_of_array3 : ('a, 'b, 'c) Array3.t -> ('a, 'b, 'c) Genarray.t
    
  
  
    val array1_of_genarray : ('a, 'b, 'c) Genarray.t -> ('a, 'b, 'c) Array1.t
    
  
  
    val array2_of_genarray : ('a, 'b, 'c) Genarray.t -> ('a, 'b, 'c) Array2.t
    
  
  
    val array3_of_genarray : ('a, 'b, 'c) Genarray.t -> ('a, 'b, 'c) Array3.t
    
  
  
    val reshape : ('a, 'b, 'c) Genarray.t -> int array -> ('a, 'b, 'c) Genarray.t
    
  
  
    val reshape_1 : ('a, 'b, 'c) Genarray.t -> int -> ('a, 'b, 'c) Array1.t
    
  
  
    val reshape_2 : ('a, 'b, 'c) Genarray.t -> int -> int -> ('a, 'b, 'c) Array2.t
    
  
  
    val reshape_3 : ('a, 'b, 'c) Genarray.t -> int -> int -> int -> ('a, 'b, 'c) Array3.t