Re: [eigen] Serious conflict between Dynamic and -1 in Diagonal<>

[ Thread Index | Date Index | More Archives ]

Yes, I also though about a different encoding, but this would break
the consistency with the diagonal(int) diagonal<int>() methods. You
really want to keep:


working. So introducing a new token seems to be less impacting
solution. Moreover, I just thought about another argument: I think
that except in Diagonal<>, Dynamic is only used to refer to a runtime
*size* (positive), while here we are talking about a runtime *index*
(positive or negative). If that's true, it's not chocking to introduce
a DynamicIndex token.

Does 'DynamicIndex' sound a good name to you?


On Tue, Jul 10, 2012 at 12:23 PM, Helmut Jarausch
<jarausch@xxxxxxxxxxxxxxxxxxx> wrote:
> On 07/10/2012 10:34:12 AM, Gael Guennebaud wrote:
>> Hi,
>> as pointed out in this thread:
>> there is a serious issue in the Diagonal<Expression, DiagIndex> class.
>> Recall that Diagonal<> represents an expression of the diagonal
>> (DiagIndex==0), a super-diagonal (DiagIndex>0) or a sub-diagonal
>> (DiagIndex<0).
>> Of course, one can also set DiagIndex to Dynamic to pick a given
>> super/sub diagonal at runtime. The problem is that since Dynamic==-1,
>> we cannot distinguish between the first sub-diagonal (DiagIndex==-1)
>> and a runtime selected diagonal.
>> Since changing the value of Dynamic is not an option, I propose to add
>> a special enum for this use case, like RuntimeDiagIndex or
>> DynamicDiagIndex that would be set to a very big value.
>> Opinion? better solution?
> For readability I'd prefer something like
> Diagonal<Expression, Offset(-1)>
> or
> Diagonal<Expression, Offset<-1> >
> Helmut.

Mail converted by MHonArc 2.6.19+