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 13:12:06 -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=TC21kCbGUB8bLaqsGm8088K+0SUNScoTnAdkG3DPtqw=; b=E5T0+WEZ6+Rawg9JOvIwNt0W8eU2vjFWHoVmEZQIW5c4iriRxeK7XA3iErCaCptSiP amkz0hVxo3mASL+uqWilsVgS9mQ8N9Id+2Zf7jYJqsKjIcONRtizW2S8t6tF1ZtN+IAb +H3JwFLNWtHWGgSGd41ySJ8PPEGw/R63417ugvdXgWYkJTAFORZUxWlVATtVkGHh2hs3 TiPhn9TuTiJ1lEqxZOx+kyCtb7QITs0c7T3M3IrQFbEB2zBf5SaoSlOC/sjklK4C4elk Q0x4hUK/Fxw5y18MzsC+J8z5FVlObAIgIPhCp7crWJBLzHIodbvXHfeDfOGErjc1wztT nRKQ==

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.

**Follow-Ups**:**Re: [eigen] Forcing a conversion to ColMajor***From:*Gael Guennebaud

**References**:**[eigen] Forcing a conversion to ColMajor***From:*Douglas Bates

**Re: [eigen] Forcing a conversion to ColMajor***From:*Gael Guennebaud

**Re: [eigen] Forcing a conversion to ColMajor***From:*Douglas Bates

**Re: [eigen] Forcing a conversion to ColMajor***From:*Douglas Bates

**Messages sorted by:**[ date | thread ]- Prev by Date:
**[eigen] List of files, licensed under MPL, BSD and LGPL** - Next by Date:
**Re: [eigen] List of files, licensed under MPL, BSD and LGPL** - Previous by thread:
**Re: [eigen] Forcing a conversion to ColMajor** - Next by thread:
**Re: [eigen] Forcing a conversion to ColMajor**

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