Initial implementation of igamma and igammac.
diff --git a/Eigen/src/Core/arch/CUDA/MathFunctions.h b/Eigen/src/Core/arch/CUDA/MathFunctions.h
index a2c06a8..6e84d3a 100644
--- a/Eigen/src/Core/arch/CUDA/MathFunctions.h
+++ b/Eigen/src/Core/arch/CUDA/MathFunctions.h
@@ -116,6 +116,24 @@
return make_double2(erfc(a.x), erfc(a.y));
}
+template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+float4 pigamma<float4>(const float4& a, const float4& x)
+{
+ using numext::pigamma;
+ return make_float4(
+ pigamma(a.x, x.x),
+ pigamma(a.y, x.y),
+ pigamma(a.z, x.z),
+ pigamma(a.w, x.w));
+}
+
+template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+double2 pigammac<double2>(const double2& a, const double& x)
+{
+ using numext::pigammac;
+ return make_double2(pigammac(a.x, x.x), pigammac(a.y, x.y));
+}
+
#endif
diff --git a/Eigen/src/Core/arch/CUDA/PacketMath.h b/Eigen/src/Core/arch/CUDA/PacketMath.h
index d3d9f91..d256303 100644
--- a/Eigen/src/Core/arch/CUDA/PacketMath.h
+++ b/Eigen/src/Core/arch/CUDA/PacketMath.h
@@ -43,6 +43,8 @@
HasDiGamma = 1,
HasErf = 1,
HasErfc = 1,
+ HasIgamma = 1,
+ HasIGammac = 1,
HasBlend = 0,
};
@@ -67,6 +69,8 @@
HasDiGamma = 1,
HasErf = 1,
HasErfc = 1,
+ HasIGamma = 1,
+ HasIGammac = 1,
HasBlend = 0,
};