diff --git a/include/boost/math/tools/precision.hpp b/include/boost/math/tools/precision.hpp index 94c22b55ed..6e863401d9 100644 --- a/include/boost/math/tools/precision.hpp +++ b/include/boost/math/tools/precision.hpp @@ -182,9 +182,13 @@ struct log_limit_traits { typedef typename boost::math::conditional< (boost::math::numeric_limits::radix == 2) && - (boost::math::numeric_limits::max_exponent == 128 - || boost::math::numeric_limits::max_exponent == 1024 - || boost::math::numeric_limits::max_exponent == 16384), + ( + ( boost::math::numeric_limits::max_exponent == 128 + || boost::math::numeric_limits::max_exponent == 1024 + || boost::math::numeric_limits::max_exponent == 16384 + ) + && (-boost::math::numeric_limits::min_exponent10 + 1 == boost::math::numeric_limits::max_exponent10) + ), boost::math::integral_constant::max_exponent > (boost::math::numeric_limits::max)() ? (boost::math::numeric_limits::max)() : static_cast(boost::math::numeric_limits::max_exponent))>, boost::math::integral_constant >::type tag_type; diff --git a/reporting/performance/test_kn.cpp b/reporting/performance/test_kn.cpp index bf2c8cda19..2f309f625e 100644 --- a/reporting/performance/test_kn.cpp +++ b/reporting/performance/test_kn.cpp @@ -48,7 +48,7 @@ static const std::array, 9> kn_data = { { { { SC_(-10.0), SC_(1.0), SC_(1.80713289901029454691597861302340015908245782948536080022119e8) } }, { { SC_(100.0), SC_(5.0), SC_(7.03986019306167654653386616796116726248616158936088056952477e115) } }, { { SC_(100.0), SC_(80.0), SC_(8.39287107246490782848985384895907681748152272748337807033319e-12) } }, - { { SC_(-1000.0), SC_(700.0), SC_(6.51561979144735818903553852606383312984409361984128221539405e-31) } }, + { { SC_(-129.0), SC_(200.0), SC_(3.61744436315860678558682169223740584132967454950379795115566e-71) } }, } }; int main() diff --git a/test/test_bessel_k.hpp b/test/test_bessel_k.hpp index 6a2a8179d9..36b86bec5e 100644 --- a/test/test_bessel_k.hpp +++ b/test/test_bessel_k.hpp @@ -133,7 +133,7 @@ void test_bessel(T, const char* name) {{ SC_(-10.0), SC_(1.0), SC_(1.80713289901029454691597861302340015908245782948536080022119e8) }}, {{ SC_(100.0), SC_(5.0), SC_(7.03986019306167654653386616796116726248616158936088056952477e115) }}, {{ SC_(100.0), SC_(80.0), SC_(8.39287107246490782848985384895907681748152272748337807033319e-12) }}, - {{ SC_(-1000.0), SC_(700.0), SC_(6.51561979144735818903553852606383312984409361984128221539405e-31) }}, + {{ SC_(-129.0), SC_(200.0), SC_(3.61744436315860678558682169223740584132967454950379795115566e-71) }}, }}; static const std::array::type, 3>, 11> kv_data = {{ {{ SC_(0.5), SC_(0.875), SC_(0.558532231646608646115729767013630967055657943463362504577189) }}, diff --git a/test/test_bessel_k_prime.hpp b/test/test_bessel_k_prime.hpp index f43728c118..79df46c703 100644 --- a/test/test_bessel_k_prime.hpp +++ b/test/test_bessel_k_prime.hpp @@ -131,7 +131,7 @@ void test_bessel(T, const char* name) {{ SC_(-10.0), SC_(1.0), SC_(-1.8171379399979651461891429013401068319174853467388121e9) }}, {{ SC_(100.0), SC_(5.0), SC_(-1.4097486373570936520327835736048715219413065916411893e117) }}, {{ SC_(100.0), SC_(80.0), SC_(-1.34557011017664184003144916855685180771861680634827508e-11) }}, - {{ SC_(-1000.0), SC_(700.0), SC_(-1.136342773238774160870536985092768591616106526374957e-30) }}, + {{ SC_(-129.0), SC_(200.0), SC_(-4.3110345255133348027545113739271337415489367194240537230455182e-71) }}, }}; static const std::array, 11> kv_prime_data = {{ {{ SC_(0.5), SC_(0.875), SC_(-0.8776935068732421581818610624499915196588910540138553643355820) }},