mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 03:39:01 +08:00
merge
This commit is contained in:
commit
703251f10f
@ -281,20 +281,18 @@ struct digamma_impl {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Scalar p, q, nz, s, w, y;
|
Scalar p, q, nz, s, w, y;
|
||||||
bool negative;
|
bool negative = false;
|
||||||
|
|
||||||
const Scalar maxnum = NumTraits<Scalar>::infinity();
|
const Scalar maxnum = NumTraits<Scalar>::infinity();
|
||||||
const Scalar m_pi = EIGEN_PI;
|
const Scalar m_pi(EIGEN_PI);
|
||||||
|
|
||||||
negative = 0;
|
const Scalar zero = Scalar(0);
|
||||||
nz = 0.0;
|
const Scalar one = Scalar(1);
|
||||||
|
const Scalar half = Scalar(0.5);
|
||||||
const Scalar zero = 0.0;
|
nz = zero;
|
||||||
const Scalar one = 1.0;
|
|
||||||
const Scalar half = 0.5;
|
|
||||||
|
|
||||||
if (x <= zero) {
|
if (x <= zero) {
|
||||||
negative = one;
|
negative = true;
|
||||||
q = x;
|
q = x;
|
||||||
p = numext::floor(q);
|
p = numext::floor(q);
|
||||||
if (p == q) {
|
if (p == q) {
|
||||||
@ -463,7 +461,7 @@ template <typename Scalar>
|
|||||||
struct igammac_impl {
|
struct igammac_impl {
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
static Scalar run(Scalar a, Scalar x) {
|
static Scalar run(Scalar a, Scalar x) {
|
||||||
/* igamc()
|
/* igamc()
|
||||||
*
|
*
|
||||||
* Incomplete gamma integral (modified for Eigen)
|
* Incomplete gamma integral (modified for Eigen)
|
||||||
*
|
*
|
||||||
@ -618,7 +616,7 @@ template <typename Scalar>
|
|||||||
struct igamma_impl {
|
struct igamma_impl {
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
static Scalar run(Scalar a, Scalar x) {
|
static Scalar run(Scalar a, Scalar x) {
|
||||||
/* igam()
|
/* igam()
|
||||||
* Incomplete gamma integral
|
* Incomplete gamma integral
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -424,13 +424,30 @@ template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half sqrt(const Eigen::h
|
|||||||
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half pow(const Eigen::half& a, const Eigen::half& b) {
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half pow(const Eigen::half& a, const Eigen::half& b) {
|
||||||
return Eigen::half(::powf(float(a), float(b)));
|
return Eigen::half(::powf(float(a), float(b)));
|
||||||
}
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half sin(const Eigen::half& a) {
|
||||||
|
return Eigen::half(::sinf(float(a)));
|
||||||
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half cos(const Eigen::half& a) {
|
||||||
|
return Eigen::half(::cosf(float(a)));
|
||||||
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half tan(const Eigen::half& a) {
|
||||||
|
return Eigen::half(::tanf(float(a)));
|
||||||
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half tanh(const Eigen::half& a) {
|
||||||
|
return Eigen::half(::tanhf(float(a)));
|
||||||
|
}
|
||||||
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half floor(const Eigen::half& a) {
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half floor(const Eigen::half& a) {
|
||||||
return Eigen::half(::floorf(float(a)));
|
return Eigen::half(::floorf(float(a)));
|
||||||
}
|
}
|
||||||
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half ceil(const Eigen::half& a) {
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half ceil(const Eigen::half& a) {
|
||||||
return Eigen::half(::ceilf(float(a)));
|
return Eigen::half(::ceilf(float(a)));
|
||||||
}
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erf(const Eigen::half& a) {
|
||||||
|
return Eigen::half(erff(float(a)));
|
||||||
|
}
|
||||||
|
template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erfc(const Eigen::half& a) {
|
||||||
|
return Eigen::half(erfcf(float(a)));
|
||||||
|
}
|
||||||
} // end namespace numext
|
} // end namespace numext
|
||||||
|
|
||||||
} // end namespace Eigen
|
} // end namespace Eigen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user