Support #1532

Using MatrixMath.h and Eigen3

Added by P. Lücking almost 11 years ago. Updated over 10 years ago.

Status:FeedbackStart date:06/06/2013
Priority:NormalDue 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.

Also available in: Atom PDF