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:11:44 -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=7+fmrhQT9Ch+udKDgWEYIF2Do0HAwej6rpOPUJTra0s=; b=A1600ObRAsIbGyEzVonu2k9dpQ8SvKc5yXpsPaWoLld31GraWO/KlGTGYNrz/S4z/X Q7oHZYojs3v3v7GC/r9M4obTYNJboiq9rnCeAg5ZvMVbzFE23gAWe7yeekh5U5/sKE5j //1AemXoHnykhvumDNhgcLv3s7yjStSoLr60iSe6RquFOplFsLrsFQLKPgQ6zENwJC15 m2V5QJCYSay4FMZf89bjdwzX7qqyfBymUokllQiqzFCTglUFiUfjxIZsYWrAUemczkEq MUxvLuOQlRG2t7q2BzXpX3hc/XA6T/OpfA1dn8uiGJahKWzIfKCxw6TWEeAuC7vqWh+j P6JQ==
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)