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
parent
894a81a1fb
commit
ce9ad30c78
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue