summaryrefslogtreecommitdiff
path: root/boost/math/special_functions/math_fwd.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/math/special_functions/math_fwd.hpp')
-rw-r--r--boost/math/special_functions/math_fwd.hpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/boost/math/special_functions/math_fwd.hpp b/boost/math/special_functions/math_fwd.hpp
index 96f60726a6..ca8e58144e 100644
--- a/boost/math/special_functions/math_fwd.hpp
+++ b/boost/math/special_functions/math_fwd.hpp
@@ -181,19 +181,19 @@ namespace boost
template <class T>
typename tools::promote_args<T>::type
legendre_p(int l, T x);
-
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
template <class T, class Policy>
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);
-
+#endif
template <class T>
typename tools::promote_args<T>::type
legendre_q(unsigned l, T x);
-
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
template <class T, class Policy>
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);
-
+#endif
template <class T1, class T2, class T3>
typename tools::promote_args<T1, T2, T3>::type
legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
@@ -607,8 +607,10 @@ namespace boost
template <class T1, class T2, class Policy>
struct bessel_traits
{
- typedef typename tools::promote_args<
- T1, T2
+ typedef typename mpl::if_<
+ is_integral<T1>,
+ typename tools::promote_args<T2>::type,
+ typename tools::promote_args<T1, T2>::type
>::type result_type;
typedef typename policies::precision<result_type, Policy>::type precision_type;
@@ -994,6 +996,16 @@ namespace boost
template <class T>
typename tools::promote_args<T>::type float_advance(const T& val, int distance);
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type ulp(const T& val, const Policy& pol);
+ template <class T>
+ typename tools::promote_args<T>::type ulp(const T& val);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type relative_difference(const T&, const U&);
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type epsilon_difference(const T&, const U&);
+
template<class T>
T unchecked_bernoulli_b2n(const std::size_t n);
template <class T, class Policy>
@@ -1447,6 +1459,7 @@ template <class OutputIterator, class T>\
template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\
template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\
template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\
+ template <class T> T ulp(const T& a){ return boost::math::ulp(a, Policy()); }\
\
template <class RT1, class RT2>\
inline typename boost::math::tools::promote_args<RT1, RT2>::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); }\