mirror of
https://github.com/boostorg/math.git
synced 2026-01-28 07:22:12 +00:00
Merge branch 'cstdfloat' of https://github.com/boostorg/math into cstdfloat
This commit is contained in:
@@ -10,6 +10,8 @@ local ntl-path = [ modules.peek : NTL_PATH ] ;
|
||||
local gmp_path = [ modules.peek : GMP_PATH ] ;
|
||||
local e_float_path = [ modules.peek : E_FLOAT_PATH ] ;
|
||||
|
||||
lib quadmath ;
|
||||
|
||||
obj has_long_double_support : has_long_double_support.cpp ;
|
||||
obj has_mpfr_class : has_mpfr_class.cpp :
|
||||
<include>$(gmp_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx ;
|
||||
@@ -21,6 +23,8 @@ obj has_gmpxx : has_gmpxx.cpp :
|
||||
obj has_gcc_visibility : has_gcc_visibility.cpp :
|
||||
<toolset>gcc:<cxxflags>-fvisibility=hidden <toolset>gcc:<cxxflags>-Werror ;
|
||||
obj has_e_float : has_e_float.cpp : <include>$(e_float_path) ;
|
||||
exe has_float128 : has_float128.cpp quadmath ;
|
||||
exe has_intel_quad : has_intel_quad.cpp : <cxxflags>-Qoption,cpp,--extended_float_type ;
|
||||
|
||||
explicit has_long_double_support ;
|
||||
explicit has_mpfr_class ;
|
||||
@@ -29,3 +33,5 @@ explicit has_ntl_rr ;
|
||||
explicit has_gmpxx ;
|
||||
explicit has_gcc_visibility ;
|
||||
explicit has_e_float ;
|
||||
explicit has_float128 ;
|
||||
explicit has_intel_quad ;
|
||||
|
||||
17
config/has_float128.cpp
Normal file
17
config/has_float128.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright John Maddock 2013.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
extern "C" {
|
||||
#include <quadmath.h>
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
__float128 f = -2.0Q;
|
||||
f = fabsq(f);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
16
config/has_intel_quad.cpp
Normal file
16
config/has_intel_quad.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
// Copyright John Maddock 2013.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
extern "C" _Quad __fabs(_Quad);
|
||||
|
||||
int main()
|
||||
{
|
||||
_Quad f = -2.0Q;
|
||||
f = __fabsq(f);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ struct lanczos22UDT : public mpl::int_<120>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2.50662827463100050241576528481104525333))
|
||||
};
|
||||
static const T denom[22] = {
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2432902008176640000.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 8752948036761600000.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 13803759753640704000.0)),
|
||||
@@ -74,11 +74,11 @@ struct lanczos22UDT : public mpl::int_<120>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 756111184500.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 40171771630.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1672280820.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 53327946)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1256850)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 20615)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 210)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1))
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 53327946.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1256850.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 20615.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 210.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1.0))
|
||||
};
|
||||
return boost::math::tools::evaluate_rational(num, denom, z);
|
||||
}
|
||||
@@ -112,7 +112,7 @@ struct lanczos22UDT : public mpl::int_<120>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.3765495513732730583386223384116545391759e-9))
|
||||
};
|
||||
static const T denom[22] = {
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2432902008176640000.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 8752948036761600000.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 13803759753640704000.0)),
|
||||
@@ -131,9 +131,9 @@ struct lanczos22UDT : public mpl::int_<120>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1672280820.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 53327946.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1256850.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 20615)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 210)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1))
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 20615.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 210.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1.0))
|
||||
};
|
||||
return boost::math::tools::evaluate_rational(num, denom, z);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <boost/math/special_functions/math_fwd.hpp>
|
||||
#include <boost/math/bindings/detail/big_digamma.hpp>
|
||||
#include <boost/math/bindings/detail/big_lanczos.hpp>
|
||||
#include <boost/math/tools/big_constant.hpp>
|
||||
|
||||
inline mpfr_class fabs(const mpfr_class& v)
|
||||
{
|
||||
@@ -180,7 +181,14 @@ inline long long lltrunc(__gmp_expr<T,U> const& x, const Policy& pol)
|
||||
return lltrunc(static_cast<mpfr_class>(x), pol);
|
||||
}
|
||||
|
||||
namespace boost{ namespace math{
|
||||
namespace boost{
|
||||
|
||||
#ifdef BOOST_MATH_USE_FLOAT128
|
||||
template<> struct is_convertible<boost::floatmax_t, mpfr_class> : public boost::integral_constant<bool, false>{};
|
||||
#endif
|
||||
template<> struct is_convertible<long long, mpfr_class> : public boost::integral_constant<bool, false>{};
|
||||
|
||||
namespace math{
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ < 4)
|
||||
using ::iround;
|
||||
|
||||
@@ -328,7 +328,7 @@ namespace tools
|
||||
{
|
||||
|
||||
template <>
|
||||
inline concepts::real_concept make_big_value<concepts::real_concept>(long double val, const char* , mpl::false_ const&, mpl::false_ const&)
|
||||
inline concepts::real_concept make_big_value<concepts::real_concept>(boost::floatmax_t val, const char* , mpl::false_ const&, mpl::false_ const&)
|
||||
{
|
||||
return val; // Can't use lexical_cast here, sometimes it fails....
|
||||
}
|
||||
|
||||
@@ -333,7 +333,7 @@ namespace tools
|
||||
{
|
||||
|
||||
template <>
|
||||
inline concepts::std_real_concept make_big_value<concepts::std_real_concept>(long double val, const char* , mpl::false_ const&, mpl::false_ const&)
|
||||
inline concepts::std_real_concept make_big_value<concepts::std_real_concept>(boost::floatmax_t val, const char*, mpl::false_ const&, mpl::false_ const&)
|
||||
{
|
||||
return val; // Can't use lexical_cast here, sometimes it fails....
|
||||
}
|
||||
|
||||
@@ -78,6 +78,27 @@ inline std::string do_format(Formatter f, const Group& g)
|
||||
return (f % g).str();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline const char* name_of()
|
||||
{
|
||||
#ifndef BOOST_NO_RTTI
|
||||
return typeid(T).name();
|
||||
#else
|
||||
return "unknown";
|
||||
#endif
|
||||
}
|
||||
template <> inline const char* name_of<float>(){ return "float"; }
|
||||
template <> inline const char* name_of<double>(){ return "double"; }
|
||||
template <> inline const char* name_of<long double>(){ return "long double"; }
|
||||
|
||||
#ifdef BOOST_MATH_USE_FLOAT128
|
||||
template <>
|
||||
inline const char* name_of<BOOST_MATH_FLOAT128_TYPE>()
|
||||
{
|
||||
return "__float128";
|
||||
}
|
||||
#endif
|
||||
|
||||
template <class E, class T>
|
||||
void raise_error(const char* function, const char* message)
|
||||
{
|
||||
@@ -88,7 +109,7 @@ void raise_error(const char* function, const char* message)
|
||||
|
||||
std::string msg("Error in function ");
|
||||
#ifndef BOOST_NO_RTTI
|
||||
msg += (boost::format(function) % typeid(T).name()).str();
|
||||
msg += (boost::format(function) % boost::math::policies::detail::name_of<T>()).str();
|
||||
#else
|
||||
msg += function;
|
||||
#endif
|
||||
@@ -109,7 +130,7 @@ void raise_error(const char* function, const char* message, const T& val)
|
||||
|
||||
std::string msg("Error in function ");
|
||||
#ifndef BOOST_NO_RTTI
|
||||
msg += (boost::format(function) % typeid(T).name()).str();
|
||||
msg += (boost::format(function) % boost::math::policies::detail::name_of<T>()).str();
|
||||
#else
|
||||
msg += function;
|
||||
#endif
|
||||
@@ -300,7 +321,7 @@ inline T raise_overflow_error(
|
||||
{
|
||||
std::string fmsg("Error in function ");
|
||||
#ifndef BOOST_NO_RTTI
|
||||
fmsg += (boost::format(function) % typeid(T).name()).str();
|
||||
fmsg += (boost::format(function) % boost::math::policies::detail::name_of<T>()).str();
|
||||
#else
|
||||
fmsg += function;
|
||||
#endif
|
||||
|
||||
@@ -64,7 +64,7 @@ inline T cyl_bessel_j_prime_imp(T v, T x, const Policy& pol)
|
||||
inversed = true;
|
||||
}
|
||||
T r = boost::math::detail::bessel_j_derivative_small_z_series(v, x, pol);
|
||||
return inversed ? -r : r;
|
||||
return inversed ? T(-r) : r;
|
||||
}
|
||||
//
|
||||
// Special case for v == 0:
|
||||
@@ -93,7 +93,7 @@ inline T sph_bessel_j_prime_imp(unsigned v, T x, const Policy& pol)
|
||||
//
|
||||
if (v == 0)
|
||||
return (x == 0) ? boost::math::policies::raise_overflow_error<T>(function, 0, pol)
|
||||
: -boost::math::detail::sph_bessel_j_imp<T>(1, x, pol);
|
||||
: static_cast<T>(-boost::math::detail::sph_bessel_j_imp<T>(1, x, pol));
|
||||
//
|
||||
// Special case for x == 0 and v > 0:
|
||||
//
|
||||
|
||||
@@ -87,7 +87,7 @@ T b2n_asymptotic(int n)
|
||||
+ ((nx * (T(2) - (nx2 * 7) * (1 + ((nx2 * 30) * ((nx2 * 12) - 1))))) / (((nx2 * nx2) * nx2) * 2520));
|
||||
return ((n / 2) & 1 ? 1 : -1) * (approximate_log_of_bernoulli_bn > tools::log_max_value<T>()
|
||||
? policies::raise_overflow_error<T>("boost::math::bernoulli_b2n<%1%>(std::size_t)", 0, nx, Policy())
|
||||
: exp(approximate_log_of_bernoulli_bn));
|
||||
: static_cast<T>(exp(approximate_log_of_bernoulli_bn)));
|
||||
}
|
||||
|
||||
template <class T, class Policy>
|
||||
@@ -369,7 +369,7 @@ public:
|
||||
while(i < m)
|
||||
{
|
||||
b = std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : tools::max_value<T>();
|
||||
bn[static_cast<typename container_type::size_type>(i)] = ((i % 2U) ? b : -b);
|
||||
bn[static_cast<typename container_type::size_type>(i)] = ((i % 2U) ? b : T(-b));
|
||||
++i;
|
||||
}
|
||||
break;
|
||||
@@ -383,7 +383,7 @@ public:
|
||||
|
||||
const bool b_neg = i % 2 == 0;
|
||||
|
||||
bn[static_cast<typename container_type::size_type>(i)] = ((!b_neg) ? b : -b);
|
||||
bn[static_cast<typename container_type::size_type>(i)] = ((!b_neg) ? b : T(-b));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace boost { namespace math { namespace detail{
|
||||
template <typename T, typename Policy>
|
||||
T bessel_kn(int n, T x, const Policy& pol)
|
||||
{
|
||||
BOOST_MATH_STD_USING
|
||||
T value, current, prev;
|
||||
|
||||
using namespace boost::math::tools;
|
||||
|
||||
@@ -92,7 +92,7 @@ T erf_inv_imp(const T& p, const T& q, const Policy&, const boost::mpl::int_<64>*
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -3.67192254707729348546)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 6.24264124854247537712),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 3.9713437953343869095),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -28.6608180499800029974),
|
||||
@@ -176,7 +176,7 @@ T erf_inv_imp(const T& p, const T& q, const Policy&, const boost::mpl::int_<64>*
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.266339227425782031962e-11)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.3653349817554063097),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.762059164553623404043),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.220091105764131249824),
|
||||
@@ -204,7 +204,7 @@ T erf_inv_imp(const T& p, const T& q, const Policy&, const boost::mpl::int_<64>*
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.99055709973310326855e-16)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.591429344886417493481),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.138151865749083321638),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0160746087093676504695),
|
||||
@@ -231,7 +231,7 @@ T erf_inv_imp(const T& p, const T& q, const Policy&, const boost::mpl::int_<64>*
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.116765012397184275695e-17)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.207123112214422517181),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0169410838120975906478),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.000690538265622684595676),
|
||||
@@ -258,7 +258,7 @@ T erf_inv_imp(const T& p, const T& q, const Policy&, const boost::mpl::int_<64>*
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.348890393399948882918e-21)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0845746234001899436914),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.00282092984726264681981),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.468292921940894236786e-4),
|
||||
|
||||
@@ -278,7 +278,7 @@ T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<113>&, const Policy& /* l
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.70529798686542184668416911331718963364e-8)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.5877485070422317542808137697939233685),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.8797959228352591788629602533153837126),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.8030885955284082026405495275461180977),
|
||||
|
||||
@@ -268,6 +268,196 @@ struct max_factorial<long double>
|
||||
BOOST_STATIC_CONSTANT(unsigned, value = 170);
|
||||
};
|
||||
|
||||
#ifdef BOOST_MATH_USE_FLOAT128
|
||||
|
||||
template <>
|
||||
inline BOOST_MATH_FLOAT128_TYPE unchecked_factorial<BOOST_MATH_FLOAT128_TYPE>(unsigned i)
|
||||
{
|
||||
static const boost::array<BOOST_MATH_FLOAT128_TYPE, 171> factorials = { {
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
6,
|
||||
24,
|
||||
120,
|
||||
720,
|
||||
5040,
|
||||
40320,
|
||||
362880.0Q,
|
||||
3628800.0Q,
|
||||
39916800.0Q,
|
||||
479001600.0Q,
|
||||
6227020800.0Q,
|
||||
87178291200.0Q,
|
||||
1307674368000.0Q,
|
||||
20922789888000.0Q,
|
||||
355687428096000.0Q,
|
||||
6402373705728000.0Q,
|
||||
121645100408832000.0Q,
|
||||
0.243290200817664e19Q,
|
||||
0.5109094217170944e20Q,
|
||||
0.112400072777760768e22Q,
|
||||
0.2585201673888497664e23Q,
|
||||
0.62044840173323943936e24Q,
|
||||
0.15511210043330985984e26Q,
|
||||
0.403291461126605635584e27Q,
|
||||
0.10888869450418352160768e29Q,
|
||||
0.304888344611713860501504e30Q,
|
||||
0.8841761993739701954543616e31Q,
|
||||
0.26525285981219105863630848e33Q,
|
||||
0.822283865417792281772556288e34Q,
|
||||
0.26313083693369353016721801216e36Q,
|
||||
0.868331761881188649551819440128e37Q,
|
||||
0.29523279903960414084761860964352e39Q,
|
||||
0.103331479663861449296666513375232e41Q,
|
||||
0.3719933267899012174679994481508352e42Q,
|
||||
0.137637530912263450463159795815809024e44Q,
|
||||
0.5230226174666011117600072241000742912e45Q,
|
||||
0.203978820811974433586402817399028973568e47Q,
|
||||
0.815915283247897734345611269596115894272e48Q,
|
||||
0.3345252661316380710817006205344075166515e50Q,
|
||||
0.1405006117752879898543142606244511569936e52Q,
|
||||
0.6041526306337383563735513206851399750726e53Q,
|
||||
0.265827157478844876804362581101461589032e55Q,
|
||||
0.1196222208654801945619631614956577150644e57Q,
|
||||
0.5502622159812088949850305428800254892962e58Q,
|
||||
0.2586232415111681806429643551536119799692e60Q,
|
||||
0.1241391559253607267086228904737337503852e62Q,
|
||||
0.6082818640342675608722521633212953768876e63Q,
|
||||
0.3041409320171337804361260816606476884438e65Q,
|
||||
0.1551118753287382280224243016469303211063e67Q,
|
||||
0.8065817517094387857166063685640376697529e68Q,
|
||||
0.427488328406002556429801375338939964969e70Q,
|
||||
0.2308436973392413804720927426830275810833e72Q,
|
||||
0.1269640335365827592596510084756651695958e74Q,
|
||||
0.7109985878048634518540456474637249497365e75Q,
|
||||
0.4052691950487721675568060190543232213498e77Q,
|
||||
0.2350561331282878571829474910515074683829e79Q,
|
||||
0.1386831185456898357379390197203894063459e81Q,
|
||||
0.8320987112741390144276341183223364380754e82Q,
|
||||
0.507580213877224798800856812176625227226e84Q,
|
||||
0.3146997326038793752565312235495076408801e86Q,
|
||||
0.1982608315404440064116146708361898137545e88Q,
|
||||
0.1268869321858841641034333893351614808029e90Q,
|
||||
0.8247650592082470666723170306785496252186e91Q,
|
||||
0.5443449390774430640037292402478427526443e93Q,
|
||||
0.3647111091818868528824985909660546442717e95Q,
|
||||
0.2480035542436830599600990418569171581047e97Q,
|
||||
0.1711224524281413113724683388812728390923e99Q,
|
||||
0.1197857166996989179607278372168909873646e101Q,
|
||||
0.8504785885678623175211676442399260102886e102Q,
|
||||
0.6123445837688608686152407038527467274078e104Q,
|
||||
0.4470115461512684340891257138125051110077e106Q,
|
||||
0.3307885441519386412259530282212537821457e108Q,
|
||||
0.2480914081139539809194647711659403366093e110Q,
|
||||
0.188549470166605025498793226086114655823e112Q,
|
||||
0.1451830920282858696340707840863082849837e114Q,
|
||||
0.1132428117820629783145752115873204622873e116Q,
|
||||
0.8946182130782975286851441715398316520698e117Q,
|
||||
0.7156945704626380229481153372318653216558e119Q,
|
||||
0.5797126020747367985879734231578109105412e121Q,
|
||||
0.4753643337012841748421382069894049466438e123Q,
|
||||
0.3945523969720658651189747118012061057144e125Q,
|
||||
0.3314240134565353266999387579130131288001e127Q,
|
||||
0.2817104114380550276949479442260611594801e129Q,
|
||||
0.2422709538367273238176552320344125971528e131Q,
|
||||
0.210775729837952771721360051869938959523e133Q,
|
||||
0.1854826422573984391147968456455462843802e135Q,
|
||||
0.1650795516090846108121691926245361930984e137Q,
|
||||
0.1485715964481761497309522733620825737886e139Q,
|
||||
0.1352001527678402962551665687594951421476e141Q,
|
||||
0.1243841405464130725547532432587355307758e143Q,
|
||||
0.1156772507081641574759205162306240436215e145Q,
|
||||
0.1087366156656743080273652852567866010042e147Q,
|
||||
0.103299784882390592625997020993947270954e149Q,
|
||||
0.9916779348709496892095714015418938011582e150Q,
|
||||
0.9619275968248211985332842594956369871234e152Q,
|
||||
0.942689044888324774562618574305724247381e154Q,
|
||||
0.9332621544394415268169923885626670049072e156Q,
|
||||
0.9332621544394415268169923885626670049072e158Q,
|
||||
0.9425947759838359420851623124482936749562e160Q,
|
||||
0.9614466715035126609268655586972595484554e162Q,
|
||||
0.990290071648618040754671525458177334909e164Q,
|
||||
0.1029901674514562762384858386476504428305e167Q,
|
||||
0.1081396758240290900504101305800329649721e169Q,
|
||||
0.1146280563734708354534347384148349428704e171Q,
|
||||
0.1226520203196137939351751701038733888713e173Q,
|
||||
0.132464181945182897449989183712183259981e175Q,
|
||||
0.1443859583202493582204882102462797533793e177Q,
|
||||
0.1588245541522742940425370312709077287172e179Q,
|
||||
0.1762952551090244663872161047107075788761e181Q,
|
||||
0.1974506857221074023536820372759924883413e183Q,
|
||||
0.2231192748659813646596607021218715118256e185Q,
|
||||
0.2543559733472187557120132004189335234812e187Q,
|
||||
0.2925093693493015690688151804817735520034e189Q,
|
||||
0.339310868445189820119825609358857320324e191Q,
|
||||
0.396993716080872089540195962949863064779e193Q,
|
||||
0.4684525849754290656574312362808384164393e195Q,
|
||||
0.5574585761207605881323431711741977155627e197Q,
|
||||
0.6689502913449127057588118054090372586753e199Q,
|
||||
0.8094298525273443739681622845449350829971e201Q,
|
||||
0.9875044200833601362411579871448208012564e203Q,
|
||||
0.1214630436702532967576624324188129585545e206Q,
|
||||
0.1506141741511140879795014161993280686076e208Q,
|
||||
0.1882677176888926099743767702491600857595e210Q,
|
||||
0.237217324288004688567714730513941708057e212Q,
|
||||
0.3012660018457659544809977077527059692324e214Q,
|
||||
0.3856204823625804217356770659234636406175e216Q,
|
||||
0.4974504222477287440390234150412680963966e218Q,
|
||||
0.6466855489220473672507304395536485253155e220Q,
|
||||
0.8471580690878820510984568758152795681634e222Q,
|
||||
0.1118248651196004307449963076076169029976e225Q,
|
||||
0.1487270706090685728908450891181304809868e227Q,
|
||||
0.1992942746161518876737324194182948445223e229Q,
|
||||
0.269047270731805048359538766214698040105e231Q,
|
||||
0.3659042881952548657689727220519893345429e233Q,
|
||||
0.5012888748274991661034926292112253883237e235Q,
|
||||
0.6917786472619488492228198283114910358867e237Q,
|
||||
0.9615723196941089004197195613529725398826e239Q,
|
||||
0.1346201247571752460587607385894161555836e242Q,
|
||||
0.1898143759076170969428526414110767793728e244Q,
|
||||
0.2695364137888162776588507508037290267094e246Q,
|
||||
0.3854370717180072770521565736493325081944e248Q,
|
||||
0.5550293832739304789551054660550388118e250Q,
|
||||
0.80479260574719919448490292577980627711e252Q,
|
||||
0.1174997204390910823947958271638517164581e255Q,
|
||||
0.1727245890454638911203498659308620231933e257Q,
|
||||
0.2556323917872865588581178015776757943262e259Q,
|
||||
0.380892263763056972698595524350736933546e261Q,
|
||||
0.571338395644585459047893286526105400319e263Q,
|
||||
0.8627209774233240431623188626544191544816e265Q,
|
||||
0.1311335885683452545606724671234717114812e268Q,
|
||||
0.2006343905095682394778288746989117185662e270Q,
|
||||
0.308976961384735088795856467036324046592e272Q,
|
||||
0.4789142901463393876335775239063022722176e274Q,
|
||||
0.7471062926282894447083809372938315446595e276Q,
|
||||
0.1172956879426414428192158071551315525115e279Q,
|
||||
0.1853271869493734796543609753051078529682e281Q,
|
||||
0.2946702272495038326504339507351214862195e283Q,
|
||||
0.4714723635992061322406943211761943779512e285Q,
|
||||
0.7590705053947218729075178570936729485014e287Q,
|
||||
0.1229694218739449434110178928491750176572e290Q,
|
||||
0.2004401576545302577599591653441552787813e292Q,
|
||||
0.3287218585534296227263330311644146572013e294Q,
|
||||
0.5423910666131588774984495014212841843822e296Q,
|
||||
0.9003691705778437366474261723593317460744e298Q,
|
||||
0.1503616514864999040201201707840084015944e301Q,
|
||||
0.2526075744973198387538018869171341146786e303Q,
|
||||
0.4269068009004705274939251888899566538069e305Q,
|
||||
0.7257415615307998967396728211129263114717e307Q,
|
||||
} };
|
||||
|
||||
return factorials[i];
|
||||
}
|
||||
|
||||
template <>
|
||||
struct max_factorial<BOOST_MATH_FLOAT128_TYPE>
|
||||
{
|
||||
BOOST_STATIC_CONSTANT(unsigned, value = 170);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
template <>
|
||||
inline double unchecked_factorial<double>(unsigned i BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(double))
|
||||
{
|
||||
|
||||
@@ -286,7 +286,7 @@ T digamma_imp_1_2(T x, const mpl::int_<53>*)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.0020713321167745952)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 2.0767117023730469),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.4606242909763515),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.43593529692665969),
|
||||
|
||||
@@ -291,7 +291,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<53>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.000235839115596880717416),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.53991494948552447182),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.982403709157920235114),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.325732924782444448493),
|
||||
@@ -317,7 +317,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<53>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.113212406648847561139e-4),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.04217814166938418171),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.442597659481563127003),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.0958492726301061423444),
|
||||
@@ -344,7 +344,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<53>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -2.8175401114513378771),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 2.79257750980575282228),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 11.0567237927800161565),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 15.930646027911794143),
|
||||
@@ -428,7 +428,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<64>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.200305626366151877759e-4),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.455817300515875172439),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0916537354356241792007),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0102722652675910031202),
|
||||
@@ -462,7 +462,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<64>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.266689068336295642561e-7),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 2.03237474985469469291),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.78355454954969405222),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.867940326293760578231),
|
||||
@@ -490,7 +490,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<64>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.515917266698050027934e-4),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.71657861671930336344),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.26409634824280366218),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.512371437838969015941),
|
||||
@@ -518,7 +518,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<64>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.189896043050331257262e-5),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.19352160185285642574),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.603256964363454392857),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.165411142458540585835),
|
||||
@@ -548,7 +548,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<64>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -16.8865774499799676937),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 4.72948911186645394541),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 23.6750543147695749212),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 60.0021517335693186785),
|
||||
@@ -636,7 +636,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.344448249920445916714548295433198544e-7),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.466542092785657604666906909196052522),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.100005087012526447295176964142107611),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0128341535890117646540050072234142603),
|
||||
@@ -674,7 +674,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.436544865032836914773944382339900079e-5),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.47651182872457465043733800302427977),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.78706486002517996428836400245547955),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.87295924621659627926365005293130693),
|
||||
@@ -709,7 +709,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.133166058052466262415271732172490045e-5),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.32970330146503867261275580968135126),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.46325715420422771961250513514928746),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.55307882560757679068505047390857842),
|
||||
@@ -743,7 +743,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.312857043762117596999398067153076051e-6),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.13506082409097783827103424943508554),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.06399257267556230937723190496806215),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.18678481279932541314830499880691109),
|
||||
@@ -778,7 +778,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.676586625472423508158937481943649258e-7),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.93669171363907292305550231764920001),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.69468476144051356810672506101377494),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.880023580986436640372794392579985511),
|
||||
@@ -811,7 +811,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.971120407556888763695313774578711839e-7),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.59911256167540354915906501335919317),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.136006830764025173864831382946934),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.468565867990030871678574840738423023),
|
||||
@@ -845,7 +845,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.156161469668275442569286723236274457e-9),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.52955245103668419479878456656709381),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.06263944820093830054635017117417064),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.441684612681607364321013134378316463),
|
||||
@@ -880,7 +880,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.673002744115866600294723141176820155e-10),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.12843690320861239631195353379313367),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.569900657061622955362493442186537259),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.169094404206844928112348730277514273),
|
||||
@@ -914,7 +914,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.119735694018906705225870691331543806e-8),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.69889613396167354566098060039549882),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.28824647372749624464956031163282674),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.572297795434934493541628008224078717),
|
||||
@@ -950,7 +950,7 @@ T erf_imp(T z, bool invert, const Policy& pol, const mpl::int_<113>& t)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -60.0530577077238079968843307523245547),
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 3.49040448075464744191022350947892036),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 34.3563592467165971295915749548313227),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 84.4993232033879023178285731843850461),
|
||||
|
||||
@@ -55,7 +55,7 @@ T expint_1_rational(const T& z, const mpl::int_<53>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.000111507792921197858394)
|
||||
};
|
||||
static const T Q[6] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.37091387659397013215),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.056770677104207528384),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.00427347600017103698101),
|
||||
@@ -84,7 +84,7 @@ T expint_1_rational(const T& z, const mpl::int_<53>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -1185.45720315201027667)
|
||||
};
|
||||
static const T Q[12] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 45.3058660811801465927),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 809.193214954550328455),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 7417.37624454689546708),
|
||||
@@ -130,7 +130,7 @@ T expint_1_rational(const T& z, const mpl::int_<64>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.30853660894346057053e-4)
|
||||
};
|
||||
static const T Q[7] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.317978365797784100273),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0393622602554758722511),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.00204062029115966323229),
|
||||
@@ -163,7 +163,7 @@ T expint_1_rational(const T& z, const mpl::int_<64>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -2038.82870680427258038)
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 64.1517806091379399478),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1690.76044393722763785),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 24035.9534033068949426),
|
||||
@@ -215,7 +215,7 @@ T expint_1_rational(const T& z, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.340500302777838063940402160594523429e-9)
|
||||
};
|
||||
static const T Q[10] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.426568827778942588160423015589537302),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0841384046470893490592450881447510148),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0100557215850668029618957359471132995),
|
||||
@@ -256,7 +256,7 @@ T expint_1_rational(const T& z, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -1.51492042209561411434644938098833499)
|
||||
};
|
||||
static const T Q[16] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 46.734521442032505570517810766704587),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 908.694714348462269000247450058595655),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 9701.76053033673927362784882748513195),
|
||||
@@ -305,7 +305,7 @@ T expint_1_rational(const T& z, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -68028222642.1941480871395695677675137)
|
||||
};
|
||||
static const T Q[20] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 168.542326331163836642960118190147311),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 12535.7237814586576783518249115343619),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 544891.263372016404143120911148640627),
|
||||
@@ -541,7 +541,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.2777056254402008721e-6)
|
||||
};
|
||||
static const T Q[8] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -1.17090412365413911947),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.62215109846016746276),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.195114782069495403315),
|
||||
@@ -587,7 +587,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.396487648924804510056e-5)
|
||||
};
|
||||
static const T Q[8] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.744625566823272107711),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.329061095011767059236),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 0.100128624977313872323),
|
||||
@@ -621,7 +621,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.138652200349182596186e-4)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.97017214039061194971),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.86232465043073157508),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.09601437090337519977),
|
||||
@@ -657,7 +657,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -0.113161784705911400295e-9)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 2.84354408840148561131),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 3.6599610090072393012),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 2.75088464344293083595),
|
||||
@@ -686,7 +686,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -38703.1431362056714134)
|
||||
};
|
||||
static const T Q[7] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 61.9733592849439884145),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, -2354.56211323420194283),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 53, 22329.1459489893079041),
|
||||
@@ -757,7 +757,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.177833045143692498221e-7)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -1.20352377969742325748),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.66707904942606479811),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.223014531629140771914),
|
||||
@@ -806,7 +806,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.377246883283337141444e-6)
|
||||
};
|
||||
static const T Q[10] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.08073635708902053767),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.553681133533942532909),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.176763647137553797451),
|
||||
@@ -844,7 +844,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.252788029251437017959e-5)
|
||||
};
|
||||
static const T Q[10] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 2.00323265503572414261),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.94688958187256383178),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.19733638134417472296),
|
||||
@@ -883,7 +883,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.533769629702262072175e-11)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 3.13286733695729715455),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 4.49281223045653491929),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 3.84900294427622911374),
|
||||
@@ -921,7 +921,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 137839271.592778020028)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 27.2103343964943718802),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -8785.48528692879413676),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 397530.290000322626766),
|
||||
@@ -989,7 +989,7 @@ void expint_i_imp_113a(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.306243138978114692252817805327426657e-13)
|
||||
};
|
||||
static const T Q[15] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -1.40178870313943798705491944989231793),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.943810968269701047641218856758605284),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.405026631534345064600850391026113165),
|
||||
@@ -1057,7 +1057,7 @@ void expint_i_113b(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.384276705503357655108096065452950822e-12)
|
||||
};
|
||||
static const T Q[15] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.58784732785354597996617046880946257),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.18550755302279446339364262338114098),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.55598993549661368604527040349702836),
|
||||
@@ -1110,7 +1110,7 @@ void expint_i_113c(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.869226483473172853557775877908693647e-15)
|
||||
};
|
||||
static const T Q[15] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.23227220874479061894038229141871087),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.40221000361027971895657505660959863),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.65476320985936174728238416007084214),
|
||||
@@ -1159,7 +1159,7 @@ void expint_i_113d(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.133141358866324100955927979606981328e-10)
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.72490783907582654629537013560044682),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.44524329516800613088375685659759765),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.778241785539308257585068744978050181),
|
||||
@@ -1211,7 +1211,7 @@ void expint_i_113e(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.105428907085424234504608142258423505e-8)
|
||||
};
|
||||
static const T Q[16] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 3.17261315255467581204685605414005525),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 4.85267952971640525245338392887217426),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 4.74341914912439861451492872946725151),
|
||||
@@ -1262,7 +1262,7 @@ void expint_i_113f(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.107839681938752337160494412638656696e-8)
|
||||
};
|
||||
static const T Q[12] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.09913805456661084097134805151524958),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.07041755535439919593503171320431849),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.26406517226052371320416108604874734),
|
||||
@@ -1308,7 +1308,7 @@ void expint_i_113g(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.720558173805289167524715527536874694e-7)
|
||||
};
|
||||
static const T Q[11] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 2.95918362458402597039366979529287095),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 3.96472247520659077944638411856748924),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 3.15563251550528513747923714884142131),
|
||||
@@ -1351,7 +1351,7 @@ void expint_i_113h(T& result, const T& z)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -6758379.93672362080947905580906028645)
|
||||
};
|
||||
static const T Q[10] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -99.4868026047611434569541483506091713),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 3879.67753690517114249705089803055473),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -76495.82413252517165830203774900806),
|
||||
@@ -1432,7 +1432,7 @@ T expint_i_imp(T z, const Policy& pol, const mpl::int_<113>& tag)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 175864.614717440010942804684741336853)
|
||||
};
|
||||
static const T Q[9] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -65.6998869881600212224652719706425129),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1642.73850032324014781607859416890077),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -19937.2610222467322481947237312818575),
|
||||
|
||||
@@ -1068,7 +1068,7 @@ struct lanczos24m113 : public mpl::int_<113>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2.50662827463100050241576528481104515966515623051532908941425544355490413900497467936202516))
|
||||
};
|
||||
static const T denom[24] = {
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.112400072777760768e22)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.414847677933545472e22)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6756146673770930688000.0)),
|
||||
@@ -1087,11 +1087,11 @@ struct lanczos24m113 : public mpl::int_<113>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3256091103430.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 136717357942.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4546047198.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1))
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1.0))
|
||||
};
|
||||
return boost::math::tools::evaluate_rational(num, denom, z);
|
||||
}
|
||||
@@ -1127,7 +1127,7 @@ struct lanczos24m113 : public mpl::int_<113>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.374799931707148855771381263542708435935402853962736029347951399323367765509988401336565436e-8))
|
||||
};
|
||||
static const T denom[24] = {
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.112400072777760768e22)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.414847677933545472e22)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6756146673770930688000.0)),
|
||||
@@ -1146,11 +1146,11 @@ struct lanczos24m113 : public mpl::int_<113>
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3256091103430.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 136717357942.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4546047198.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1))
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253.0)),
|
||||
static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1.0))
|
||||
};
|
||||
return boost::math::tools::evaluate_rational(num, denom, z);
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ T log1p_imp(T const& x, const Policy& pol, const mpl::int_<64>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.00441709903782239229447)
|
||||
};
|
||||
static const T Q[] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 4.26423872346263928361),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 7.48189472704477708962),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 6.94757016732904280913),
|
||||
|
||||
@@ -378,7 +378,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<64>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.279496685273033761927e-4),
|
||||
};
|
||||
static const T Q[7] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.30425480068225790522),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.050052748580371598736),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, -0.00519355671064700627862),
|
||||
@@ -406,7 +406,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<64>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.700867470265983665042e-5),
|
||||
};
|
||||
static const T Q[7] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.259385759149531030085),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.0373974962106091316854),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 64, 0.00332735159183332820617),
|
||||
@@ -554,7 +554,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
// Max error found at long double precision: 7.281332e-31
|
||||
|
||||
static const T P[10] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.0353008629988648122808504280990313668),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0107795651204927743049369868548706909),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.000523961870530500751114866884685172975),
|
||||
@@ -566,7 +566,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.113103113698388531428914333768142527e-10),
|
||||
};
|
||||
static const T Q[11] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.387483472099602327112637481818565459),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0802265315091063135271497708694776875),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.0110727276164171919280036408995078164),
|
||||
@@ -600,7 +600,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.835774625259919268768735944711219256e-11),
|
||||
};
|
||||
static const T Q[11] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.316661751179735502065583176348292881),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0540401806533507064453851182728635272),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.00598621274107420237785899476374043797),
|
||||
@@ -636,7 +636,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.340169592866058506675897646629036044e-12),
|
||||
};
|
||||
static const T Q[12] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.363755247765087100018556983050520554),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0696581979014242539385695131258321598),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.00882208914484611029571547753782014817),
|
||||
@@ -675,7 +675,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.15090220092460596872172844424267351e-10),
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.69490865837142338462982225731926485),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.22697696630994080733321401255942464),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.495409420862526540074366618006341533),
|
||||
@@ -715,7 +715,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.420204769185233365849253969097184005e-12),
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.97663511666410096104783358493318814),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.40878780231201806504987368939673249),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0963890666609396058945084107597727252),
|
||||
@@ -753,7 +753,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.289187187441625868404494665572279364e-15),
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.427310044448071818775721584949868806),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.074602514873055756201435421385243062),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.00688651562174480772901425121653945942),
|
||||
@@ -792,7 +792,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.402663128248642002351627980255756363e-16),
|
||||
};
|
||||
static const T Q[14] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.311288325355705609096155335186466508),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0438318468940415543546769437752132748),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.00374396349183199548610264222242269536),
|
||||
@@ -831,7 +831,7 @@ T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, -0.376708747782400769427057630528578187e-19),
|
||||
};
|
||||
static const T Q[16] = {
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.205076752981410805177554569784219717),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.0202526722696670378999575738524540269),
|
||||
BOOST_MATH_BIG_CONSTANT(T, 113, 0.001278305290005994980069466658219057),
|
||||
|
||||
@@ -12,30 +12,31 @@
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#endif
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/cstdfloat.hpp>
|
||||
|
||||
namespace boost{ namespace math{
|
||||
|
||||
namespace tools{
|
||||
|
||||
template <class T>
|
||||
inline BOOST_CONSTEXPR_OR_CONST T make_big_value(long double v, const char*, mpl::true_ const&, mpl::false_ const&)
|
||||
inline BOOST_CONSTEXPR_OR_CONST T make_big_value(boost::floatmax_t v, const char*, mpl::true_ const&, mpl::false_ const&)
|
||||
{
|
||||
return static_cast<T>(v);
|
||||
}
|
||||
template <class T>
|
||||
inline BOOST_CONSTEXPR_OR_CONST T make_big_value(long double v, const char*, mpl::true_ const&, mpl::true_ const&)
|
||||
inline BOOST_CONSTEXPR_OR_CONST T make_big_value(boost::floatmax_t v, const char*, mpl::true_ const&, mpl::true_ const&)
|
||||
{
|
||||
return static_cast<T>(v);
|
||||
}
|
||||
#ifndef BOOST_MATH_NO_LEXICAL_CAST
|
||||
template <class T>
|
||||
inline T make_big_value(long double, const char* s, mpl::false_ const&, mpl::false_ const&)
|
||||
inline T make_big_value(boost::floatmax_t, const char* s, mpl::false_ const&, mpl::false_ const&)
|
||||
{
|
||||
return boost::lexical_cast<T>(s);
|
||||
}
|
||||
#endif
|
||||
template <class T>
|
||||
inline BOOST_CONSTEXPR const char* make_big_value(long double, const char* s, mpl::false_ const&, mpl::true_ const&)
|
||||
inline BOOST_CONSTEXPR const char* make_big_value(boost::floatmax_t, const char* s, mpl::false_ const&, mpl::true_ const&)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
@@ -45,13 +46,13 @@ inline BOOST_CONSTEXPR const char* make_big_value(long double, const char* s, mp
|
||||
//
|
||||
#define BOOST_MATH_BIG_CONSTANT(T, D, x)\
|
||||
boost::math::tools::make_big_value<T>(\
|
||||
BOOST_JOIN(x, L), \
|
||||
BOOST_FLOATMAX_C(x), \
|
||||
BOOST_STRINGIZE(x), \
|
||||
mpl::bool_< (is_convertible<long double, T>::value) && \
|
||||
((D <= std::numeric_limits<long double>::digits) \
|
||||
mpl::bool_< (is_convertible<boost::floatmax_t, T>::value) && \
|
||||
((D <= std::numeric_limits<boost::floatmax_t>::digits) \
|
||||
|| is_floating_point<T>::value \
|
||||
|| (std::numeric_limits<T>::is_specialized && \
|
||||
(std::numeric_limits<T>::digits10 <= std::numeric_limits<long double>::digits10))) >(), \
|
||||
(std::numeric_limits<T>::digits10 <= std::numeric_limits<boost::floatmax_t>::digits10))) >(), \
|
||||
boost::is_convertible<const char*, T>())
|
||||
//
|
||||
// For constants too huge for any conceivable long double (and which generate compiler errors if we try and declare them as such):
|
||||
|
||||
@@ -217,6 +217,18 @@
|
||||
// intel too don't support __float128 yet :-(
|
||||
//
|
||||
# define BOOST_MATH_USE_FLOAT128
|
||||
|
||||
# if defined(BOOST_INTEL) && defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION >= 1310) && defined(__GNUC__)
|
||||
# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))
|
||||
# define BOOST_MATH_FLOAT128_TYPE __float128
|
||||
# endif
|
||||
# elif defined(__GNUC__)
|
||||
# define BOOST_MATH_FLOAT128_TYPE __float128
|
||||
# endif
|
||||
|
||||
# ifndef BOOST_MATH_FLOAT128_TYPE
|
||||
# define BOOST_MATH_FLOAT128_TYPE _Quad
|
||||
# endif
|
||||
#endif
|
||||
//
|
||||
// Check for WinCE with no iostream support:
|
||||
|
||||
@@ -789,6 +789,12 @@ run compile_test/sf_sqrt1pm1_incl_test.cpp compile_test_main ;
|
||||
run compile_test/sf_trunc_incl_test.cpp compile_test_main ;
|
||||
run compile_test/sf_zeta_incl_test.cpp compile_test_main ;
|
||||
run compile_test/std_real_concept_check.cpp ;
|
||||
run compile_test/cstdfloat_concept_check_1.cpp
|
||||
: : : [ check-target-builds ../config//has_intel_quad "Intel _Quad datatype support" : <cxxflags>-Qoption,cpp,--extended_float_type ]
|
||||
[ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : <linkflags>-lquadmath ] ;
|
||||
run compile_test/cstdfloat_concept_check_2.cpp ;
|
||||
run compile_test/cstdfloat_concept_check_3.cpp ;
|
||||
run compile_test/cstdfloat_concept_check_4.cpp ;
|
||||
run compile_test/sf_airy_incl_test.cpp compile_test_main ;
|
||||
run compile_test/sf_hankel_incl_test.cpp compile_test_main ;
|
||||
run compile_test/sf_jacobi_incl_test.cpp compile_test_main ;
|
||||
@@ -835,10 +841,10 @@ run test_signed_zero.cpp ../../test/build//boost_unit_test_framework ;
|
||||
|
||||
run complex_test.cpp ../../test/build//boost_unit_test_framework ;
|
||||
|
||||
compile multiprc_concept_check_1.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj ;
|
||||
compile multiprc_concept_check_2.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj ;
|
||||
compile multiprc_concept_check_3.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj ;
|
||||
compile multiprc_concept_check_4.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj ;
|
||||
compile multiprc_concept_check_1.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj release ;
|
||||
compile multiprc_concept_check_2.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj release ;
|
||||
compile multiprc_concept_check_3.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj release ;
|
||||
compile multiprc_concept_check_4.cpp : <debug-symbols>off <toolset>msvc:<cxxflags>/bigobj release ;
|
||||
compile ntl_concept_check.cpp : [ check-target-builds ../config//has_ntl_rr : : <build>no ] <debug-symbols>off ;
|
||||
compile mpfr_concept_check.cpp : [ check-target-builds ../config//has_mpfr_class : : <build>no ] <debug-symbols>off ;
|
||||
compile mpreal_concept_check.cpp : [ check-target-builds ../config//has_mpreal : : <build>no ] <debug-symbols>off ;
|
||||
|
||||
22
test/compile_test/cstdfloat_concept_check_1.cpp
Normal file
22
test/compile_test/cstdfloat_concept_check_1.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
// Copyright John Maddock 2014.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
|
||||
|
||||
#include "poison.hpp"
|
||||
|
||||
#include <boost/cstdfloat.hpp>
|
||||
#include <boost/math/concepts/distributions.hpp>
|
||||
|
||||
#include "instantiate.hpp"
|
||||
|
||||
int main(int argc, char*[])
|
||||
{
|
||||
#ifdef BOOST_FLOAT128_C
|
||||
if(argc > 1000)
|
||||
instantiate(BOOST_FLOAT128_C(1.23));
|
||||
#endif
|
||||
}
|
||||
|
||||
23
test/compile_test/cstdfloat_concept_check_2.cpp
Normal file
23
test/compile_test/cstdfloat_concept_check_2.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
// Copyright John Maddock 2014.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
|
||||
|
||||
#include "poison.hpp"
|
||||
|
||||
#include <boost/cstdfloat.hpp>
|
||||
#include <boost/math/concepts/distributions.hpp>
|
||||
|
||||
#include "instantiate.hpp"
|
||||
|
||||
|
||||
int main(int argc, char*[])
|
||||
{
|
||||
#ifdef BOOST_FLOAT80_C
|
||||
if(argc > 1000)
|
||||
instantiate(BOOST_FLOAT80_C(1.23));
|
||||
#endif
|
||||
}
|
||||
|
||||
23
test/compile_test/cstdfloat_concept_check_3.cpp
Normal file
23
test/compile_test/cstdfloat_concept_check_3.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
// Copyright John Maddock 2014.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
|
||||
|
||||
#include "poison.hpp"
|
||||
|
||||
#include <boost/cstdfloat.hpp>
|
||||
#include <boost/math/concepts/distributions.hpp>
|
||||
|
||||
#include "instantiate.hpp"
|
||||
|
||||
|
||||
int main(int argc, char*[])
|
||||
{
|
||||
#ifdef BOOST_FLOAT64_C
|
||||
if(argc > 1000)
|
||||
instantiate(BOOST_FLOAT64_C(1.23));
|
||||
#endif
|
||||
}
|
||||
|
||||
23
test/compile_test/cstdfloat_concept_check_4.cpp
Normal file
23
test/compile_test/cstdfloat_concept_check_4.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
// Copyright John Maddock 2014.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
|
||||
|
||||
#include "poison.hpp"
|
||||
|
||||
#include <boost/cstdfloat.hpp>
|
||||
#include <boost/math/concepts/distributions.hpp>
|
||||
|
||||
#include "instantiate.hpp"
|
||||
|
||||
|
||||
int main(int argc, char*[])
|
||||
{
|
||||
#ifdef BOOST_FLOAT32_C
|
||||
if(argc > 1000)
|
||||
instantiate(BOOST_FLOAT32_C(1.23));
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user