diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-05-19 18:34:16 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-05-19 18:34:16 +0200 |
commit | 6761c64d60f297d429a502dbf064b36b6dfb6c9b (patch) | |
tree | 1294f5cee78dc01270066ed2b958a4e5b44c56b0 /Eigen/src/Core/GlobalFunctions.h | |
parent | 7a5403240837360c4b7fb970e5fb9b0f7834ed6d (diff) |
zeta and polygamma are not unary functions, but binary ones.
Diffstat (limited to 'Eigen/src/Core/GlobalFunctions.h')
-rw-r--r-- | Eigen/src/Core/GlobalFunctions.h | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/Eigen/src/Core/GlobalFunctions.h b/Eigen/src/Core/GlobalFunctions.h index 05ba6ddb4..2173e026d 100644 --- a/Eigen/src/Core/GlobalFunctions.h +++ b/Eigen/src/Core/GlobalFunctions.h @@ -51,8 +51,6 @@ namespace Eigen EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tanh,scalar_tanh_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(lgamma,scalar_lgamma_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(digamma,scalar_digamma_op) - EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(zeta,scalar_zeta_op) - EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(polygamma,scalar_polygamma_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erf,scalar_erf_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erfc,scalar_erfc_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(exp,scalar_exp_op) @@ -161,6 +159,42 @@ namespace Eigen ); } + /** \cpp11 \returns an expression of the coefficient-wise polygamma(\a n, \a x) to the given arrays. + * + * It returns the \a n -th derivative of the digamma(psi) evaluated at \c x. + * + */ + // * \warning Be careful with the order of the parameters: x.polygamma(n) is equivalent to polygamma(n,x) + // * \sa ArrayBase::polygamma() + template<typename DerivedN,typename DerivedX> + inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_polygamma_op<typename DerivedX::Scalar>, const DerivedN, const DerivedX> + polygamma(const Eigen::ArrayBase<DerivedN>& n, const Eigen::ArrayBase<DerivedX>& x) + { + return Eigen::CwiseBinaryOp<Eigen::internal::scalar_polygamma_op<typename DerivedX::Scalar>, const DerivedN, const DerivedX>( + n.derived(), + x.derived() + ); + } + + /** \returns an expression of the coefficient-wise zeta(\a x, \a q) to the given arrays. + * + * It returns the Riemann zeta function of two arguments \a x and \a q: + * + * \param x is the exposent, it must be > 1 + * \param q is the shift, it must be > 0 + * + * \sa ArrayBase::zeta() + */ + template<typename DerivedX,typename DerivedQ> + inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_zeta_op<typename DerivedX::Scalar>, const DerivedX, const DerivedQ> + zeta(const Eigen::ArrayBase<DerivedX>& x, const Eigen::ArrayBase<DerivedQ>& q) + { + return Eigen::CwiseBinaryOp<Eigen::internal::scalar_zeta_op<typename DerivedX::Scalar>, const DerivedX, const DerivedQ>( + x.derived(), + q.derived() + ); + } + namespace internal { EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(real,scalar_real_op) |