sig
  type 'a t
  val of_array :
    ('a, 'b, [< `R | `W > `R ]) CCArray1.array_ -> 'CCArray1.View.t
  val get : 'CCArray1.View.t -> int -> 'a
  val length : 'CCArray1.View.t -> int
  val map : f:('-> 'b) -> 'CCArray1.View.t -> 'CCArray1.View.t
  val map2 :
    f:('-> '-> 'c) ->
    'CCArray1.View.t -> 'CCArray1.View.t -> 'CCArray1.View.t
  val select :
    idx:(int, 'b, [< `R | `W > `R ]) CCArray1.array_ ->
    'CCArray1.View.t -> 'CCArray1.View.t
  val select_a : idx:int array -> 'CCArray1.View.t -> 'CCArray1.View.t
  val select_view :
    idx:int CCArray1.View.t -> 'CCArray1.View.t -> 'CCArray1.View.t
  val foldi : ('-> int -> '-> 'b) -> '-> 'CCArray1.View.t -> 'b
  val iteri : f:(int -> '-> unit) -> 'CCArray1.View.t -> unit
  module type S =
    sig
      type elt
      val mult :
        CCArray1.View.S.elt CCArray1.View.t ->
        CCArray1.View.S.elt CCArray1.View.t ->
        CCArray1.View.S.elt CCArray1.View.t
      val add :
        CCArray1.View.S.elt CCArray1.View.t ->
        CCArray1.View.S.elt CCArray1.View.t ->
        CCArray1.View.S.elt CCArray1.View.t
      val sum : CCArray1.View.S.elt CCArray1.View.t -> CCArray1.View.S.elt
      val prod : CCArray1.View.S.elt CCArray1.View.t -> CCArray1.View.S.elt
      val add_scalar :
        CCArray1.View.S.elt CCArray1.View.t ->
        x:CCArray1.View.S.elt -> CCArray1.View.S.elt CCArray1.View.t
      val mult_scalar :
        CCArray1.View.S.elt CCArray1.View.t ->
        x:CCArray1.View.S.elt -> CCArray1.View.S.elt CCArray1.View.t
    end
  module Int :
    sig
      type elt = int
      val mult : elt t -> elt t -> elt t
      val add : elt t -> elt t -> elt t
      val sum : elt t -> elt
      val prod : elt t -> elt
      val add_scalar : elt t -> x:elt -> elt t
      val mult_scalar : elt t -> x:elt -> elt t
    end
  module Float :
    sig
      type elt = float
      val mult : elt t -> elt t -> elt t
      val add : elt t -> elt t -> elt t
      val sum : elt t -> elt
      val prod : elt t -> elt
      val add_scalar : elt t -> x:elt -> elt t
      val mult_scalar : elt t -> x:elt -> elt t
    end
  val raw :
    length:(('a, 'b, [< `R | `W > `R ]) CCArray1.array_ -> int) ->
    get:(('a, 'b, [< `R | `W > `R ]) CCArray1.array_ -> int -> 'a) ->
    ('a, 'b, [< `R | `W > `R ]) CCArray1.array_ -> 'CCArray1.View.t
  val to_array :
    ?res:('a, 'b, [< `R | `W > `W ] as 'c) CCArray1.array_ ->
    ?kind:('a, 'b) Bigarray.kind ->
    'CCArray1.View.t -> ('a, 'b, 'c) CCArray1.array_
end