Re: [eigen] nesting

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


Ok, I am on it. I stumbled over something where I am not sure how to handle it.

In e.g. ei_traits< Transpose<...> > we (or you) do:

Flags = (int(_MatrixTypeNested::Flags) ^ RowMajorBit),

I expected this to be:

Flags = (_MatrixTypeNested::Flags & HereditaryBits) ^ RowMajorBit

am I wrong or right?

- Hauke

p.s.: I found this useful to recall...

|: set bit(s)
&: check bit(s) or copy bit(s)
^: toggle bit(s)
~: clear bit(s)

On Fri, Feb 5, 2010 at 10:46 PM, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> wrote:
> On Fri, Feb 5, 2010 at 8:47 PM, Hauke Heibel
> <hauke.heibel@xxxxxxxxxxxxxx> wrote:
>> On Fri, Feb 5, 2010 at 10:22 AM, Gael Guennebaud
>> <gael.guennebaud@xxxxxxxxx> wrote:
>>> So unless someone see how to solve this latter issue, what Hauke is trying
>>> to do could work. But instead of specialzing ei_ref_selector for all
>>> expressions I would suggest a different approach using new bit Flags. The
>>> rules would be as follow:
>>> - if the expr has the NestByReference flag, then nest by reference,
>>> otherwise nest by value
>>> - by default, only Matrix and Array would have the NestByReference flag
>>> - the NestByReference flag is not inherited
>>> - an expression nesting a temporary would have the NestParentByReference
>>> flag
>>> - the NestParentByReference flag is not inherited, but if one of the
>>> children of an expression has the NestParentByReference flag, then the
>>> current expression will have the NestByReference flag. If we make sure that
>>> NestParentByReferenceBit == NestByReference>>1, then we simply have to do:
>>> Flags = ... | ((Lhs::Flags|Rhs::Flags)&NestParentByReference) << 1), or we
>>> could also use a macro: Flags = ... |
>>> EIGEN_PROPAGATE_NESTING_BIT(Lhs::Flags|Rhs::Flags).
>>
>> Just wanted to let you know that in case you decide to do this, I
>> volunteer to code it.
>
> great! I'm tempted to say go ahead for it as I cannot see any simpler solution.
>
>> - Hauke
>>
>>
>>
>
>
>



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