A recent change of mine about matrices having different max sizes and actual sizes broke lu kernel computation. The reason is that I thought that in the following example:
Matrix<float,3,3,0,4,4> m;
m << 0, 3, 6, 1, 4, 7, 2, 5, 8;
the data were organized as follow:
0 1 2 x 3 4 5 x 6 7 8 x x x x x
i.e., Matrix<float,3,3,0,4,4> was like a 3x3 block of a 4x4 matrix. However, currently, the 3x3 floats are taken from the 9 first ones of the 16 statically allocated buffer:
0 1 2 4 4 5 6 7 8 x x x x x x x
i.e., Matrix<float,3,3,0,4,4> is really like a Matrix<float,3,3>.
So the question is shall we stick with the current behavior ? or shall we adopt what I thought it was ? Let's enumerate the pros and cons for the change:
pros: * potentially allows for more vectorization since, e.g., it allows to align all the columns of a Matrix<float,3,Dynamic> using Matrix<float,3,Dynamic,0,4,Dynamic> cons: * this is a change so more work to do and potentially new bugs ;)
* such matrices lost the linear access flags