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