X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=boost%2Fmath%2Fspecial_functions%2Fmath_fwd.hpp;h=9de38ec0862913a674080723a84a22aff7a3b63e;hp=d25181eb243ced9bbc5dc9412732f35166f3b25e;hb=2d71eb92104693ca9baa5a2e1c23eeca776d8fd3;hpb=da57529b92adbb7ae74a89861cb39fb35ac7c62d diff --git a/boost/math/special_functions/math_fwd.hpp b/boost/math/special_functions/math_fwd.hpp index d25181e..9de38ec 100644 --- a/boost/math/special_functions/math_fwd.hpp +++ b/boost/math/special_functions/math_fwd.hpp @@ -14,7 +14,7 @@ // IT = Integer type. // RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types -// AT = Integer or Real type +// AT = Integer or Real type #ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP #define BOOST_MATH_SPECIAL_MATH_FWD_HPP @@ -38,111 +38,111 @@ namespace boost // Beta functions. template - typename tools::promote_args::type + typename tools::promote_args::type beta(RT1 a, RT2 b); // Beta function (2 arguments). template - typename tools::promote_args::type + typename tools::promote_args::type beta(RT1 a, RT2 b, A x); // Beta function (3 arguments). template - typename tools::promote_args::type + typename tools::promote_args::type beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments). template - typename tools::promote_args::type + typename tools::promote_args::type betac(RT1 a, RT2 b, RT3 x); template - typename tools::promote_args::type + typename tools::promote_args::type betac(RT1 a, RT2 b, RT3 x, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inv(T1 a, T2 b, T3 p, T4* py); template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inv(T1 a, T2 b, T3 q, T4* py); template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta template - typename tools::promote_args::type + typename tools::promote_args::type ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta // erf & erfc error functions. @@ -168,51 +168,51 @@ namespace boost // Polynomials: template - typename tools::promote_args::type + typename tools::promote_args::type legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_p(int l, T x); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_p(int l, T x, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_q(unsigned l, T x); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_q(unsigned l, T x, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_p(int l, int m, T x); template - typename tools::promote_args::type + typename tools::promote_args::type legendre_p(int l, int m, T x, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1); template - typename tools::promote_args::type + typename tools::promote_args::type laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1); template - typename tools::promote_args::type + typename tools::promote_args::type laguerre(unsigned n, T x); template - typename tools::promote_args::type + typename tools::promote_args::type laguerre(unsigned n, unsigned m, T x, const Policy& pol); template @@ -226,76 +226,76 @@ namespace boost }; template - typename laguerre_result::type + typename laguerre_result::type laguerre(unsigned n, T1 m, T2 x); template - typename tools::promote_args::type + typename tools::promote_args::type hermite(unsigned n, T x); template - typename tools::promote_args::type + typename tools::promote_args::type hermite(unsigned n, T x, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1); template - std::complex::type> + std::complex::type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi); template - std::complex::type> + std::complex::type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi); template - typename tools::promote_args::type + typename tools::promote_args::type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi); template - typename tools::promote_args::type + typename tools::promote_args::type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); // Elliptic integrals: template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rf(T1 x, T2 y, T3 z); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rf(T1 x, T2 y, T3 z, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rd(T1 x, T2 y, T3 z); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rd(T1 x, T2 y, T3 z, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rc(T1 x, T2 y); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rc(T1 x, T2 y, const Policy& pol); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rj(T1 x, T2 y, T3 z, T4 p); template - typename tools::promote_args::type + typename tools::promote_args::type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol); template @@ -349,7 +349,7 @@ namespace boost template RT factorial(unsigned int, const Policy& pol); template - RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT)); + RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT)); template RT double_factorial(unsigned i); template @@ -465,11 +465,11 @@ namespace boost // Hypotenuse function sqrt(x ^ 2 + y ^ 2). template - typename tools::promote_args::type + typename tools::promote_args::type hypot(T1 x, T2 y); template - typename tools::promote_args::type + typename tools::promote_args::type hypot(T1 x, T2 y, const Policy&); // cbrt - cube root. @@ -502,11 +502,11 @@ namespace boost // Power - 1 template - typename tools::promote_args::type + typename tools::promote_args::type powm1(const T1 a, const T2 z); template - typename tools::promote_args::type + typename tools::promote_args::type powm1(const T1 a, const T2 z, const Policy&); // sqrt(1+x) - 1 @@ -614,6 +614,126 @@ namespace boost template typename detail::bessel_traits >::result_type sph_neumann(unsigned v, T x); + template + typename detail::bessel_traits::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol); + + template + typename detail::bessel_traits >::result_type cyl_bessel_j_zero(T v, int m); + + template + OutputIterator cyl_bessel_j_zero(T v, + int start_index, + unsigned number_of_zeros, + OutputIterator out_it); + + template + OutputIterator cyl_bessel_j_zero(T v, + int start_index, + unsigned number_of_zeros, + OutputIterator out_it, + const Policy&); + + template + typename detail::bessel_traits::result_type cyl_neumann_zero(T v, int m, const Policy& pol); + + template + typename detail::bessel_traits >::result_type cyl_neumann_zero(T v, int m); + + template + OutputIterator cyl_neumann_zero(T v, + int start_index, + unsigned number_of_zeros, + OutputIterator out_it); + + template + OutputIterator cyl_neumann_zero(T v, + int start_index, + unsigned number_of_zeros, + OutputIterator out_it, + const Policy&); + + template + std::complex >::result_type> cyl_hankel_1(T1 v, T2 x); + + template + std::complex::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol); + + template + std::complex::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol); + + template + std::complex >::result_type> cyl_hankel_2(T1 v, T2 x); + + template + std::complex::result_type> sph_hankel_1(T1 v, T2 x, const Policy& pol); + + template + std::complex >::result_type> sph_hankel_1(T1 v, T2 x); + + template + std::complex::result_type> sph_hankel_2(T1 v, T2 x, const Policy& pol); + + template + std::complex >::result_type> sph_hankel_2(T1 v, T2 x); + + template + typename tools::promote_args::type airy_ai(T x, const Policy&); + + template + typename tools::promote_args::type airy_ai(T x); + + template + typename tools::promote_args::type airy_bi(T x, const Policy&); + + template + typename tools::promote_args::type airy_bi(T x); + + template + typename tools::promote_args::type airy_ai_prime(T x, const Policy&); + + template + typename tools::promote_args::type airy_ai_prime(T x); + + template + typename tools::promote_args::type airy_bi_prime(T x, const Policy&); + + template + typename tools::promote_args::type airy_bi_prime(T x); + + template + T airy_ai_zero(unsigned m); + template + T airy_ai_zero(unsigned m, const Policy&); + + template + OutputIterator airy_ai_zero( + unsigned start_index, + unsigned number_of_zeros, + OutputIterator out_it); + template + OutputIterator airy_ai_zero( + unsigned start_index, + unsigned number_of_zeros, + OutputIterator out_it, + const Policy&); + + template + T airy_bi_zero(unsigned m); + template + T airy_bi_zero(unsigned m, const Policy&); + + template + OutputIterator airy_bi_zero( + unsigned start_index, + unsigned number_of_zeros, + OutputIterator out_it); + template + OutputIterator airy_bi_zero( + unsigned start_index, + unsigned number_of_zeros, + OutputIterator out_it, + const Policy&); + template typename tools::promote_args::type sin_pi(T x, const Policy&); @@ -641,6 +761,18 @@ namespace boost template bool isnormal BOOST_NO_MACRO_EXPAND(T t); + template + int signbit BOOST_NO_MACRO_EXPAND(T x); + + template + int sign BOOST_NO_MACRO_EXPAND(const T& z); + + template + typename tools::promote_args_permissive::type copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y); + + template + typename tools::promote_args_permissive::type changesign BOOST_NO_MACRO_EXPAND(const T& z); + // Exponential integrals: namespace detail{ @@ -669,6 +801,93 @@ namespace boost template typename tools::promote_args::type zeta(T s, const Policy&); + // Owen's T function: + template + typename tools::promote_args::type owens_t(T1 h, T2 a, const Policy& pol); + + template + typename tools::promote_args::type owens_t(T1 h, T2 a); + + // Jacobi Functions: + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&); + + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0); + + template + typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_sn(U k, T theta); + + template + typename tools::promote_args::type jacobi_cn(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_cn(T k, U theta); + + template + typename tools::promote_args::type jacobi_dn(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_dn(T k, U theta); + + template + typename tools::promote_args::type jacobi_cd(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_cd(T k, U theta); + + template + typename tools::promote_args::type jacobi_dc(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_dc(T k, U theta); + + template + typename tools::promote_args::type jacobi_ns(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_ns(T k, U theta); + + template + typename tools::promote_args::type jacobi_sd(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_sd(T k, U theta); + + template + typename tools::promote_args::type jacobi_ds(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_ds(T k, U theta); + + template + typename tools::promote_args::type jacobi_nc(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_nc(T k, U theta); + + template + typename tools::promote_args::type jacobi_nd(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_nd(T k, U theta); + + template + typename tools::promote_args::type jacobi_sc(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_sc(T k, U theta); + + template + typename tools::promote_args::type jacobi_cs(T k, U theta, const Policy& pol); + + template + typename tools::promote_args::type jacobi_cs(T k, U theta); + + template typename tools::promote_args::type zeta(T s); @@ -680,22 +899,26 @@ namespace boost typename tools::promote_args::type pow(T base); // next: + template + typename tools::promote_args::type nextafter(const T&, const U&, const Policy&); + template + typename tools::promote_args::type nextafter(const T&, const U&); template - T nextafter(const T&, const T&, const Policy&); - template - T nextafter(const T&, const T&); - template - T float_next(const T&, const Policy&); + typename tools::promote_args::type float_next(const T&, const Policy&); template - T float_next(const T&); + typename tools::promote_args::type float_next(const T&); template - T float_prior(const T&, const Policy&); + typename tools::promote_args::type float_prior(const T&, const Policy&); template - T float_prior(const T&); + typename tools::promote_args::type float_prior(const T&); + template + typename tools::promote_args::type float_distance(const T&, const U&, const Policy&); + template + typename tools::promote_args::type float_distance(const T&, const U&); template - T float_distance(const T&, const T&, const Policy&); + typename tools::promote_args::type float_advance(T val, int distance, const Policy& pol); template - T float_distance(const T&, const T&); + typename tools::promote_args::type float_advance(const T& val, int distance); } // namespace math } // namespace boost @@ -880,7 +1103,6 @@ namespace boost inline typename boost::math::tools::promote_args::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\ template \ inline typename boost::math::tools::promote_args::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\ - using boost::math::fpclassify;\ \ template \ inline typename boost::math::tools::promote_args::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\ @@ -991,6 +1213,28 @@ namespace boost template \ inline typename boost::math::detail::bessel_traits::result_type \ sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\ +\ + template \ + inline typename boost::math::detail::bessel_traits::result_type cyl_bessel_j_zero(T v, int m)\ + { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }\ +\ +template \ + inline void cyl_bessel_j_zero(T v,\ + int start_index,\ + unsigned number_of_zeros,\ + OutputIterator out_it)\ + { boost::math::cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, Policy()); }\ +\ + template \ + inline typename boost::math::detail::bessel_traits::result_type cyl_neumann_zero(T v, int m)\ + { return boost::math::cyl_neumann_zero(v, m, Policy()); }\ +\ +template \ + inline void cyl_neumann_zero(T v,\ + int start_index,\ + unsigned number_of_zeros,\ + OutputIterator out_it)\ + { boost::math::cyl_neumann_zero(v, start_index, number_of_zeros, out_it, Policy()); }\ \ template \ inline typename boost::math::tools::promote_args::type sin_pi(T x){ return boost::math::sin_pi(x); }\ @@ -1003,6 +1247,10 @@ namespace boost using boost::math::isinf;\ using boost::math::isnan;\ using boost::math::isnormal;\ + using boost::math::signbit;\ + using boost::math::sign;\ + using boost::math::copysign;\ + using boost::math::changesign;\ \ template \ inline typename boost::math::tools::promote_args::type expint(T const& z, U const& u)\ @@ -1048,6 +1296,111 @@ namespace boost template T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\ template T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\ template T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); }\ + \ + template \ + inline std::complex::result_type> cyl_hankel_1(T1 v, T2 x)\ + { return boost::math::cyl_hankel_1(v, x, Policy()); }\ + \ + template \ + inline std::complex::result_type> cyl_hankel_2(T1 v, T2 x)\ + { return boost::math::cyl_hankel_2(v, x, Policy()); }\ + \ + template \ + inline std::complex::result_type> sph_hankel_1(T1 v, T2 x)\ + { return boost::math::sph_hankel_1(v, x, Policy()); }\ + \ + template \ + inline std::complex::result_type> sph_hankel_2(T1 v, T2 x)\ + { return boost::math::sph_hankel_2(v, x, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn)\ + { return boost::math::jacobi_elliptic(k, theta, pcn, pdn, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_sn(U k, T theta)\ + { return boost::math::jacobi_sn(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_cn(T k, U theta)\ + { return boost::math::jacobi_cn(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_dn(T k, U theta)\ + { return boost::math::jacobi_dn(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_cd(T k, U theta)\ + { return boost::math::jacobi_cd(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_dc(T k, U theta)\ + { return boost::math::jacobi_dc(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_ns(T k, U theta)\ + { return boost::math::jacobi_ns(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_sd(T k, U theta)\ + { return boost::math::jacobi_sd(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_ds(T k, U theta)\ + { return boost::math::jacobi_ds(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_nc(T k, U theta)\ + { return boost::math::jacobi_nc(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_nd(T k, U theta)\ + { return boost::math::jacobi_nd(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_sc(T k, U theta)\ + { return boost::math::jacobi_sc(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type jacobi_cs(T k, U theta)\ + { return boost::math::jacobi_cs(k, theta, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type airy_ai(T x)\ + { return boost::math::airy_ai(x, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type airy_bi(T x)\ + { return boost::math::airy_bi(x, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type airy_ai_prime(T x)\ + { return boost::math::airy_ai_prime(x, Policy()); }\ + \ + template \ + inline typename boost::math::tools::promote_args::type airy_bi_prime(T x)\ + { return boost::math::airy_bi_prime(x, Policy()); }\ + \ + template \ + inline T airy_ai_zero(int m)\ + { return boost::math::airy_ai_zero(m, Policy()); }\ + template \ + OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\ + { return boost::math::airy_ai_zero(start_index, number_of_zeros, out_it, Policy()); }\ + \ + template \ + inline T airy_bi_zero(int m)\ + { return boost::math::airy_bi_zero(m, Policy()); }\ + template \ + OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\ + { return boost::math::airy_bi_zero(start_index, number_of_zeros, out_it, Policy()); }\ + \ + + + #endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP