Blame SOURCES/eigen3_logp.patch

cb349f
diff -rupN --no-dereference eigen-3.3.9/Eigen/src/Core/MathFunctions.h eigen-3.3.9-new/Eigen/src/Core/MathFunctions.h
cb349f
--- eigen-3.3.9/Eigen/src/Core/MathFunctions.h	2020-12-04 22:53:41.000000000 +0100
cb349f
+++ eigen-3.3.9-new/Eigen/src/Core/MathFunctions.h	2021-01-19 12:32:05.328624222 +0100
cb349f
@@ -485,12 +485,22 @@ struct log1p_impl {
cb349f
     EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
cb349f
     #if EIGEN_HAS_CXX11_MATH
cb349f
     using std::log1p;
cb349f
-    #endif
cb349f
+    #else
cb349f
     using std_fallback::log1p;
cb349f
+    #endif
cb349f
     return log1p(x);
cb349f
   }
cb349f
 };
cb349f
 
cb349f
+// Specialization for complex types that are not supported by std::log1p.
cb349f
+template <typename RealScalar>
cb349f
+struct log1p_impl<std::complex<RealScalar> > {
cb349f
+  EIGEN_DEVICE_FUNC static inline std::complex<RealScalar> run(
cb349f
+      const std::complex<RealScalar>& x) {
cb349f
+    EIGEN_STATIC_ASSERT_NON_INTEGER(RealScalar)
cb349f
+    return std_fallback::log1p(x);
cb349f
+  }
cb349f
+};
cb349f
 
cb349f
 template<typename Scalar>
cb349f
 struct log1p_retval