Disabled erf also for Cygwin where it is not supported and causes errors.
diff --git a/Eigen/src/Core/MathFunctions.h b/Eigen/src/Core/MathFunctions.h
index 6b65500..6d4fc41 100644
--- a/Eigen/src/Core/MathFunctions.h
+++ b/Eigen/src/Core/MathFunctions.h
@@ -129,7 +129,7 @@
 inline float ei_sqrt(float x)  { return std::sqrt(x); }
 inline float ei_exp(float x)   { return std::exp(x); }
 inline float ei_log(float x)   { return std::log(x); }
-#ifndef _MSC_VER
+#if (!defined(_MSC_VER) && !defined(__CYGWIN__))
 inline float ei_erf(float x)   { return erff(x); }
 #endif
 inline float ei_sin(float x)   { return std::sin(x); }
@@ -179,7 +179,7 @@
 inline double ei_sqrt(double x)  { return std::sqrt(x); }
 inline double ei_exp(double x)   { return std::exp(x); }
 inline double ei_log(double x)   { return std::log(x); }
-#ifndef _MSC_VER
+#if (!defined(_MSC_VER) && !defined(__CYGWIN__))
 inline double ei_erf(double x)   { return erf(x); }
 #endif
 inline double ei_sin(double x)   { return std::sin(x); }
@@ -303,7 +303,7 @@
 inline long double ei_sqrt(long double x)  { return std::sqrt(x); }
 inline long double ei_exp(long double x)   { return std::exp(x); }
 inline long double ei_log(long double x)   { return std::log(x); }
-#ifndef _MSC_VER
+#if (!defined(_MSC_VER) && !defined(__CYGWIN__))
 inline long double ei_erf(long double x)   { return erfl(x); }
 #endif
 inline long double ei_sin(long double x)   { return std::sin(x); }