diff options
author | 2015-12-21 15:20:06 -0800 | |
---|---|---|
committer | 2015-12-21 15:20:06 -0800 | |
commit | 3504ae47ca7a2a712155c48e13bb4168cdebd5a6 (patch) | |
tree | 41cbc7cbe6a466e82195db957b39c16ebbe639a5 /Eigen | |
parent | 1c3e78319d9de0b1480a05f75a0d9dde339b57de (diff) |
Made it possible to run the lgamma, erf, and erfc functors on a CUDA gpu.
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h index 6891cfdda..01727f250 100644 --- a/Eigen/src/Core/functors/UnaryFunctors.h +++ b/Eigen/src/Core/functors/UnaryFunctors.h @@ -415,7 +415,7 @@ template<typename Scalar> struct scalar_lgamma_op { using numext::lgamma; return lgamma(a); } typedef typename packet_traits<Scalar>::type Packet; - inline Packet packetOp(const Packet& a) const { return internal::plgamma(a); } + EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::plgamma(a); } }; template<typename Scalar> struct functor_traits<scalar_lgamma_op<Scalar> > @@ -438,7 +438,7 @@ template<typename Scalar> struct scalar_erf_op { using numext::erf; return erf(a); } typedef typename packet_traits<Scalar>::type Packet; - inline Packet packetOp(const Packet& a) const { return internal::perf(a); } + EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::perf(a); } }; template<typename Scalar> struct functor_traits<scalar_erf_op<Scalar> > @@ -461,7 +461,7 @@ template<typename Scalar> struct scalar_erfc_op { using numext::erfc; return erfc(a); } typedef typename packet_traits<Scalar>::type Packet; - inline Packet packetOp(const Packet& a) const { return internal::perfc(a); } + EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::perfc(a); } }; template<typename Scalar> struct functor_traits<scalar_erfc_op<Scalar> > @@ -732,10 +732,10 @@ struct functor_traits<scalar_boolean_not_op<Scalar> > { * \sa class CwiseUnaryOp, Cwise::sign() */ template<typename Scalar,bool iscpx=(NumTraits<Scalar>::IsComplex!=0) > struct scalar_sign_op; -template<typename Scalar> +template<typename Scalar> struct scalar_sign_op<Scalar,false> { EIGEN_EMPTY_STRUCT_CTOR(scalar_sign_op) - EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const + EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { return Scalar( (a>Scalar(0)) - (a<Scalar(0)) ); } @@ -743,17 +743,17 @@ struct scalar_sign_op<Scalar,false> { //template <typename Packet> //EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::psign(a); } }; -template<typename Scalar> +template<typename Scalar> struct scalar_sign_op<Scalar,true> { EIGEN_EMPTY_STRUCT_CTOR(scalar_sign_op) - EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const + EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { using std::abs; typedef typename NumTraits<Scalar>::Real real_type; real_type aa = abs(a); if (aa==0) - return Scalar(0); - aa = 1./aa; + return Scalar(0); + aa = 1./aa; return Scalar(real(a)*aa, imag(a)*aa ); } //TODO |