"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.
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.