diff --git a/Eigen/src/Core/MathFunctions.h b/Eigen/src/Core/MathFunctions.h index e0f7f4e61..dfc651908 100644 --- a/Eigen/src/Core/MathFunctions.h +++ b/Eigen/src/Core/MathFunctions.h @@ -367,7 +367,7 @@ inline NewType cast(const OldType& x) * Implementation of round * ****************************************************************************/ -#if EIGEN_HAS_C99_MATH +#if EIGEN_HAS_CXX11_MATH template struct round_impl { static inline Scalar run(const Scalar& x) @@ -401,7 +401,7 @@ struct round_retval * Implementation of arg * ****************************************************************************/ -#if EIGEN_HAS_C99_MATH +#if EIGEN_HAS_CXX11_MATH template struct arg_impl { static inline Scalar run(const Scalar& x) @@ -458,7 +458,7 @@ struct log1p_impl } }; -#ifdef EIGEN_HAS_C99_MATH +#if EIGEN_HAS_CXX11_MATH template struct log1p_impl { static inline Scalar run(const Scalar& x) @@ -784,7 +784,7 @@ template EIGEN_DEVICE_FUNC bool (isfinite)(const T& x) { - #ifdef EIGEN_HAS_C99_MATH + #if EIGEN_HAS_CXX11_MATH using std::isfinite; return isfinite(x); #else @@ -803,7 +803,7 @@ template EIGEN_DEVICE_FUNC bool (isnan)(const T& x) { - #ifdef EIGEN_HAS_C99_MATH + #if EIGEN_HAS_CXX11_MATH using std::isnan; return isnan(x); #else @@ -822,7 +822,7 @@ template EIGEN_DEVICE_FUNC bool (isinf)(const T& x) { - #ifdef EIGEN_HAS_C99_MATH + #if EIGEN_HAS_CXX11_MATH using std::isinf; return isinf(x); #else diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h index 76a14b472..583a0cbd2 100644 --- a/Eigen/src/Core/util/Macros.h +++ b/Eigen/src/Core/util/Macros.h @@ -415,12 +415,15 @@ #define EIGEN_HAS_CONSTEXPR 1 #endif -// Does the compiler support C99 math? +// Does the compiler support C++11 math? // Let's be conservative and enable the default C++11 implementation only if we are sure it exists -#if (__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC) \ - && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC) || \ - (EIGEN_COMP_GNUC_STRICT || (EIGEN_COMP_ICC && EIGEN_COMP_GNUC) || (EIGEN_COMP_CLANG) || (EIGEN_COMP_MSVC >= 1800)) -#define EIGEN_HAS_C99_MATH 1 +#ifndef EIGEN_HAS_CXX11_MATH + #if (__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC) \ + && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC) + #define EIGEN_HAS_CXX11_MATH 1 + #else + #define EIGEN_HAS_CXX11_MATH 0 + #endif #endif /** Allows to disable some optimizations which might affect the accuracy of the result.