diff options
Diffstat (limited to 'tensorflow/core/kernels/cwise_ops.h')
-rw-r--r-- | tensorflow/core/kernels/cwise_ops.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tensorflow/core/kernels/cwise_ops.h b/tensorflow/core/kernels/cwise_ops.h index c11d6cfabb..e198fda473 100644 --- a/tensorflow/core/kernels/cwise_ops.h +++ b/tensorflow/core/kernels/cwise_ops.h @@ -43,6 +43,39 @@ struct functor_traits<scalar_fmod2_op<T>> { }; }; +template<typename T> struct scalar_asinh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_asinh_op) + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& a) const { + return std::asinh(a); + } +}; +template<typename T> +struct functor_traits<scalar_asinh_op<T>> { + enum { Cost = 5 * NumTraits<T>::MulCost, PacketAccess = false }; +}; + +template<typename T> struct scalar_acosh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_acosh_op) + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& a) const { + return std::acosh(a); + } +}; +template<typename T> +struct functor_traits<scalar_acosh_op<T>> { + enum { Cost = 5 * NumTraits<T>::MulCost, PacketAccess = false }; +}; + +template<typename T> struct scalar_atanh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_atanh_op) + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T operator()(const T& a) const { + return std::atanh(a); + } +}; +template<typename T> +struct functor_traits<scalar_atanh_op<T>> { + enum { Cost = 5 * NumTraits<T>::MulCost, PacketAccess = false }; +}; + // TODO(rmlarsen): This is a workaround for upstream change // https://bitbucket.org/eigen/eigen/commits/f339468d04d0f87caeb6cab9aef568627e9f6ea9 // that renamed scalar_binary_pow_op to scalar_pow_op and deleted the unary @@ -493,6 +526,15 @@ template <typename T> struct tanh : base<T, Eigen::internal::scalar_tanh_op<T> > {}; template <typename T> +struct asinh : base<T, Eigen::internal::scalar_asinh_op<T> > {}; + +template <typename T> +struct acosh : base<T, Eigen::internal::scalar_acosh_op<T> > {}; + +template <typename T> +struct atanh : base<T, Eigen::internal::scalar_atanh_op<T> > {}; + +template <typename T> struct lgamma : base<T, Eigen::internal::scalar_lgamma_op<T> > {}; template <typename T> |