Re: [eigen] Forcing a conversion to ColMajor |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Forcing a conversion to ColMajor
- From: Douglas Bates <bates@xxxxxxxxxxxxx>
- Date: Sat, 28 Jul 2012 12:40:13 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type; bh=qXKZq+HzqkSsrkqdtYqvLu+HG8n0HCkwHhB0FxlHFSM=; b=iDfO+LlE3/KL7VY6VzmvmD2JvcyzBiNUC9gEH7TrrwVzjb87xq+r5aoISi1C8CqQN+ gr6QdeZXTTUhySAXLpH3H9v3ZTphAeNOa/X7CraoVhnHxGLlph6Cx7l+pQQfqLSL0H+q S0TySag60caviEH6LtbRt7h3D37X51bgqAKRCELsE8ENCA9L5HBZ3g5AJj3B5B96iIPx oBtQtJ2UiKc6hOq9nG3txUvIQ80XdPKFw+DW8beggarZbFaWimV1od0Wx5Yv1z3zyK12 AmsrQetCFBeL2fcXnkEn0wr88txnG1OR2sYdnAE++6Da5mjaXpr6+7th5D23P6U8PaiK LXdw==
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.