This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Eigen 3.3rc2 and MPRealSupport

Tags: None
(comma "," separated)
DUHadler
Registered Member
Posts
2
Karma
0

Eigen 3.3rc2 and MPRealSupport

Sat Nov 05, 2016 9:08 am
Dear Eigen-Team,

I would like to report my experience with Eigen 3.3rc2, together with the unsupported module MPRealSupport and mpfr.h:
For dense matrices, EVERYTHING compiles and is working as expected with real matrices. Amazing.
For dense complex matrices, everything compiles and is working as expected except the following two: llt and GeneralizedSelfAdjointEigenSolver. Since the compilation failure in GeneralizedSelfAdjointEigenSolver is caused by llt, it is enough to focus on llt.

The compilation failure occurs in line 354 of LLT.h:
Code: Select all
line 354:      if(rs>0) A22.template selfadjointView<Lower>().rankUpdate(A21,-1); // bottleneck


The reported error indicates that a template argument/substitution failed:
Code: Select all
cannot convert '-1' (type 'int') to type 'const Scalar& {aka const std::complex<mpfr::mpreal>&}'.


The full error report is copied in below.

Any help would be much appreciated!

Best regards,

Dietrich Hadler

Code: Select all
||=== Build: LibWin32_Mpfr in Make_EigenMath (compiler: GNU GCC 4.9.2 Compiler TDM) ===|
..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h||In instantiation of 'static Eigen::Index Eigen::internal::llt_inplace<Scalar, 1>::blocked(MatrixType&) [with MatrixType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; Scalar = std::complex<mpfr::mpreal>; Eigen::Index = int]':|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|397|required from 'static bool Eigen::internal::LLT_Traits<MatrixType, 1>::inplace_decomposition(MatrixType&) [with MatrixType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>]'|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|444|required from 'Eigen::LLT<MatrixType, _UpLo>& Eigen::LLT<MatrixType, UpLo>::compute(const Eigen::EigenBase<OtherDerived>&) [with InputType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; _MatrixType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; int _UpLo = 1]'|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|96|required from 'Eigen::LLT<MatrixType, UpLo>::LLT(const Eigen::EigenBase<OtherDerived>&) [with InputType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; _MatrixType = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; int _UpLo = 1]'|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|518|required from 'const Eigen::LLT<typename Eigen::DenseBase<Derived>::PlainObject> Eigen::MatrixBase<Derived>::llt() const [with Derived = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>; typename Eigen::DenseBase<Derived>::PlainObject = Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>]'|

C:\Extra\mpFormulaTDM\mpFormula.C\Source\NativeCode\MatrixCplx_LinAlg.cpp|50|required from here|
..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|354|error: no matching function for call to 'Eigen::SelfAdjointView<Eigen::Block<Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>, -1, -1, false>, 1u>::rankUpdate(Eigen::Block<Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>, -1, -1, false>&, int)'|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|354|note: candidates are:|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Core\SelfAdjointView.h|150|note: template<class DerivedU, class DerivedV> Eigen::SelfAdjointView<MatrixType, UpLo>& Eigen::SelfAdjointView<MatrixType, Mode>::rankUpdate(const Eigen::MatrixBase<OtherDerived>&, const Eigen::MatrixBase<OtherDerived>&, const Scalar&) [with DerivedU = DerivedU; DerivedV = DerivedV; _MatrixType = Eigen::Block<Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>, -1, -1, false>; unsigned int UpLo = 1u]|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Core\SelfAdjointView.h|150|note:   template argument deduction/substitution failed:|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|354|note:   mismatched types 'const Eigen::MatrixBase<U>' and 'int'|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Core\SelfAdjointView.h|164|note: template<class DerivedU> Eigen::SelfAdjointView<MatrixType, UpLo>& Eigen::SelfAdjointView<MatrixType, Mode>::rankUpdate(const Eigen::MatrixBase<OtherDerived>&, const Scalar&) [with DerivedU = DerivedU; _MatrixType = Eigen::Block<Eigen::Matrix<std::complex<mpfr::mpreal>, -1, -1>, -1, -1, false>; unsigned int UpLo = 1u]|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Core\SelfAdjointView.h|164|note:   template argument deduction/substitution failed:|

..\..\..\ExternalLibraries\Eigen\Eigen\src\Cholesky\LLT.h|354|note:   cannot convert '-1' (type 'int') to type 'const Scalar& {aka const std::complex<mpfr::mpreal>&}'|

||=== Build failed: 1 error(s), 6 warning(s) (0 minute(s), 11 second(s)) ===|
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
DUHadler
Registered Member
Posts
2
Karma
0

Re: Eigen 3.3rc2 and MPRealSupport

Sat Nov 05, 2016 12:14 pm
Fantastic, now everything compiles.

Thank you very much!


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Sogou [Bot]