Add mixed dense/skew-symmetric arithmetic operators
Summary
- Add
operator+andoperator-betweenMatrixBaseandSkewSymmetricBasein both directions - Enables expressions like
A - SkewSymmetricMatrix3<double>(b)without needing.toDenseMatrix() - Also works with Product expressions:
A * skew - SkewSymmetricMatrix3<double>(A * b)
All three cases from the issue now compile and work correctly:
Matrix3d c1 = A - SkewSymmetricMatrix3<double>(A * b);
Matrix3d c2 = A * SkewSymmetricMatrix3<double>(b) - SkewSymmetricMatrix3<double>(A * b);
Matrix3d c3 = SkewSymmetricMatrix3<double>(b) * A - SkewSymmetricMatrix3<double>(A * b);
Test plan
- dense - skew works
- Product<dense,skew> - skew works
- Product<skew,dense> - skew works
- dense + skew works
- skew + dense works
- skew - dense works
- Existing skew-skew ops unchanged
-
Existing
skew_symmetric_matrix3test suite passes
Closes #2925 (closed)