Re: [eigen] problem with selfadjointView |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] problem with selfadjointView
- From: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
- Date: Tue, 31 Aug 2010 10:33:48 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=h7n1+6P9ljTrepNivt0kx5x7TeaglO57H9pVA1GLBig=; b=DSfL3AyhI2GnxaXDVEK5Zz2IEDUX4r5Acm3TOC7RaEafeO+Ulr1pltl3lvJ/bkknv8 ISyXllLsNmH+K3DHAa/P3gIZoMqcg10M7pYn8GYjaeVAEgKRL6RSHhvypisl8RUM9UNP KDEMbOm/JmX//B7Cq8nZWAImQuUhfUGdqCJO8=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=fU52xX3+e+HQYoQU9eSIzE4H2sOp1KKa0xswMG+0vNB6kdrO0upI4whhJIXe4mNx6G q7YYGX/rjvQ3G8YLy73ml+8F39vwd0udc/zNc5grvG3KWOtMssAU0drUMos+6LgaGECB rdMFTNubku90qzHCsmTQSZ4N7SgSrsqnCDBD4=
indeed, this is not implemented yet because use cases are pretty
uncommon. I think that supporting a new kind of product requires about
one full day of work (to cover all possibilities, to add unit tests,
etc.) but Eigen is developed on our free time....
gael
On Tue, Aug 31, 2010 at 5:44 AM, Ben Goodrich <bgokgm@xxxxxxxxxxxxxx> wrote:
> Hi,
>
> As far as I can tell, multiplying a selfadjointView by another
> selfadjointView is not implemented (and similarly for triangularView
> by triangularView, triangularView by selfadjointView, etc.) Is this by
> design?
>
> Thanks,
> Ben
>
> goodrich@X41Laptop:/tmp$ cat test.cc
> #include "/tmp/eigen/Eigen/Eigen"
> #include <iostream>
> using namespace Eigen;
>
> int main() {
> MatrixXd A(5,5);
> A.setRandom();
> A = A * A.transpose();
> A = A.selfadjointView<Lower>() * A.transpose().selfadjointView<Upper>();
> std::cout << A << std::endl;
> return 0;
> }
>
> goodrich@X41Laptop:/tmp$ g++-4.5 -O2 -msse2 -DDEBUG -Wall test.cc -o test..o
> test.cc: In function ‘int main()’:
> test.cc:9:72: error: no match for ‘operator*’ in
> ‘((Eigen::MatrixBase<Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001> >*)(&
> A))->Eigen::MatrixBase<Derived>::selfadjointView [with unsigned int
> UpLo = 1u, Derived = Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001>]() *
> ((Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> >
>>*)(&((Eigen::DenseBase<Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001> >*)(& A))->Eigen::DenseBase<Derived>::transpose
> [with Derived = Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001>]()))->Eigen::MatrixBase<Derived>::selfadjointView
> [with unsigned int UpLo = 2u, Derived =
> Eigen::Transpose<Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001> >]()’
> /tmp/eigen/Eigen/src/Core/../plugins/CommonCwiseUnaryOps.h:95:1: note:
> candidates are: const
> Eigen::CwiseUnaryOp<Eigen::ei_scalar_multiple2_op<double,
> std::complex<double> >, Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001> > Eigen::operator*(const std::complex<double>&,
> const Eigen::MatrixBase<Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001> >::StorageBaseType&)
> /tmp/eigen/Eigen/src/Core/../plugins/CommonCwiseUnaryOps.h:91:1: note:
> const Eigen::MatrixBase<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001>
>>::ScalarMultipleReturnType Eigen::operator*(const
> Eigen::MatrixBase<Eigen::Matrix<double, -0x00000000000000001,
> -0x00000000000000001, 0, -0x00000000000000001, -0x00000000000000001>
>>::Scalar&, const Eigen::MatrixBase<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> >::StorageBaseType&)
> /tmp/eigen/Eigen/src/Core/../plugins/CommonCwiseUnaryOps.h:95:1: note:
> const
> Eigen::CwiseUnaryOp<Eigen::ei_scalar_multiple2_op<double,
> std::complex<double> >, Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> > > Eigen::operator*(const
> std::complex<double>&, const
> Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> > >::StorageBaseType&)
> /tmp/eigen/Eigen/src/Core/../plugins/CommonCwiseUnaryOps.h:91:1: note:
> const
> Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> >
>>::ScalarMultipleReturnType Eigen::operator*(const
> Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001, 0, -0x00000000000000001,
> -0x00000000000000001> > >::Scalar&, const
> Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<double,
> -0x00000000000000001, -0x00000000000000001> > >::StorageBaseType&)
>
>
>