43

I added several different versions of Eigen to default including directory of Visual C++. But I got collapse problem when using LDLT (Cholesky decomposition) for some of the testing numerical examples.

So I want to determine which version is actually active when debugging the code.

Is there any function which can indicate the current active Eigen version number?

4
  • 7
    At compile-time you have EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION and EIGEN_MINOR_VERSION, you can easily embed this information in your application. Commented Feb 1, 2014 at 12:21
  • Thank you very much. One more question, if they are 3, 1 and 91 respectively, does this mean the most latest 3.20 since there is no 3.191 release? Commented Feb 1, 2014 at 13:06
  • 1
    3.1.91 sounds like a beta version of 3.2 to me, but I don't know for sure. Commented Feb 1, 2014 at 13:25
  • 3
    It is not the desired 3.2.0 release. The version number macros are defined in Macros.h located at \Eigen\src\Core\util\. thank you. Commented Feb 1, 2014 at 14:14

4 Answers 4

51

This answer is only a summary from the comments above:

  • At compile-time you have EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION and EIGEN_MINOR_VERSION, you can easily embed this information in your application.

  • 3.1.91 sounds like a beta version of 3.2.

  • The version number macros are defined in Macros.h located at \Eigen\src\Core\util\.

Sign up to request clarification or add additional context in comments.

1 Comment

On Debian or similar: cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION will show you the version.
22

In order to check the version number of Eigen C++ template library, just type

dpkg -p libeigen3-dev 

in the terminal. Or just type

pkg-config --modversion eigen3 

you will get the Eigen version.

1 Comment

Kinda funny, first command gives "3.2.0-8" and second one "3.2.92".
5

Although it is not the goal of the OP, people finding this question may be interested in checking if the version is equal to are newer than a specific release for compatibility reasons with different versions of Eigen. This can be done more easily using the EIGEN_VERSION_AT_LEAST(x, y, z) macro as follows:

#if EIGEN_VERSION_AT_LEAST(3,3,0) // Implementation for Eigen 3.3.0 and newer #else // Implementation for older Eigen versions #endif 

This macro is also defined in Eigen/src/Core/util/Macros.h and uses EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION and EIGEN_MINOR_VERSION internally.

Comments

5

On Linux:

grep "#define EIGEN_[^_]*_VERSION" /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h 

You'll get something like:

#define EIGEN_WORLD_VERSION 3 #define EIGEN_MAJOR_VERSION 3 #define EIGEN_MINOR_VERSION 7 

It means version 3.3.7

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.