Re: [eigen] Index type for PermutationMatrix and Transpositions

[ Thread Index | Date Index | More Archives ]

I use PermutationMatrix, and I agree with your changes. I'd rather have to specify the IndexType when i really need 64bits (which i doubt will ever happen) rather than loose memory (and efficiency) with a big default



Thomas Capricelli <orzel@xxxxxxxxxxxxxxx>

On Tuesday 25 January 2011 10:11:22 Gael Guennebaud wrote:

> 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+