¿Cómo comprobar el número de versión de la biblioteca de plantillas Eigen C++?

2 minutos de lectura

Agregué varias versiones diferentes de Eigen por defecto, incluido el directorio de Visual C++. Pero tengo un problema de colapso al usar LDLT (descomposición de Cholesky) para algunos de los ejemplos numéricos de prueba.

Entonces, quiero determinar qué versión está realmente activa al depurar el código.

¿Hay alguna función que pueda indicar el número de versión de Eigen activo actual?

  • En tiempo de compilación tienes EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION y EIGEN_MINOR_VERSIONpuede incorporar fácilmente esta información en su aplicación.

    – Marc Glisse

    1 de febrero de 2014 a las 12:21

  • Muchísimas gracias. Una pregunta más, si son 3, 1 y 91 respectivamente, ¿significa esto el más reciente 3.20 ya que no hay 3.191 ¿liberar?

    – LCFactorización

    1 de febrero de 2014 a las 13:06

  • 3.1.91 me parece una versión beta de 3.2, pero no estoy seguro.

    – Marc Glisse

    1 de febrero de 2014 a las 13:25

  • No es la versión 3.2.0 deseada. Las macros de número de versión se definen en Macros.h situado en \Eigen\src\Core\util\. gracias.

    – LCFactorización

    1 de febrero de 2014 a las 14:14


Esta respuesta es solo un resumen de los comentarios anteriores:

  • En tiempo de compilación tienes EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION
    y EIGEN_MINOR_VERSIONpuede incorporar fácilmente esta información en su aplicación.

  • 3.1.91 suena como un beta version de 3.2.

  • Las macros de número de versión se definen en Macros.h situado en
    \Eigen\src\Core\util\.

  • En Debian o similar: cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION le mostrará la versión.

    – brochetas

    31 de enero de 2017 a las 8:57

Avatar de usuario de NAK
NAK

Para comprobar el número de versión de la biblioteca de plantillas de Eigen C++, simplemente escriba

dpkg -p libeigen3-dev

en la terminal O simplemente escriba

pkg-config --modversion eigen3

obtendrá la versión Eigen.

  • Un poco divertido, el primer comando da “3.2.0-8” y el segundo “3.2.92”.

    – brochetas

    15/03/2019 a las 10:00

Aunque no es el objetivo del OP, las personas que encuentren esta pregunta pueden estar interesadas en verificar si la versión es igual a una versión más nueva que una versión específica por razones de compatibilidad con diferentes versiones de Eigen. Esto se puede hacer más fácilmente usando el EIGEN_VERSION_AT_LEAST(x, y, z) macro de la siguiente manera:

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

Esta macro también se define en Eigen/src/Core/util/Macros.h y usos EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION y EIGEN_MINOR_VERSION internamente.

En Linux:

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

Obtendrás algo como:

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

Significa versión 3.3.7

¿Ha sido útil esta solución?