sig
  type double_vector_flat = private {
    data : float array;
    off : int;
    len : int;
    stride : int;
  }
  type vector = Gsl_vector_flat.double_vector_flat
  val check : Gsl_vector_flat.vector -> Gsl_vector_flat.vector
  val create : ?init:float -> int -> Gsl_vector_flat.vector
  val of_array : float array -> Gsl_vector_flat.vector
  val to_array : Gsl_vector_flat.vector -> float array
  val length : Gsl_vector_flat.vector -> int
  val get : Gsl_vector_flat.vector -> int -> float
  val set : Gsl_vector_flat.vector -> int -> float -> unit
  val set_all : Gsl_vector_flat.vector -> float -> unit
  val set_zero : Gsl_vector_flat.vector -> unit
  val set_basis : Gsl_vector_flat.vector -> int -> unit
  val memcpy :
    src:Gsl_vector_flat.vector -> dst:Gsl_vector_flat.vector -> unit
  val copy : Gsl_vector_flat.vector -> Gsl_vector_flat.vector
  val swap_element : Gsl_vector_flat.vector -> int -> int -> unit
  val reverse : Gsl_vector_flat.vector -> unit
  external add : Gsl_vector_flat.vector -> Gsl_vector_flat.vector -> unit
    = "ml_gsl_vector_add"
  external sub : Gsl_vector_flat.vector -> Gsl_vector_flat.vector -> unit
    = "ml_gsl_vector_sub"
  external mul : Gsl_vector_flat.vector -> Gsl_vector_flat.vector -> unit
    = "ml_gsl_vector_mul"
  external div : Gsl_vector_flat.vector -> Gsl_vector_flat.vector -> unit
    = "ml_gsl_vector_div"
  external scale : Gsl_vector_flat.vector -> float -> unit
    = "ml_gsl_vector_scale"
  external add_constant : Gsl_vector_flat.vector -> float -> unit
    = "ml_gsl_vector_add_constant"
  external is_null : Gsl_vector_flat.vector -> bool = "ml_gsl_vector_isnull"
  external max : Gsl_vector_flat.vector -> float = "ml_gsl_vector_max"
  external min : Gsl_vector_flat.vector -> float = "ml_gsl_vector_min"
  external minmax : Gsl_vector_flat.vector -> float * float
    = "ml_gsl_vector_minmax"
  external max_index : Gsl_vector_flat.vector -> int
    = "ml_gsl_vector_maxindex"
  external min_index : Gsl_vector_flat.vector -> int
    = "ml_gsl_vector_minindex"
  external minmax_index : Gsl_vector_flat.vector -> int * int
    = "ml_gsl_vector_minmaxindex"
  val subvector :
    ?stride:int ->
    Gsl_vector_flat.vector -> off:int -> len:int -> Gsl_vector_flat.vector
  val view_array :
    ?stride:int ->
    ?off:int -> ?len:int -> float array -> Gsl_vector_flat.vector
end