This bugzilla service is closed. All entries have been migrated to
Bug 1735 - Support non-commutative multiplication "Scalar" types
Summary: Support non-commutative multiplication "Scalar" types
Alias: None
Product: Eigen
Classification: Unclassified
Component: Core - general (show other bugs)
Version: 3.4 (development)
Hardware: All All
: Normal Feature Request
Assignee: Nobody
Depends on:
Reported: 2019-08-01 20:32 UTC by Dirk Toewe
Modified: 2019-12-04 18:43 UTC (History)
3 users (show)


Description Dirk Toewe 2019-08-01 20:32:01 UTC
"Scalar" types with a non-commutative multiplication would be useful in many different areas. Here are two example of such data types that come to my mind:

  * Matrices of matrices as requested in this other issue:
  * Quaternions as used for example in Signal Processing:

In v3.3.7, I could get Quaternions to work as scalar type albeit with many caveats, limitations and under ear-deafening toothgrinding. With the latest github-mirror versions however, it does not work at all anymore. This leads me to the following feature request: Would it be possible to step-by-step add support for Scalar types with non-commutative Scalar types? Maybe just starting with adding a new "IsMultiplicationCommutative" member to NumTraits, then supported basic operations like matrix multiplication and element-wise multiplication. That would allow me to add support of quaternions to the JacobiSVD.
Comment 1 Christoph Hertzberg 2019-08-07 16:49:04 UTC
No objections, though probably not too trivial to implement.

I guess the main work will be adapting all product implementations (e.g., some optimizations like (a*A)*(b*B) == (a*b)*(A*B) are not possible anymore).

After resolving Bug 560, Matrix<Quaterniond, ...> would be possible.
Comment 2 Nobody 2019-12-04 18:43:40 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance:

Note You need to log in before you can comment on or make changes to this bug.