Re: [eigen] Forcing a conversion to ColMajor

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


On Sat, Jul 28, 2012 at 12:40 PM, Douglas Bates <bates@xxxxxxxxxxxxx> wrote:
> On Sat, Jul 28, 2012 at 12:11 PM, Douglas Bates <bates@xxxxxxxxxxxxx> wrote:
>> On Sat, Jul 28, 2012 at 2:52 AM, Gael Guennebaud
>> <gael.guennebaud@xxxxxxxxx> wrote:
>>> Hi,
>>>
>>> you could do something like:
>>>
>>> typename Eigen::internal::conditional<T::IsRowMajor,
>>>   Eigen::Matrix<typename T::Scalar,
>>> T::RowsAtCompileTime,T::ColsAtCompileTime,ColMajor>,
>>>   const T&>::type objCopy(obj);
>>>
>>> and then use objCopy instead. If T is column major, then objCopy will
>>> just be an alias (const ref).
>>
>> Thanks for the suggestion.  That version fails with an
>> INVALID_MATRIX_TEMPLATE_PARAMETERS error when trying to do the objCopy
>> on a row-major object.
>>
>> ./include/Eigen/src/Core/Matrix.h:280:13: note: in instantiation of
>> member function
>> 'Eigen::PlainObjectBase<Eigen::Matrix<std::complex<double>, 1, -1, 0,
>> 1, -1> >::_check_template_params' requested here
>>       Base::_check_template_params();
>>             ^
>> ./include/RcppEigenWrap.h:89:31: note: in instantiation of function
>> template specialization 'Eigen::Matrix<std::complex<double>, 1, -1, 0,
>> 1, -1>::Matrix<Eigen::Matrix<std::complex<double>, 1, -1, 1, 1, -1> >'
>> requested here
>>               const T&>::type objCopy(obj);
>>
>> I think this is triggered by an object of the form
>>
>> Eigen::RowVectorXcd::Zero(5)
>>
>> and my guess is that the condition failing is
>>
>> EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1,
>> (Options&RowMajor)==RowMajor)
>
> Probably I should just trap the case of MaxRowsAtCompileTime == 1
> because there really is no difference between row-major and
> column-major in terms of the object returned to R.

The last part of that sentence was for the case of
MaxRowsAtCompileTime == 1.  Of course I have since found out that I
need to catch that case at compile time, not run time, for which I
will need to do more template metaprogramming than I have done in the
past.



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