aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/kernels/cwise_ops.h
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/core/kernels/cwise_ops.h')
-rw-r--r--tensorflow/core/kernels/cwise_ops.h42
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>