quaternion
pub fn dot<T>(a: Quaternion<T>, b: Quaternion<T>) -> T where T: Float,
Dot product of two quaternions