[eigen] Index type for PermutationMatrix and Transpositions

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


Hi,

when we changed the default index type to "long int" we did not though
about the PermutationMatrix and Transpositions classes which stores a
vector of long int and so waste memory in 99.999% of the cases. It is
pretty obvious to me that the index type should be a template
parameter of these classes:

template<int Size, typename IndexType, int MaxSize=Size>
class PermutationMatrix;

That's a first for people who directly declare a permutation. So here
is the first question:

Shall we specify a default value for the IndexType ? If yes, should it
be "int" or "DenseIndex" ? I vote for "int". In this case we can also
move the IndexType template argument at the last place to keep the
source compatibility.

Also, in most cases the user does not create a permutation object
directly but it is declared for him in classes such as *LU<MatrixType>
or LDLT<MatrixType>, and in this case the logic would be to use
MatrixType::Index as the index type of the permutation object and
waste memory (bandwidth) on 64bits systems. Since it is unbelievable
that one day someone will perform a LU or LDLT dec on a matrix
requiring 64bits integers for the indices (think about the size of the
matrix!), I think it is safe to use int there too.

btw, I'm also in the process of extending these two classes with a
Base and three derived classes (storage, Map, Wrapper).

gael



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