sig
  type t = AGeom.vector2d
  val of_points : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Vector2d.t
  val add : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
  val sub : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
  val mul : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
  val div : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
  val dot : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
  val length : AGeom.Vector2d.t -> float
  val normalise : AGeom.Vector2d.t -> AGeom.Vector2d.t
  val angle : AGeom.Vector2d.t -> AGeom.Angle.t
  val cross : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
  val rot90 : AGeom.Vector2d.t -> AGeom.Vector2d.t
  val rot90neg : AGeom.Vector2d.t -> AGeom.Vector2d.t
  val get_line_intersection :
    seg1:AGeom.Vector2d.t * AGeom.Vector2d.t ->
    seg2:AGeom.Vector2d.t * AGeom.Vector2d.t -> AGeom.Vector2d.t option
  val rand : float * float -> AGeom.Vector2d.t
  val srand : Random.State.t -> float * float -> AGeom.Vector2d.t
  val to_string : AGeom.Vector2d.t -> string
  val of_string : string -> AGeom.Vector2d.t
  module Infix :
    sig
      val ( + ) : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
      val ( - ) : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
      val ( * ) : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
      val ( / ) : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
      val ( !. ) : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
      val ( ~. ) : AGeom.Vector2d.t -> AGeom.Vector2d.t
      val ( ?. ) : float * float -> AGeom.Vector2d.t
    end
end