[eigen] Re: Index type for PermutationMatrix and Transpositions

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

oops, sorry what I said is not entirely correct. PermutationMatrix
already use "int". The Transpositions class, however, uses DenseIndex.
So I'll just use int everywhere and add a third "typename IndexType"
template argument defaulting to "int" just in case someone want to use
them on very big vectors.


On Tue, Jan 25, 2011 at 10:11 AM, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> 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+ http://listengine.tuxfamily.org/