QQuaternion: optimize op*

Swap subexpressions around so the expressions involving w
(the first member in memory order) execute first.

And no, compilers don't do that automatically. Well, GCC 4.9 doesn't.

Change-Id: I918ecc27a9ac9775fa91968c0548d182d7ad28e3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
bb10
Marc Mutz 2015-05-04 13:43:02 +02:00 committed by Konstantin Ritt
parent 894a81a1fb
commit ce9ad30c78
1 changed files with 1 additions and 1 deletions

View File

@ -240,9 +240,9 @@ inline QQuaternion &QQuaternion::operator*=(float factor)
inline const QQuaternion operator*(const QQuaternion &q1, const QQuaternion& q2)
{
float ww = (q1.zp + q1.xp) * (q2.xp + q2.yp);
float yy = (q1.wp - q1.yp) * (q2.wp + q2.zp);
float zz = (q1.wp + q1.yp) * (q2.wp - q2.zp);
float ww = (q1.zp + q1.xp) * (q2.xp + q2.yp);
float xx = ww + yy + zz;
float qq = 0.5 * (xx + (q1.zp - q1.xp) * (q2.xp - q2.yp));