sig
  type t = Gg.quat
  val v : float -> float -> float -> float -> Gg.quat
  val zero : Gg.quat
  val id : Gg.quat
  val mul : Gg.quat -> Gg.quat -> Gg.quat
  val conj : Gg.quat -> Gg.quat
  val unit : Gg.quat -> Gg.quat
  val inv : Gg.quat -> Gg.quat
  val slerp : Gg.quat -> Gg.quat -> float -> Gg.quat
  val squad : Gg.quat -> Gg.quat -> Gg.quat -> Gg.quat -> float -> Gg.quat
  val nlerp : Gg.quat -> Gg.quat -> float -> Gg.quat
  val of_m3 : Gg.m3 -> Gg.quat
  val of_m4 : Gg.m4 -> Gg.quat
  val rot3_map : Gg.v3 -> Gg.v3 -> Gg.quat
  val rot3_axis : Gg.v3 -> float -> Gg.quat
  val rot3_zyx : Gg.v3 -> Gg.quat
  val to_rot3_axis : Gg.quat -> Gg.v3 * float
  val to_rot3_zyx : Gg.quat -> Gg.v3
  val apply3 : Gg.quat -> Gg.v3 -> Gg.v3
  val apply4 : Gg.quat -> Gg.v4 -> Gg.v4
end