Hi,

Compilation of Cwise_erf.cpp. Cwise_erfc.cpp and Cwise_lgamma.cpp examples
failed with VS 2017 compiler. It failed because macro EIGEN_HAS_C99_MATH in
Macros.h defined to 0. This macro is used only for cwise calculation of
special functions in unsupported module. It is defined to 0 because msvc
does not define __STDC_VERSION__ macro although vs 2017 implements C++11
standard and implements erf, erfc and lgamma functions which are only
necessary for Eigen special functions module. I suggest to modify macro
EIGEN_HAS_C99_MATH definition in Macros.h file.
Instead of

// Does the compiler support C99?
#ifndef EIGEN_HAS_C99_MATH
#if EIGEN_MAX_CPP_VER>=11 && \
    ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901))       \
  || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \
  || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)))

  #define EIGEN_HAS_C99_MATH 1
#else
  #define EIGEN_HAS_C99_MATH 0
#endif
#endif

define

// Does the compiler support C99?
#ifndef EIGEN_HAS_C99_MATH
#if EIGEN_MAX_CPP_VER>=11 && \
    ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901))       \
  || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \
  || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)) \
  || (defined(_MSC_VER) && _MSVC_LANG >= 201402))

  #define EIGEN_HAS_C99_MATH 1
#else
  #define EIGEN_HAS_C99_MATH 0
#endif
#endif

With this modification VS 2017 compiles examples and gives write results.

Best regards,

Oleg Shirokobrod.

Reply via email to