Support #1532
Using MatrixMath.h and Eigen3
Status: | Feedback | Start date: | 06/06/2013 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | - | % Done: | 0% | |
Category: | - | |||
Target version: | NemoMath 0.4 |
Description
Since the SVD.h
available in Eigen2 is now called JacobiSVD.h
and other changes (see http://eigen.tuxfamily.org/dox/classEigen_1_1JacobiSVD.html) in Eigen3 there are some problems if you want to use MatrixMath.h.
Even after changing the initialization Eigen::SVD(...)
to Eigen::JacobiSVD(...)
in MatrixMath.h
my code using the pseudoInverse
function of nemo crashes at run-time, obviously because of some other changes in eigen3. Compilation without this change fails.
After going back to Eigen2 everything works fine.
eigen3 version used: libeigen3-dev 3.1.2-1
os: Ubuntu 13.04 64bit
History
#1 Updated by C. Emmerich over 10 years ago
- Assignee set to M. Rolf
I am having the same issue with MatrixMath.h and Eigen3 and therefore push this issue a little bit :)
I have installed both libeigen2-dev and libeigen3-dev on my system.
- Using NemoMath-trunk (todays' deb package for nemomath0.5, 0.5.0-b78~precise), this issue seems to be fixed somehow, everything works fine.
- Using nemomath0.4 results in
In file included from /usr/share/NemoMath0.4/../../include/NemoMath0.4/nemo/MatrixMath.h:8:0: /usr/include/eigen3/Eigen/Array:8:4: Fehler: #error The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core.
- Interestingly, also using nemomath0.3 results in the same error, although nemomath0.3 depends on libeigen2-dev...
#2 Updated by Anonymous over 10 years ago
- Status changed from New to Feedback
- Assignee changed from M. Rolf to Anonymous
- Target version set to NemoMath 0.4
It might be, that you don't include the nemomath definitions properly in your project. Please check, you should have a line like
add_definitions(${NEMOMATH_DEFINITIONS})
somewehere in your project's cmake files. This variable is case-sensitive and upper-/lower-case might have changed between nemomath 0.3 to nemomath 0.5 (which might explain, why it is working with nemomath0.5). So please check if the variable is not empty (also try ${NemoMath_DEFINITIONS}
). It should contain the eigen2 support flags.
If you don't use these definitions, eigen3 doesn't know to be in eigen2 compatibility mode, which is currently still required by nemomath.