sig
  type t = float * float
  val to_string : Math.Vector.t -> string
  val ( ~< ) : Math.Vector.t -> float
  val ( ~> ) : Math.Vector.t -> float
  val create : float -> float -> Math.Vector.t
  val of_tuple : float * float -> Math.Vector.t
  val of_angle : float -> Math.Vector.t
  val mag : Math.Vector.t -> float
  val mag_sq : Math.Vector.t -> float
  val add : Math.Vector.t -> Math.Vector.t -> Math.Vector.t
  val sub : Math.Vector.t -> Math.Vector.t -> Math.Vector.t
  val mult : Math.Vector.t -> float -> Math.Vector.t
  val div : Math.Vector.t -> float -> Math.Vector.t
  val dist : Math.Vector.t -> Math.Vector.t -> float
  val dot : Math.Vector.t -> Math.Vector.t -> float
  val norm : Math.Vector.t -> Math.Vector.t
  val with_mag : Math.Vector.t -> float -> Math.Vector.t
  val limit : Math.Vector.t -> float -> Math.Vector.t
  val heading : Math.Vector.t -> float
  val rotate : Math.Vector.t -> float -> Math.Vector.t
  val lerp : Math.Vector.t -> Math.Vector.t -> float -> Math.Vector.t
  val angle_between : Math.Vector.t -> Math.Vector.t -> float
  val project : Math.Vector.t -> Math.Vector.t -> Math.Vector.t
  val ( ++ ) : Math.Vector.t -> Math.Vector.t -> Math.Vector.t
  val ( -- ) : Math.Vector.t -> Math.Vector.t -> Math.Vector.t
  val ( *** ) : Math.Vector.t -> float -> Math.Vector.t
  val ( // ) : Math.Vector.t -> float -> Math.Vector.t
  val ( **. ) : Math.Vector.t -> Math.Vector.t -> float
  val ( ~|| ) : Math.Vector.t -> float
end