Skip to content

Commit fce31eb

Browse files
author
Reimar Döffinger
committed
Update tests to take promote_double policy into account
Makes it easier to change its default to false in the future. The remaining failing tests are test_nc_chi_squared test_bessel_j_prime and test_bessel_y_prime. They probably have incorrect logic for the double == long double case already now.
1 parent 5229890 commit fce31eb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+51
-48
lines changed

test/test_0F1.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void expected_results()
1616
//
1717
const char* largest_type;
1818
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
19-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
19+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
2020
{
2121
largest_type = "(long\\s+)?double|real_concept|cpp_bin_float_quad|dec_40";
2222
}

test/test_1F1.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void expected_results()
1515
//
1616
const char* largest_type;
1717
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
18-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
18+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
1919
{
2020
largest_type = "(long\\s+)?double|real_concept|cpp_bin_float_quad|dec_40|cpp_bin_float_double_extended";
2121
}
@@ -71,6 +71,8 @@ void expected_results()
7171
"Small.*", // test data group
7272
".*", 1000, 300); // test function
7373

74+
if(boost::math::policies::promote_double<>())
75+
{
7476
#if (LDBL_MANT_DIG < DBL_MANT_DIG * 2) && (LDBL_MANT_DIG != DBL_MANT_DIG)
7577
//
7678
// long double has only a little extra precision and errors may creep
@@ -116,6 +118,7 @@ void expected_results()
116118
".*", 10, 5); // test function
117119

118120
#endif
121+
}
119122

120123
add_expected_result(
121124
".*", // compiler

test/test_1F1_log.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void expected_results()
1515
//
1616
const char* largest_type;
1717
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
18-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
18+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
1919
{
2020
largest_type = "(long\\s+)?double|real_concept|cpp_bin_float_quad|dec_40|cpp_bin_float_double_extended";
2121
}

test/test_1F1_regularized.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ void expected_results()
1717
//
1818
const char* largest_type;
1919
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
20-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
20+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
2121
{
2222
largest_type = "(long\\s+)?double|real_concept|cpp_bin_float_quad|dec_40|cpp_bin_float_double_extended";
2323
}

test/test_2F0.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void expected_results()
1616
//
1717
const char* largest_type;
1818
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
19-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
19+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
2020
{
2121
largest_type = "(long\\s+)?double|real_concept|cpp_bin_float_quad|dec_40";
2222
}
@@ -29,7 +29,7 @@ void expected_results()
2929
#endif
3030

3131
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
32-
if (boost::math::policies::digits<double, boost::math::policies::policy<> >() != boost::math::policies::digits<long double, boost::math::policies::policy<> >())
32+
if (boost::math::policies::promote_double<>() && boost::math::policies::digits<double, boost::math::policies::policy<> >() != boost::math::policies::digits<long double, boost::math::policies::policy<> >())
3333
{
3434
add_expected_result(
3535
".*", // compiler

test/test_bessel_i.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void expected_results()
5151
//
5252
const char* largest_type;
5353
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
54-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
54+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
5555
{
5656
largest_type = "(long\\s+)?double";
5757
}

test/test_bessel_i_prime.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void expected_results()
3737
//
3838
const char* largest_type;
3939
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
40-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
40+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
4141
{
4242
largest_type = "(long\\s+)?double";
4343
}

test/test_bessel_j.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void expected_results()
5151
//
5252
const char* largest_type;
5353
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
54-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
54+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
5555
{
5656
largest_type = "(long\\s+)?double|real_concept";
5757
}
@@ -194,7 +194,7 @@ void expected_results()
194194

195195

196196
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
197-
BOOST_IF_CONSTEXPR ((std::numeric_limits<double>::digits != std::numeric_limits<long double>::digits)
197+
BOOST_IF_CONSTEXPR (boost::math::policies::promote_double<>() && (std::numeric_limits<double>::digits != std::numeric_limits<long double>::digits)
198198
&& (std::numeric_limits<long double>::digits < 90))
199199
{
200200
// some errors spill over into type double as well:
@@ -251,7 +251,7 @@ void expected_results()
251251
".*(JN|j).*|.*Tricky.*", // test data group
252252
".*", 33000, 20000); // test function
253253
}
254-
else BOOST_IF_CONSTEXPR (std::numeric_limits<long double>::digits >= 90)
254+
else BOOST_IF_CONSTEXPR (boost::math::policies::promote_double<>() && std::numeric_limits<long double>::digits >= 90)
255255
{
256256
add_expected_result(
257257
".*", // compiler

test/test_bessel_j_prime.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ void expected_results()
177177

178178

179179
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
180-
if((std::numeric_limits<double>::digits != std::numeric_limits<long double>::digits)
180+
if(boost::math::policies::promote_double<>() && (std::numeric_limits<double>::digits != std::numeric_limits<long double>::digits)
181181
&& (std::numeric_limits<long double>::digits < 90))
182182
{
183183
// some errors spill over into type double as well:

test/test_bessel_k.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void expected_results()
5858
//
5959
const char* largest_type;
6060
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
61-
if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
61+
if(!boost::math::policies::promote_double<>() || boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >())
6262
{
6363
largest_type = "(long\\s+)?double|real_concept";
6464
}

0 commit comments

Comments
 (0)