sig   type t = Gg.v2   val dim : int   type m = Gg.m2   val v : float -> float -> Gg.v2   val comp : int -> Gg.v2 -> float   val x : Gg.v2 -> float   val y : Gg.v2 -> float   val ox : Gg.v2   val oy : Gg.v2   val zero : Gg.v2   val infinity : Gg.v2   val neg_infinity : Gg.v2   val basis : int -> Gg.v2   val of_tuple : float * float -> Gg.v2   val to_tuple : Gg.v2 -> float * float   val of_polar : Gg.v2 -> Gg.v2   val to_polar : Gg.v2 -> Gg.v2   val of_v3 : Gg.v3 -> Gg.v2   val of_v4 : Gg.v4 -> Gg.v2   val neg : Gg.v2 -> Gg.v2   val add : Gg.v2 -> Gg.v2 -> Gg.v2   val sub : Gg.v2 -> Gg.v2 -> Gg.v2   val mul : Gg.v2 -> Gg.v2 -> Gg.v2   val div : Gg.v2 -> Gg.v2 -> Gg.v2   val smul : float -> Gg.v2 -> Gg.v2   val half : Gg.v2 -> Gg.v2   val dot : Gg.v2 -> Gg.v2 -> float   val norm : Gg.v2 -> float   val norm2 : Gg.v2 -> float   val unit : Gg.v2 -> Gg.v2   val polar : float -> float -> Gg.v2   val angle : Gg.v2 -> float   val ortho : Gg.v2 -> Gg.v2   val homogene : Gg.v2 -> Gg.v2   val mix : Gg.v2 -> Gg.v2 -> float -> Gg.v2   val ltr : Gg.m2 -> Gg.v2 -> Gg.v2   val tr : Gg.m3 -> Gg.v2 -> Gg.v2   val ( + ) : Gg.v2 -> Gg.v2 -> Gg.v2   val ( - ) : Gg.v2 -> Gg.v2 -> Gg.v2   val ( * ) : float -> Gg.v2 -> Gg.v2   val ( / ) : Gg.v2 -> float -> Gg.v2   val map : (float -> float) -> Gg.v2 -> Gg.v2   val mapi : (int -> float -> float) -> Gg.v2 -> Gg.v2   val fold : ('-> float -> 'a) -> '-> Gg.v2 -> 'a   val foldi : ('-> int -> float -> 'a) -> '-> Gg.v2 -> 'a   val iter : (float -> unit) -> Gg.v2 -> unit   val iteri : (int -> float -> unit) -> Gg.v2 -> unit   val for_all : (float -> bool) -> Gg.v2 -> bool   val exists : (float -> bool) -> Gg.v2 -> bool   val equal : Gg.v2 -> Gg.v2 -> bool   val equal_f : (float -> float -> bool) -> Gg.v2 -> Gg.v2 -> bool   val compare : Gg.v2 -> Gg.v2 -> int   val compare_f : (float -> float -> int) -> Gg.v2 -> Gg.v2 -> int   val pp : Format.formatter -> Gg.v2 -> unit   val pp_f :     (Format.formatter -> float -> unit) -> Format.formatter -> Gg.v2 -> unit end