This bugzilla service is closed. All entries have been migrated to

Bug 1735

Summary: Support non-commutative multiplication "Scalar" types
Product: Eigen Reporter: Dirk Toewe <DirkToewe>
Component: Core - generalAssignee: Nobody <eigen.nobody>
Status: CONFIRMED ---    
Severity: Feature Request CC: chtz, gael.guennebaud, jacob.benoit.1
Priority: Normal    
Version: 3.4 (development)   
Hardware: All   
OS: All   

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: