quat_mul - Multiplies two quaternions. Allegro game programming library.
void quat_mul(const QUAT *p, const QUAT *q, QUAT *out);
Multiplies two quaternions, storing the result in out. The resulting quaternion
will have the same effect as the combination of p and q, ie. when applied to a
point, (point * out) = ((point * p) * q). Any number of rotations can be
concatenated in this way. Note that quaternion multiplication is not
commutative, ie. quat_mul(p, q) != quat_mul(q, p).