Replace 0 as null pointer constant with nullptr

This commit is contained in:
Matt Borland
2022-07-11 13:25:22 -07:00
parent 87579e39fd
commit 01f476d229
7 changed files with 53 additions and 53 deletions
@@ -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)\
+6 -6
View File
@@ -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;
}
+6 -6
View File
@@ -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>;
+4 -4
View File
@@ -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);
}
+5 -5
View File
@@ -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());
+16 -16
View File
@@ -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;
+1 -1
View File
@@ -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)