mirror of
https://github.com/boostorg/multiprecision.git
synced 2026-07-21 13:23:49 +00:00
Replace 0 as null pointer constant with nullptr
This commit is contained in:
@@ -2810,7 +2810,7 @@ inline BOOST_MP_CXX14_CONSTEXPR int itrunc(const detail::expression<tag, A1, A2,
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", nullptr, number_type(v), 0, pol);
|
||||
return r.template convert_to<int>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2823,7 +2823,7 @@ inline BOOST_MP_CXX14_CONSTEXPR int itrunc(const number<Backend, ExpressionTempl
|
||||
{
|
||||
number<Backend, ExpressionTemplates> r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", nullptr, v, 0, pol);
|
||||
return r.template convert_to<int>();
|
||||
}
|
||||
template <class Backend, expression_template_option ExpressionTemplates>
|
||||
@@ -2837,7 +2837,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long ltrunc(const detail::expression<tag, A1, A2
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", nullptr, number_type(v), 0L, pol);
|
||||
return r.template convert_to<long>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2850,7 +2850,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long ltrunc(const number<T, ExpressionTemplates>
|
||||
{
|
||||
number<T, ExpressionTemplates> r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", nullptr, v, 0L, pol);
|
||||
return r.template convert_to<long>();
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates>
|
||||
@@ -2865,7 +2865,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long long lltrunc(const detail::expression<tag,
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", nullptr, number_type(v), 0LL, pol);
|
||||
return r.template convert_to<long long>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2878,7 +2878,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long long lltrunc(const number<T, ExpressionTemp
|
||||
{
|
||||
number<T, ExpressionTemplates> r(trunc(v, pol));
|
||||
if ((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", nullptr, v, 0LL, pol);
|
||||
return r.template convert_to<long long>();
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates>
|
||||
@@ -2909,7 +2909,7 @@ inline BOOST_MP_CXX14_CONSTEXPR int iround(const detail::expression<tag, A1, A2,
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", nullptr, number_type(v), 0, pol);
|
||||
return r.template convert_to<int>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2922,7 +2922,7 @@ inline BOOST_MP_CXX14_CONSTEXPR int iround(const number<T, ExpressionTemplates>&
|
||||
{
|
||||
number<T, ExpressionTemplates> r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", nullptr, v, 0, pol);
|
||||
return r.template convert_to<int>();
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates>
|
||||
@@ -2936,7 +2936,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long lround(const detail::expression<tag, A1, A2
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", nullptr, number_type(v), 0L, pol);
|
||||
return r.template convert_to<long>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2949,7 +2949,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long lround(const number<T, ExpressionTemplates>
|
||||
{
|
||||
number<T, ExpressionTemplates> r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", nullptr, v, 0L, pol);
|
||||
return r.template convert_to<long>();
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates>
|
||||
@@ -2964,7 +2964,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long long llround(const detail::expression<tag,
|
||||
using number_type = typename detail::expression<tag, A1, A2, A3, A4>::result_type;
|
||||
number_type r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", nullptr, number_type(v), 0LL, pol);
|
||||
return r.template convert_to<long long>();
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -2977,7 +2977,7 @@ inline BOOST_MP_CXX14_CONSTEXPR long long llround(const number<T, ExpressionTemp
|
||||
{
|
||||
number<T, ExpressionTemplates> r(round(v, pol));
|
||||
if ((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !BOOST_MP_ISFINITE(v))
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol);
|
||||
return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", nullptr, v, 0LL, pol);
|
||||
return r.template convert_to<long long>();
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates>
|
||||
@@ -3092,7 +3092,7 @@ sqrt(const number<B, ExpressionTemplates>& x)
|
||||
return s;
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
sqrt(const detail::expression<tag, A1, A2, A3, A4>& arg)
|
||||
{
|
||||
using default_ops::eval_integer_sqrt;
|
||||
@@ -3339,8 +3339,8 @@ sqrt(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& arg, number<B, Expre
|
||||
|
||||
// clang-format off
|
||||
//
|
||||
// Regrettably, when the argument to a function is an rvalue we must return by value, and not return an
|
||||
// expression template, otherwise we can end up with dangling references.
|
||||
// Regrettably, when the argument to a function is an rvalue we must return by value, and not return an
|
||||
// expression template, otherwise we can end up with dangling references.
|
||||
// See https://github.com/boostorg/multiprecision/issues/175.
|
||||
//
|
||||
#define UNARY_OP_FUNCTOR_CXX11_RVALUE(func, category)\
|
||||
|
||||
@@ -193,7 +193,7 @@ struct float128_backend
|
||||
return *this;
|
||||
}
|
||||
template <class T>
|
||||
constexpr float128_backend(const T& i, const typename std::enable_if<std::is_convertible<T, float128_type>::value>::type* = 0) noexcept(noexcept(std::declval<float128_type&>() = std::declval<const T&>()))
|
||||
constexpr float128_backend(const T& i, const typename std::enable_if<std::is_convertible<T, float128_type>::value>::type* = nullptr) noexcept(noexcept(std::declval<float128_type&>() = std::declval<const T&>()))
|
||||
: m_value(i) {}
|
||||
template <class T>
|
||||
BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<boost::multiprecision::detail::is_arithmetic<T>::value || std::is_convertible<T, float128_type>::value, float128_backend&>::type operator=(const T& i) noexcept(noexcept(std::declval<float128_type&>() = std::declval<const T&>()))
|
||||
@@ -440,7 +440,7 @@ inline void eval_rsqrt(float128_backend& result, const float128_backend& arg)
|
||||
#endif
|
||||
}
|
||||
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
||||
inline BOOST_MP_CXX14_CONSTEXPR
|
||||
inline BOOST_MP_CXX14_CONSTEXPR
|
||||
#else
|
||||
inline
|
||||
#endif
|
||||
@@ -556,7 +556,7 @@ inline void eval_trunc(float128_backend& result, const float128_backend& arg)
|
||||
result.value() = truncq(arg.value());
|
||||
}
|
||||
/*
|
||||
//
|
||||
//
|
||||
// This doesn't actually work... rely on our own default version instead.
|
||||
//
|
||||
inline void eval_round(float128_backend& result, const float128_backend& arg)
|
||||
@@ -564,9 +564,9 @@ inline void eval_round(float128_backend& result, const float128_backend& arg)
|
||||
if(isnanq(arg.value()) || isinf(arg.value()))
|
||||
{
|
||||
result = boost::math::policies::raise_rounding_error(
|
||||
"boost::multiprecision::trunc<%1%>(%1%)", 0,
|
||||
number<float128_backend, et_off>(arg),
|
||||
number<float128_backend, et_off>(arg),
|
||||
"boost::multiprecision::trunc<%1%>(%1%)", nullptr,
|
||||
number<float128_backend, et_off>(arg),
|
||||
number<float128_backend, et_off>(arg),
|
||||
boost::math::policies::policy<>()).backend();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -566,7 +566,7 @@ public:
|
||||
{
|
||||
mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr);
|
||||
}
|
||||
~gmp_char_ptr() noexcept
|
||||
~gmp_char_ptr() noexcept
|
||||
{
|
||||
(*free_func_ptr)((void*)ptr_val, sizeof(*ptr_val));
|
||||
ptr_val = nullptr;
|
||||
@@ -588,9 +588,9 @@ struct gmp_float : public detail::gmp_float_imp<digits10>
|
||||
}
|
||||
gmp_float(const gmp_float& o) : detail::gmp_float_imp<digits10>(o) {}
|
||||
template <unsigned D>
|
||||
gmp_float(const gmp_float<D>& o, typename std::enable_if<D <= digits10>::type* = 0);
|
||||
gmp_float(const gmp_float<D>& o, typename std::enable_if<D <= digits10>::type* = nullptr);
|
||||
template <unsigned D>
|
||||
explicit gmp_float(const gmp_float<D>& o, typename std::enable_if<!(D <= digits10)>::type* = 0);
|
||||
explicit gmp_float(const gmp_float<D>& o, typename std::enable_if<!(D <= digits10)>::type* = nullptr);
|
||||
gmp_float(const gmp_int& o);
|
||||
gmp_float(const gmp_rational& o);
|
||||
gmp_float(const mpf_t val)
|
||||
@@ -829,7 +829,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0>
|
||||
}
|
||||
//
|
||||
// Variable precision options:
|
||||
//
|
||||
//
|
||||
static variable_precision_options default_variable_precision_options()noexcept
|
||||
{
|
||||
return get_global_default_options();
|
||||
@@ -3010,7 +3010,7 @@ inline void eval_convert_to(float128_type* result, const gmp_rational& val)
|
||||
|
||||
eval_convert_to(&fn, n);
|
||||
eval_convert_to(&fd, d);
|
||||
|
||||
|
||||
*result = fn / fd;
|
||||
}
|
||||
#endif
|
||||
@@ -3340,7 +3340,7 @@ struct transcendental_reduction_type<boost::multiprecision::backends::gmp_float<
|
||||
// As a practical measure the largest argument supported is 1/eps, as supporting larger
|
||||
// arguments requires the division of argument by PI/2 to also be done at higher precision,
|
||||
// otherwise the result (an integer) can not be represented exactly.
|
||||
//
|
||||
//
|
||||
// See ARGUMENT REDUCTION FOR HUGE ARGUMENTS. K C Ng.
|
||||
//
|
||||
using type = boost::multiprecision::backends::gmp_float<Digits10 * 3>;
|
||||
|
||||
@@ -422,13 +422,13 @@ struct mpc_complex_backend : public detail::mpc_complex_imp<digits10>
|
||||
mpc_complex_backend(mpc_complex_backend&& o) : detail::mpc_complex_imp<digits10>(static_cast<detail::mpc_complex_imp<digits10>&&>(o))
|
||||
{}
|
||||
template <unsigned D>
|
||||
mpc_complex_backend(const mpc_complex_backend<D>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpc_complex_backend(const mpc_complex_backend<D>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpc_complex_imp<digits10>()
|
||||
{
|
||||
mpc_set(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
template <unsigned D>
|
||||
explicit mpc_complex_backend(const mpc_complex_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = 0)
|
||||
explicit mpc_complex_backend(const mpc_complex_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = nullptr)
|
||||
: detail::mpc_complex_imp<digits10>()
|
||||
{
|
||||
mpc_set(this->m_data, val.data(), GMP_RNDN);
|
||||
@@ -519,12 +519,12 @@ struct mpc_complex_backend : public detail::mpc_complex_imp<digits10>
|
||||
return *this;
|
||||
}
|
||||
template <unsigned D10, mpfr_allocation_type AllocationType>
|
||||
mpc_complex_backend(mpfr_float_backend<D10, AllocationType> const& val, typename std::enable_if<D10 <= digits10>::type* = 0) : detail::mpc_complex_imp<digits10>()
|
||||
mpc_complex_backend(mpfr_float_backend<D10, AllocationType> const& val, typename std::enable_if<D10 <= digits10>::type* = nullptr) : detail::mpc_complex_imp<digits10>()
|
||||
{
|
||||
mpc_set_fr(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
template <unsigned D10, mpfr_allocation_type AllocationType>
|
||||
explicit mpc_complex_backend(mpfr_float_backend<D10, AllocationType> const& val, typename std::enable_if<!(D10 <= digits10)>::type* = 0) : detail::mpc_complex_imp<digits10>()
|
||||
explicit mpc_complex_backend(mpfr_float_backend<D10, AllocationType> const& val, typename std::enable_if<!(D10 <= digits10)>::type* = nullptr) : detail::mpc_complex_imp<digits10>()
|
||||
{
|
||||
mpc_set_fr(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
|
||||
@@ -507,17 +507,17 @@ struct mpfi_float_backend : public detail::mpfi_float_imp<digits10>
|
||||
mpfi_float_backend(mpfi_float_backend&& o) : detail::mpfi_float_imp<digits10>(static_cast<detail::mpfi_float_imp<digits10>&&>(o))
|
||||
{}
|
||||
template <unsigned D>
|
||||
mpfi_float_backend(const mpfi_float_backend<D>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpfi_float_backend(const mpfi_float_backend<D>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpfi_float_imp<digits10>()
|
||||
{
|
||||
mpfi_set(this->m_data, val.data());
|
||||
}
|
||||
template <unsigned D, mpfr_allocation_type AllocationType>
|
||||
mpfi_float_backend(const mpfr_float_backend<D, AllocationType>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpfi_float_backend(const mpfr_float_backend<D, AllocationType>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpfi_float_imp<digits10>(val) {}
|
||||
|
||||
template <unsigned D>
|
||||
explicit mpfi_float_backend(const mpfi_float_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = 0)
|
||||
explicit mpfi_float_backend(const mpfi_float_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = nullptr)
|
||||
: detail::mpfi_float_imp<digits10>()
|
||||
{
|
||||
mpfi_set(this->m_data, val.data());
|
||||
@@ -533,7 +533,7 @@ struct mpfi_float_backend : public detail::mpfi_float_imp<digits10>
|
||||
return *this;
|
||||
}
|
||||
template <unsigned D>
|
||||
mpfi_float_backend(const mpfr_float_backend<D>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpfi_float_backend(const mpfr_float_backend<D>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpfi_float_imp<digits10>()
|
||||
{
|
||||
mpfi_set_fr(this->m_data, val.data());
|
||||
@@ -545,7 +545,7 @@ struct mpfi_float_backend : public detail::mpfi_float_imp<digits10>
|
||||
return *this;
|
||||
}
|
||||
template <unsigned D>
|
||||
explicit mpfi_float_backend(const mpfr_float_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = 0)
|
||||
explicit mpfi_float_backend(const mpfr_float_backend<D>& val, typename std::enable_if<!(D <= digits10)>::type* = nullptr)
|
||||
: detail::mpfi_float_imp<digits10>()
|
||||
{
|
||||
mpfi_set_fr(this->m_data, val.data());
|
||||
|
||||
@@ -953,25 +953,25 @@ struct mpfr_float_backend : public detail::mpfr_float_imp<digits10, AllocationTy
|
||||
mpfr_float_backend(mpfr_float_backend&& o) noexcept : detail::mpfr_float_imp<digits10, AllocationType>(static_cast<detail::mpfr_float_imp<digits10, AllocationType>&&>(o))
|
||||
{}
|
||||
template <unsigned D, mpfr_allocation_type AT>
|
||||
mpfr_float_backend(const mpfr_float_backend<D, AT>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpfr_float_backend(const mpfr_float_backend<D, AT>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpfr_float_imp<digits10, AllocationType>()
|
||||
{
|
||||
mpfr_set(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
template <unsigned D, mpfr_allocation_type AT>
|
||||
explicit mpfr_float_backend(const mpfr_float_backend<D, AT>& val, typename std::enable_if<!(D <= digits10)>::type* = 0)
|
||||
explicit mpfr_float_backend(const mpfr_float_backend<D, AT>& val, typename std::enable_if<!(D <= digits10)>::type* = nullptr)
|
||||
: detail::mpfr_float_imp<digits10, AllocationType>()
|
||||
{
|
||||
mpfr_set(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
template <unsigned D>
|
||||
mpfr_float_backend(const gmp_float<D>& val, typename std::enable_if<D <= digits10>::type* = 0)
|
||||
mpfr_float_backend(const gmp_float<D>& val, typename std::enable_if<D <= digits10>::type* = nullptr)
|
||||
: detail::mpfr_float_imp<digits10, AllocationType>()
|
||||
{
|
||||
mpfr_set_f(this->m_data, val.data(), GMP_RNDN);
|
||||
}
|
||||
template <unsigned D>
|
||||
mpfr_float_backend(const gmp_float<D>& val, typename std::enable_if<!(D <= digits10)>::type* = 0)
|
||||
mpfr_float_backend(const gmp_float<D>& val, typename std::enable_if<!(D <= digits10)>::type* = nullptr)
|
||||
: detail::mpfr_float_imp<digits10, AllocationType>()
|
||||
{
|
||||
mpfr_set_f(this->m_data, val.data(), GMP_RNDN);
|
||||
@@ -1322,7 +1322,7 @@ struct mpfr_float_backend<0, allocate_dynamic> : public detail::mpfr_float_imp<0
|
||||
}
|
||||
//
|
||||
// Variable precision options:
|
||||
//
|
||||
//
|
||||
static variable_precision_options default_variable_precision_options()noexcept
|
||||
{
|
||||
return get_global_default_options();
|
||||
@@ -2778,7 +2778,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_asinh(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("asinh<%1%>(%1%)", 0, Policy());
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("asinh<%1%>(%1%)", nullptr, Policy());
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("asinh<%1%>(%1%)", "Unknown error, result is a NaN", result, Policy());
|
||||
return result;
|
||||
@@ -2797,7 +2797,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_acosh(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("acosh<%1%>(%1%)", 0, Policy());
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("acosh<%1%>(%1%)", nullptr, Policy());
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("acosh<%1%>(%1%)", "Unknown error, result is a NaN", result, Policy());
|
||||
return result;
|
||||
@@ -2816,7 +2816,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_atanh(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("atanh<%1%>(%1%)", 0, Policy());
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("atanh<%1%>(%1%)", nullptr, Policy());
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("atanh<%1%>(%1%)", "Unknown error, result is a NaN", result, Policy());
|
||||
return result;
|
||||
@@ -2835,7 +2835,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_cbrt(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("cbrt<%1%>(%1%)", 0, Policy());
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("cbrt<%1%>(%1%)", nullptr, Policy());
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("cbrt<%1%>(%1%)", "Unknown error, result is a NaN", result, Policy());
|
||||
return result;
|
||||
@@ -2854,7 +2854,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_erf(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("erf<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("erf<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("erf<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -2873,7 +2873,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_erfc(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("erfc<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("erfc<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("erfc<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -2892,7 +2892,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_expm1(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("expm1<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("expm1<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("expm1<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -2941,7 +2941,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
}
|
||||
}
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("lgamma<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("lgamma<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("lgamma<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -2971,7 +2971,7 @@ inline typename std::enable_if<boost::math::policies::is_policy<Policy>::value,
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_gamma(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("tgamma<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("tgamma<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("tgamma<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -2990,7 +2990,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_log1p(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return (arg == -1 ? -1 : 1) * policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("log1p<%1%>(%1%)", 0, pol);
|
||||
return (arg == -1 ? -1 : 1) * policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("log1p<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("log1p<%1%>(%1%)", "Unknown error, result is a NaN", result, pol);
|
||||
return result;
|
||||
@@ -3009,7 +3009,7 @@ inline boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<D
|
||||
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result;
|
||||
mpfr_rec_sqrt(result.backend().data(), arg.backend().data(), GMP_RNDN);
|
||||
if (mpfr_inf_p(result.backend().data()))
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("rsqrt<%1%>(%1%)", 0, pol);
|
||||
return policies::raise_overflow_error<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >("rsqrt<%1%>(%1%)", nullptr, pol);
|
||||
if (mpfr_nan_p(result.backend().data()))
|
||||
return policies::raise_evaluation_error("rsqrt<%1%>(%1%)", "Negative argument, result is a NaN", result, pol);
|
||||
return result;
|
||||
|
||||
@@ -36,7 +36,7 @@ struct arithmetic_backend
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend() : m_value(0) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend(const arithmetic_backend& o) : m_value(o.m_value) {}
|
||||
template <class A>
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend(const A& o, const typename std::enable_if<boost::multiprecision::detail::is_arithmetic<A>::value && std::numeric_limits<A>::is_specialized>::type* = 0) : m_value(o) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend(const A& o, const typename std::enable_if<boost::multiprecision::detail::is_arithmetic<A>::value && std::numeric_limits<A>::is_specialized>::type* = nullptr) : m_value(o) {}
|
||||
template <class A>
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend(const arithmetic_backend<A>& o) : m_value(o.data()) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR arithmetic_backend& operator=(const arithmetic_backend& o)
|
||||
|
||||
Reference in New Issue
Block a user