+/* quaternions */
+static inline void cgm_qident(cgm_quat *q);
+
+static inline void cgm_qneg(cgm_quat *q);
+static inline void cgm_qadd(cgm_quat *a, const cgm_quat *b);
+static inline void cgm_qsub(cgm_quat *a, const cgm_quat *b);
+static inline void cgm_qmul(cgm_quat *a, const cgm_quat *b);
+
+static inline float cgm_qlength(const cgm_quat *q);
+static inline float cgm_qlength_sq(const cgm_quat *q);
+
+static inline void cgm_qnormalize(cgm_quat *q);
+
+static inline void cgm_qconjugate(cgm_quat *q);
+static inline void cgm_qinvert(cgm_quat *q);
+
+static inline void cgm_qrot_axis(cgm_quat *q, float axis, float x, float y, float z);
+static inline void cgm_qrot_quat(cgm_quat *q, const cgm_quat *rq);
+
+static inline void cgm_qmatrix(float *mat, const cgm_quat *q);
+
+static inline void cgm_qslerp(cgm_quat *res, const cgm_quat *a, const cgm_quat *b, float t);
+