Re: [eigen] nesting

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


Ok, answering myself. Here it was probably easier to inherit all flags
and switch only to storage order one.

On Sat, Feb 6, 2010 at 12:14 PM, Hauke Heibel
<hauke.heibel@xxxxxxxxxxxxxx> wrote:
> 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/