Add mixed dense/skew-symmetric arithmetic operators

Summary

  • Add operator+ and operator- between MatrixBase and SkewSymmetricBase in 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_matrix3 test suite passes

Closes #2925 (closed)

Merge request reports

Loading