diff options
author | Deanna Hood <deanna.m.hood@gmail.com> | 2015-03-11 13:13:30 +1000 |
---|---|---|
committer | Deanna Hood <deanna.m.hood@gmail.com> | 2015-03-11 13:13:30 +1000 |
commit | f89fcefa79382f5a93c38927b79f40973b2e71f2 (patch) | |
tree | cce6240c97665b979ee80b772e1b6b5fe05fab22 /Eigen/src/Core/functors | |
parent | a5e49976f5534aa1acd84eb6a375a1fbb0eac87c (diff) |
Add hyperbolic trigonometric functions from std array support
Diffstat (limited to 'Eigen/src/Core/functors')
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h index c3901029d..bf1bc47a8 100644 --- a/Eigen/src/Core/functors/UnaryFunctors.h +++ b/Eigen/src/Core/functors/UnaryFunctors.h @@ -384,7 +384,6 @@ struct functor_traits<scalar_asin_op<Scalar> > }; }; - /** \internal * \brief Template functor to compute the atan of a scalar * \sa class CwiseUnaryOp, ArrayBase::atan() @@ -405,6 +404,63 @@ struct functor_traits<scalar_atan_op<Scalar> > }; /** \internal + * \brief Template functor to compute the tanh of a scalar + * \sa class CwiseUnaryOp, ArrayBase::tanh() + */ +template<typename Scalar> struct scalar_tanh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_tanh_op) + inline const Scalar operator() (const Scalar& a) const { using std::tanh; return tanh(a); } + typedef typename packet_traits<Scalar>::type Packet; + inline Packet packetOp(const Packet& a) const { return internal::ptanh(a); } +}; +template<typename Scalar> +struct functor_traits<scalar_tanh_op<Scalar> > +{ + enum { + Cost = 5 * NumTraits<Scalar>::MulCost, + PacketAccess = packet_traits<Scalar>::HasTanh + }; +}; + +/** \internal + * \brief Template functor to compute the sinh of a scalar + * \sa class CwiseUnaryOp, ArrayBase::sinh() + */ +template<typename Scalar> struct scalar_sinh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_sinh_op) + inline const Scalar operator() (const Scalar& a) const { using std::sinh; return sinh(a); } + typedef typename packet_traits<Scalar>::type Packet; + inline Packet packetOp(const Packet& a) const { return internal::psinh(a); } +}; +template<typename Scalar> +struct functor_traits<scalar_sinh_op<Scalar> > +{ + enum { + Cost = 5 * NumTraits<Scalar>::MulCost, + PacketAccess = packet_traits<Scalar>::HasSinh + }; +}; + +/** \internal + * \brief Template functor to compute the cosh of a scalar + * \sa class CwiseUnaryOp, ArrayBase::cosh() + */ +template<typename Scalar> struct scalar_cosh_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_cosh_op) + inline const Scalar operator() (const Scalar& a) const { using std::cosh; return cosh(a); } + typedef typename packet_traits<Scalar>::type Packet; + inline Packet packetOp(const Packet& a) const { return internal::pcosh(a); } +}; +template<typename Scalar> +struct functor_traits<scalar_cosh_op<Scalar> > +{ + enum { + Cost = 5 * NumTraits<Scalar>::MulCost, + PacketAccess = packet_traits<Scalar>::HasCosh + }; +}; + +/** \internal * \brief Template functor to compute the inverse of a scalar * \sa class CwiseUnaryOp, Cwise::inverse() */ |