# Support non-commutative multiplication "Scalar" types

## Submitted by Dirk Toewe

Assigned to **Nobody**

**Link to original bugzilla bug (#1735)**

**Version**: 3.4 (development)

## Description

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