diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:38:45 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:39:52 +0900 |
commit | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (patch) | |
tree | e8269ac85a4b0f7d416e2565fa4f451b5cb41351 /boost/math/special_functions | |
parent | d9ec475d945d3035377a0d89ed42e382d8988891 (diff) | |
download | boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.tar.gz boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.tar.bz2 boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.zip |
Imported Upstream version 1.61.0
Change-Id: I96a1f878d1e6164f01e9aadd5147f38fca448d90
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/math/special_functions')
-rw-r--r-- | boost/math/special_functions/detail/polygamma.hpp | 2 | ||||
-rw-r--r-- | boost/math/special_functions/detail/t_distribution_inv.hpp | 2 | ||||
-rw-r--r-- | boost/math/special_functions/ellint_2.hpp | 2 | ||||
-rw-r--r-- | boost/math/special_functions/ellint_3.hpp | 2 | ||||
-rw-r--r-- | boost/math/special_functions/fpclassify.hpp | 20 |
5 files changed, 21 insertions, 7 deletions
diff --git a/boost/math/special_functions/detail/polygamma.hpp b/boost/math/special_functions/detail/polygamma.hpp index 0267bd3ac8..20a0292fb4 100644 --- a/boost/math/special_functions/detail/polygamma.hpp +++ b/boost/math/special_functions/detail/polygamma.hpp @@ -239,7 +239,7 @@ if(boost::math::tools::max_value<T>() / scale < sum) return boost::math::policies::raise_overflow_error<T>(function, 0, pol); sum *= scale; - return n & 1 ? sum : -sum; + return n & 1 ? sum : T(-sum); } // diff --git a/boost/math/special_functions/detail/t_distribution_inv.hpp b/boost/math/special_functions/detail/t_distribution_inv.hpp index e8bd0db28f..ab5a8fbca6 100644 --- a/boost/math/special_functions/detail/t_distribution_inv.hpp +++ b/boost/math/special_functions/detail/t_distribution_inv.hpp @@ -285,7 +285,7 @@ T inverse_students_t(T df, T u, T v, const Policy& pol, bool* pexact = 0) // T a = 4 * (u - u * u);//1 - 4 * (u - 0.5f) * (u - 0.5f); T b = boost::math::cbrt(a); - static const T c = static_cast<T>(0.85498797333834849467655443627193L); + static const T c = static_cast<T>(0.85498797333834849467655443627193); T p = 6 * (1 + c * (1 / b - 1)); T p0; do{ diff --git a/boost/math/special_functions/ellint_2.hpp b/boost/math/special_functions/ellint_2.hpp index 0d160ecdf1..7c1eab45c2 100644 --- a/boost/math/special_functions/ellint_2.hpp +++ b/boost/math/special_functions/ellint_2.hpp @@ -74,7 +74,7 @@ T ellint_e_imp(T phi, T k, const Policy& pol) } else if(fabs(k) == 1) { - return invert ? T(-sin(phi)) : sin(phi); + return invert ? T(-sin(phi)) : T(sin(phi)); } else { diff --git a/boost/math/special_functions/ellint_3.hpp b/boost/math/special_functions/ellint_3.hpp index 9ab0f8317a..b6670a196f 100644 --- a/boost/math/special_functions/ellint_3.hpp +++ b/boost/math/special_functions/ellint_3.hpp @@ -133,7 +133,7 @@ T ellint_pi_imp(T v, T phi, T k, T vc, const Policy& pol) if((m > 0) && (vc > 0)) result += m * ellint_pi_imp(v, k, vc, pol); } - return phi < 0 ? -result : result; + return phi < 0 ? T(-result) : result; } if(k == 0) { diff --git a/boost/math/special_functions/fpclassify.hpp b/boost/math/special_functions/fpclassify.hpp index 0a4e1ac7aa..d83e111c48 100644 --- a/boost/math/special_functions/fpclassify.hpp +++ b/boost/math/special_functions/fpclassify.hpp @@ -81,7 +81,12 @@ is used. #include <float.h> #endif #ifdef BOOST_MATH_USE_FLOAT128 +#ifdef __has_include +#if __has_include("quadmath.h") #include "quadmath.h" +#define BOOST_MATH_HAS_QUADMATH_H +#endif +#endif #endif #ifdef BOOST_NO_STDC_NAMESPACE @@ -124,9 +129,18 @@ inline bool is_nan_helper(T, const boost::false_type&) { return false; } -#ifdef BOOST_MATH_USE_FLOAT128 +#if defined(BOOST_MATH_USE_FLOAT128) +#if defined(BOOST_MATH_HAS_QUADMATH_H) inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnanq(f); } inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnanq(f); } +#elif defined(BOOST_GNU_STDLIB) && BOOST_GNU_STDLIB && \ + _GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC +inline bool is_nan_helper(__float128 f, const boost::true_type&) { return std::isnan(static_cast<double>(f)); } +inline bool is_nan_helper(__float128 f, const boost::false_type&) { return std::isnan(static_cast<double>(f)); } +#else +inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnan(static_cast<double>(f)); } +inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnan(static_cast<double>(f)); } +#endif #endif } @@ -519,7 +533,7 @@ inline bool (isinf)(long double x) return detail::isinf_impl(static_cast<value_type>(x), method()); } #endif -#ifdef BOOST_MATH_USE_FLOAT128 +#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H) template<> inline bool (isinf)(__float128 x) { @@ -611,7 +625,7 @@ inline bool (isnan)(long double x) return detail::isnan_impl(x, method()); } #endif -#ifdef BOOST_MATH_USE_FLOAT128 +#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H) template<> inline bool (isnan)(__float128 x) { |