"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: http://eigen.tuxfamily.org/bz/show_bug.cgi?id=574 * Quaternions as used for example in Signal Processing: http://sepwww.stanford.edu/sep/jeff/Quaternions.pdf 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.
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.
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com'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: https://gitlab.com/libeigen/eigen/issues/1735.