sig
  type t
  external create : float -> float -> float -> float -> Osg.Quat.t
    = "quat_create"
  val of_tuple : float * float * float * float -> Osg.Quat.t
  val of_array : float array -> Osg.Quat.t
  external to_array : Osg.Quat.t -> float array = "quat_to_array"
  external to_tuple : Osg.Quat.t -> float * float * float * float
    = "quat_to_tuple"
  external x : Osg.Quat.t -> float = "quat_x"
  external y : Osg.Quat.t -> float = "quat_y"
  external z : Osg.Quat.t -> float = "quat_z"
  external w : Osg.Quat.t -> float = "quat_w"
  external slerp : Osg.Quat.t -> float -> Osg.Quat.t -> Osg.Quat.t -> unit
    = "quat_slerp"
  external inverse : Osg.Quat.t -> Osg.Quat.t = "quat_inverse"
end