sig
  type t
  val dimension : int
  val get : Vector.V.t -> int -> float
  val set : Vector.V.t -> int -> float -> unit
  val make : float -> Vector.V.t
  val from_array : float array -> Vector.V.t
  val to_array : Vector.V.t -> float array
  val add : Vector.V.t -> Vector.V.t -> Vector.V.t
  val sub : Vector.V.t -> Vector.V.t -> Vector.V.t
  val mul : Vector.V.t -> Vector.V.t -> Vector.V.t
  val muls : Vector.V.t -> float -> Vector.V.t
  val dot_product : Vector.V.t -> Vector.V.t -> float
  val magnitude : Vector.V.t -> float
  val unit_vector : Vector.V.t -> Vector.V.t
end