[eigen] about the semantic of MaxRows, MaxCols

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


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:
 * 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>
 * this is a change so more work to do and potentially new bugs ;)
 * such matrices lost the linear access flags

what do you think ?


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/