Re: [eigen] problem with selfadjointView

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


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&)



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