diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-03-21 15:45:20 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-03-21 15:46:37 +0900 |
commit | 733b5d5ae2c5d625211e2985ac25728ac3f54883 (patch) | |
tree | a5b214744b256f07e1dc2bd7273035a7808c659f /boost/math/special_functions/math_fwd.hpp | |
parent | 08c1e93fa36a49f49325a07fe91ff92c964c2b6c (diff) | |
download | boost-733b5d5ae2c5d625211e2985ac25728ac3f54883.tar.gz boost-733b5d5ae2c5d625211e2985ac25728ac3f54883.tar.bz2 boost-733b5d5ae2c5d625211e2985ac25728ac3f54883.zip |
Imported Upstream version 1.58.0upstream/1.58.0
Change-Id: If0072143aa26874812e0db6872e1efb10a3e5e94
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/math/special_functions/math_fwd.hpp')
-rw-r--r-- | boost/math/special_functions/math_fwd.hpp | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/boost/math/special_functions/math_fwd.hpp b/boost/math/special_functions/math_fwd.hpp index e952dcdb51..96f60726a6 100644 --- a/boost/math/special_functions/math_fwd.hpp +++ b/boost/math/special_functions/math_fwd.hpp @@ -27,6 +27,7 @@ #include <boost/math/tools/promotion.hpp> // for argument promotion. #include <boost/math/policies/policy.hpp> #include <boost/mpl/comparison.hpp> +#include <boost/utility/enable_if.hpp> #include <boost/config/no_tr1/complex.hpp> #define BOOST_NO_MACRO_EXPAND /**/ @@ -145,6 +146,12 @@ namespace boost typename tools::promote_args<RT1, RT2, RT3>::type ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta + // Binomial: + template <class T, class Policy> + T binomial_coefficient(unsigned n, unsigned k, const Policy& pol); + template <class T> + T binomial_coefficient(unsigned n, unsigned k); + // erf & erfc error functions. template <class RT> // Error function. typename tools::promote_args<RT>::type erf(RT z); @@ -176,7 +183,7 @@ namespace boost legendre_p(int l, T x); template <class T, class Policy> - typename tools::promote_args<T>::type + typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type legendre_p(int l, T x, const Policy& pol); template <class T> @@ -184,7 +191,7 @@ namespace boost legendre_q(unsigned l, T x); template <class T, class Policy> - typename tools::promote_args<T>::type + typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type legendre_q(unsigned l, T x, const Policy& pol); template <class T1, class T2, class T3> @@ -298,6 +305,14 @@ namespace boost typename tools::promote_args<T1, T2, T3, T4>::type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol); + template <class T1, class T2, class T3> + typename tools::promote_args<T1, T2, T3>::type + ellint_rg(T1 x, T2 y, T3 z); + + template <class T1, class T2, class T3, class Policy> + typename tools::promote_args<T1, T2, T3>::type + ellint_rg(T1 x, T2 y, T3 z, const Policy& pol); + template <typename T> typename tools::promote_args<T>::type ellint_2(T k); @@ -316,6 +331,27 @@ namespace boost template <class T1, class T2, class Policy> typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol); + template <typename T> + typename tools::promote_args<T>::type ellint_d(T k); + + template <class T1, class T2> + typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi); + + template <class T1, class T2, class Policy> + typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi, const Policy& pol); + + template <class T1, class T2> + typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi); + + template <class T1, class T2, class Policy> + typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi, const Policy& pol); + + template <class T1, class T2> + typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi); + + template <class T1, class T2, class Policy> + typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi, const Policy& pol); + namespace detail{ template <class T, class U, class V> @@ -463,6 +499,20 @@ namespace boost template <class T, class Policy> typename tools::promote_args<T>::type digamma(T x, const Policy&); + // trigamma: + template <class T> + typename tools::promote_args<T>::type trigamma(T x); + + template <class T, class Policy> + typename tools::promote_args<T>::type trigamma(T x, const Policy&); + + // polygamma: + template <class T> + typename tools::promote_args<T>::type polygamma(int n, T x); + + template <class T, class Policy> + typename tools::promote_args<T>::type polygamma(int n, T x, const Policy&); + // Hypotenuse function sqrt(x ^ 2 + y ^ 2). template <class T1, class T2> typename tools::promote_args<T1, T2>::type @@ -1052,6 +1102,8 @@ namespace boost inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \ ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); }\ \ + template <class T> T binomial_coefficient(unsigned n, unsigned k){ return ::boost::math::binomial_coefficient<T, Policy>(n, k, Policy()); }\ +\ template <class RT>\ inline typename boost::math::tools::promote_args<RT>::type erf(RT z) { return ::boost::math::erf(z, Policy()); }\ \ @@ -1128,6 +1180,10 @@ namespace boost inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \ ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); }\ \ + template <class T1, class T2, class T3>\ + inline typename boost::math::tools::promote_args<T1, T2, T3>::type \ + ellint_rg(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rg(x, y, z, Policy()); }\ + \ template <typename T>\ inline typename boost::math::tools::promote_args<T>::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); }\ \ @@ -1135,6 +1191,18 @@ namespace boost inline typename boost::math::tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); }\ \ template <typename T>\ + inline typename boost::math::tools::promote_args<T>::type ellint_d(T k){ return boost::math::ellint_d(k, Policy()); }\ +\ + template <class T1, class T2>\ + inline typename boost::math::tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi){ return boost::math::ellint_d(k, phi, Policy()); }\ +\ + template <class T1, class T2>\ + inline typename boost::math::tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi){ return boost::math::jacobi_zeta(k, phi, Policy()); }\ +\ + template <class T1, class T2>\ + inline typename boost::math::tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi){ return boost::math::heuman_lambda(k, phi, Policy()); }\ +\ + template <typename T>\ inline typename boost::math::tools::promote_args<T>::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); }\ \ template <class T1, class T2>\ @@ -1205,6 +1273,12 @@ namespace boost template <class T>\ inline typename boost::math::tools::promote_args<T>::type digamma(T x){ return boost::math::digamma(x, Policy()); }\ \ + template <class T>\ + inline typename boost::math::tools::promote_args<T>::type trigamma(T x){ return boost::math::trigamma(x, Policy()); }\ +\ + template <class T>\ + inline typename boost::math::tools::promote_args<T>::type polygamma(int n, T x){ return boost::math::polygamma(n, x, Policy()); }\ + \ template <class T1, class T2>\ inline typename boost::math::tools::promote_args<T1, T2>::type \ hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); }\ |