[eigen] SparseQR compilation error

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


Hi, 

I am testing solvers for sparse systems.
Intel C++ compiler chokes on this code:

typedef Eigen::SparseMatrix< double > SparseDoubleMatrix;

SparseQR< SparseDoubleMatrix, COLAMDOrdering<int> > solver;

SparseDoubleMatrix A(10,10);
solver.compute(A);

Compiler points to solver.compute(A) with error message:
class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" has no member "operator="

Error persist for any OrderingType.

Interestingly, error only shows for SparseQR. If I use SparseLU - everything compiles fine.

Full template instantiation chain lead to error is in attachment.

Would appreciate any help & pointers how to solve the problem. 

Thank you,
Pavel.


U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/Block.h(110): error : class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" has no member "operator="
        EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
        ^
            detected during:
              instantiation of class "Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel> [with XprType=const Eigen::SparseMatrix<double, 0, int>, BlockRows=-1, BlockCols=1, InnerPanel=1]" at line 260 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseBlock.h"
              instantiation of "const Eigen::SparseMatrixBase<Derived>::ConstInnerVectorReturnType Eigen::SparseMatrixBase<Derived>::innerVector(Eigen::SparseMatrixBase<Derived>::Index) const [with Derived=Eigen::SparseMatrix<double, 0, int>]" at line 64 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparsePermutation.h"
              instantiation of "void Eigen::internal::permut_sparsematrix_product_retval<PermutationType, MatrixType, Side, Transposed>::evalTo(Dest &) const [with PermutationType=Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, MatrixType=Eigen::SparseMatrix<double, 0, int>, Side=2, Transposed=0, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 61 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/ReturnByValue.h"
              instantiation of "void Eigen::ReturnByValue<Derived>::evalTo(Dest &) const [with Derived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 180 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrixBase.h"
              instantiation of "Derived &Eigen::SparseMatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with Derived=Eigen::SparseMatrix<double, 0, int>, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 734 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrix.h"
              instantiation of "Eigen::SparseMatrix<_Scalar, _Options, _Index> &Eigen::SparseMatrix<_Scalar, _Options, _Index>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with _Scalar=double, _Options=0, _Index=int, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 508 of
                        "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
              instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::factorize(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 87 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
              instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::compute(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 731 of "ArithmeticOperators.cpp"


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