Workaround "error: floating-point literal cannot appear in a constant-expression" in mpreal.h when compiling with predantic.

(I really don't know how to properly fix this))
This commit is contained in:
Gael Guennebaud 2013-01-23 20:51:38 +01:00
parent 73026eab4d
commit c22f7cef83
2 changed files with 8 additions and 2 deletions

View File

@ -145,6 +145,12 @@
#define EIGEN_DONT_INLINE
#endif
#if (defined __GNUC__)
#define EIGEN_PERMISSIVE_EXPR __extension__
#else
#define EIGEN_PERMISSIVE_EXPR
#endif
// this macro allows to get rid of linking errors about multiply defined functions.
// - static is not very good because it prevents definitions from different object files to be merged.
// So static causes the resulting linked executable to be bloated with multiple copies of the same function.

View File

@ -3233,8 +3233,8 @@ namespace std
// Please note, exponent range is not fixed in MPFR
static const int min_exponent = MPFR_EMIN_DEFAULT;
static const int max_exponent = MPFR_EMAX_DEFAULT;
static const int min_exponent10 = (int) (MPFR_EMIN_DEFAULT * 0.3010299956639811);
static const int max_exponent10 = (int) (MPFR_EMAX_DEFAULT * 0.3010299956639811);
EIGEN_PERMISSIVE_EXPR static const int min_exponent10 = (int) (MPFR_EMIN_DEFAULT * 0.3010299956639811);
EIGEN_PERMISSIVE_EXPR static const int max_exponent10 = (int) (MPFR_EMAX_DEFAULT * 0.3010299956639811);
// Should be constant according to standard, but 'digits' depends on precision in MPFR