sig
  type t = Gg.m4
  val dim : int
  type v = Gg.v4
  val v :
    float ->
    float ->
    float ->
    float ->
    float ->
    float ->
    float ->
    float ->
    float ->
    float -> float -> float -> float -> float -> float -> float -> Gg.m4
  val of_rows : Gg.v4 -> Gg.v4 -> Gg.v4 -> Gg.v4 -> Gg.m4
  val of_cols : Gg.v4 -> Gg.v4 -> Gg.v4 -> Gg.v4 -> Gg.m4
  val el : int -> int -> Gg.m4 -> float
  val row : int -> Gg.m4 -> Gg.M4.v
  val col : int -> Gg.m4 -> Gg.M4.v
  val zero : Gg.m4
  val id : Gg.m4
  val of_m3_v3 : Gg.m3 -> Gg.v3 -> Gg.m4
  val of_quat : Gg.quat -> Gg.m4
  val neg : Gg.m4 -> Gg.m4
  val add : Gg.m4 -> Gg.m4 -> Gg.m4
  val sub : Gg.m4 -> Gg.m4 -> Gg.m4
  val mul : Gg.m4 -> Gg.m4 -> Gg.m4
  val emul : Gg.m4 -> Gg.m4 -> Gg.m4
  val ediv : Gg.m4 -> Gg.m4 -> Gg.m4
  val smul : float -> Gg.m4 -> Gg.m4
  val transpose : Gg.m4 -> Gg.m4
  val trace : Gg.m4 -> float
  val det : Gg.m4 -> float
  val inv : Gg.m4 -> Gg.m4
  val move : Gg.v3 -> Gg.m4
  val rot_map : Gg.v3 -> Gg.v3 -> Gg.m4
  val rot_axis : Gg.v3 -> float -> Gg.m4
  val rot_zyx : Gg.v3 -> Gg.m4
  val scale3 : Gg.v3 -> Gg.m4
  val rigid : move:Gg.v3 -> rot:Gg.v3 * float -> Gg.m4
  val rigidq : move:Gg.v3 -> rot:Gg.quat -> Gg.m4
  val srigid : move:Gg.v3 -> rot:Gg.v3 * float -> scale:Gg.v3 -> Gg.m4
  val srigidq : move:Gg.v3 -> rot:Gg.quat -> scale:Gg.v3 -> Gg.m4
  val ortho :
    left:float ->
    right:float ->
    bottom:float -> top:float -> near:float -> far:float -> Gg.m4
  val persp :
    left:float ->
    right:float ->
    bottom:float -> top:float -> near:float -> far:float -> Gg.m4
  val scale : Gg.v4 -> Gg.m4
  val map : (float -> float) -> Gg.m4 -> Gg.m4
  val mapi : (int -> int -> float -> float) -> Gg.m4 -> Gg.m4
  val fold : ('-> float -> 'a) -> '-> Gg.m4 -> 'a
  val foldi : ('-> int -> int -> float -> 'a) -> '-> Gg.m4 -> 'a
  val iter : (float -> unit) -> Gg.m4 -> unit
  val iteri : (int -> int -> float -> unit) -> Gg.m4 -> unit
  val for_all : (float -> bool) -> Gg.m4 -> bool
  val exists : (float -> bool) -> Gg.m4 -> bool
  val equal : Gg.m4 -> Gg.m4 -> bool
  val equal_f : (float -> float -> bool) -> Gg.m4 -> Gg.m4 -> bool
  val compare : Gg.m4 -> Gg.m4 -> int
  val compare_f : (float -> float -> int) -> Gg.m4 -> Gg.m4 -> int
  val to_string : Gg.m4 -> string
  val pp : Format.formatter -> Gg.m4 -> unit
  val pp_f :
    (Format.formatter -> float -> unit) -> Format.formatter -> Gg.m4 -> unit
  val e00 : Gg.m4 -> float
  val e01 : Gg.m4 -> float
  val e02 : Gg.m4 -> float
  val e03 : Gg.m4 -> float
  val e10 : Gg.m4 -> float
  val e11 : Gg.m4 -> float
  val e12 : Gg.m4 -> float
  val e13 : Gg.m4 -> float
  val e20 : Gg.m4 -> float
  val e21 : Gg.m4 -> float
  val e22 : Gg.m4 -> float
  val e23 : Gg.m4 -> float
  val e30 : Gg.m4 -> float
  val e31 : Gg.m4 -> float
  val e32 : Gg.m4 -> float
  val e33 : Gg.m4 -> float
end