mirror of
https://github.com/boostorg/math.git
synced 2026-02-15 13:12:19 +00:00
Added static assertion to catch use of long double function overloads when BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS is defined.
Made sure that if BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS is defined, then no long double overloads are actually instantiated by the tests. [SVN r41007]
This commit is contained in:
@@ -70,12 +70,19 @@ void acosh_manual_check()
|
||||
long double xl =
|
||||
static_cast<long double>(i-50)/static_cast<long double>(5);
|
||||
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< acosh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< acosh_error_evaluator(xd)
|
||||
<< ::std::setw(15)
|
||||
<< acosh_error_evaluator(xl));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< acosh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< acosh_error_evaluator(xd));
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOST_MESSAGE(" ");
|
||||
|
||||
@@ -70,12 +70,19 @@ void asinh_manual_check()
|
||||
long double xl =
|
||||
static_cast<long double>(i-40)/static_cast<long double>(4);
|
||||
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< asinh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< asinh_error_evaluator(xd)
|
||||
<< ::std::setw(15)
|
||||
<< asinh_error_evaluator(xl));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< asinh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< asinh_error_evaluator(xd));
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOST_MESSAGE(" ");
|
||||
|
||||
@@ -116,12 +116,19 @@ void atanh_manual_check()
|
||||
std::numeric_limits<long double>::has_infinity
|
||||
)
|
||||
{
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< atanh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xd)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xl));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< atanh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xd));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -144,12 +151,19 @@ void atanh_manual_check()
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< atanh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xd)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xl));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< atanh_error_evaluator(xf)
|
||||
<< ::std::setw(15)
|
||||
<< atanh_error_evaluator(xd));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::bernoulli_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::bernoulli_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::bernoulli_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,5 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::beta_distribution<double, boost::math::policies::policy<> >;
|
||||
template class boost::math::beta_distribution<float, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::beta_distribution<long double, boost::math::policies::policy<> >;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::binomial_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::binomial_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::binomial_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -21,4 +21,6 @@ void check()
|
||||
|
||||
template class boost::math::cauchy_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::cauchy_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::cauchy_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::chi_squared_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::chi_squared_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::chi_squared_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::exponential_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::exponential_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::exponential_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::extreme_value_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::extreme_value_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::extreme_value_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::fisher_f_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::fisher_f_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::fisher_f_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::gamma_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::gamma_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::gamma_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::lognormal_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::lognormal_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::lognormal_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::negative_binomial_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::negative_binomial_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::negative_binomial_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::normal_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::normal_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::normal_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::pareto_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::pareto_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::pareto_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::poisson_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::poisson_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::poisson_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::students_t_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::students_t_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::students_t_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::triangular_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::triangular_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::triangular_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::uniform_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::uniform_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::uniform_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -20,4 +20,6 @@ void check()
|
||||
|
||||
template class boost::math::weibull_distribution<float, boost::math::policies::policy<> >;
|
||||
template class boost::math::weibull_distribution<double, boost::math::policies::policy<> >;
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
template class boost::math::weibull_distribution<long double, boost::math::policies::policy<> >;
|
||||
#endif
|
||||
|
||||
@@ -42,6 +42,8 @@ int main()
|
||||
{
|
||||
instantiate(float(0));
|
||||
instantiate(double(0));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
instantiate((long double)(0));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -17,25 +17,37 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::cyl_bessel_j<float>(f, f));
|
||||
check_result<double>(boost::math::cyl_bessel_j<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cyl_bessel_j<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::cyl_neumann<float>(f, f));
|
||||
check_result<double>(boost::math::cyl_neumann<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cyl_neumann<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::cyl_bessel_i<float>(f, f));
|
||||
check_result<double>(boost::math::cyl_bessel_i<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cyl_bessel_i<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::cyl_bessel_k<float>(f, f));
|
||||
check_result<double>(boost::math::cyl_bessel_k<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cyl_bessel_k<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::sph_bessel<float>(u, f));
|
||||
check_result<double>(boost::math::sph_bessel<double>(u, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sph_bessel<long double>(u, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::sph_neumann<float>(u, f));
|
||||
check_result<double>(boost::math::sph_neumann<double>(u, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sph_neumann<long double>(u, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,18 +17,26 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::beta<float, float>(f, f));
|
||||
check_result<double>(boost::math::beta<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::beta<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ibeta<float>(f, f, f));
|
||||
check_result<double>(boost::math::ibeta<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ibeta<long double>(l, l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ibeta_inv<float>(f, f, f));
|
||||
check_result<double>(boost::math::ibeta_inv<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ibeta_inv<long double>(l, l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ibeta_inva<float>(f, f, f));
|
||||
check_result<double>(boost::math::ibeta_inva<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ibeta_inva<long double>(l, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::binomial_coefficient<float>(u, u));
|
||||
check_result<double>(boost::math::binomial_coefficient<double>(u, u));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::binomial_coefficient<long double>(u, u));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::cbrt<float>(f));
|
||||
check_result<double>(boost::math::cbrt<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cbrt<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::cos_pi<float>(f));
|
||||
check_result<double>(boost::math::cos_pi<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::cos_pi<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::digamma<float>(f));
|
||||
check_result<double>(boost::math::digamma<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::digamma<long double>(l));
|
||||
#endif
|
||||
}
|
||||
@@ -17,9 +17,13 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_1<float>(f, f));
|
||||
check_result<double>(boost::math::ellint_1<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_1<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ellint_1<float>(f));
|
||||
check_result<double>(boost::math::ellint_1<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_1<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,9 +17,13 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_2<float>(f, f));
|
||||
check_result<double>(boost::math::ellint_2<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_2<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ellint_2<float>(f));
|
||||
check_result<double>(boost::math::ellint_2<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_2<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,9 +17,13 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_3<float>(f, f));
|
||||
check_result<double>(boost::math::ellint_3<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_3<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::ellint_3<float>(f, f, f));
|
||||
check_result<double>(boost::math::ellint_3<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_3<long double>(l, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_rc<float>(f, f));
|
||||
check_result<double>(boost::math::ellint_rc<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_rc<long double>(l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_rd<float>(f, f, f));
|
||||
check_result<double>(boost::math::ellint_rd<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_rd<long double>(l, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_rf<float>(f, f, f));
|
||||
check_result<double>(boost::math::ellint_rf<double>(d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_rf<long double>(l, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::ellint_rj<float>(f, f, f, f));
|
||||
check_result<double>(boost::math::ellint_rj<double>(d, d, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::ellint_rj<long double>(l, l, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,17 +17,25 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::erf<float>(f));
|
||||
check_result<double>(boost::math::erf<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::erf<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::erfc<float>(f));
|
||||
check_result<double>(boost::math::erfc<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::erfc<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::erf_inv<float>(f));
|
||||
check_result<double>(boost::math::erf_inv<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::erf_inv<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::erfc_inv<float>(f));
|
||||
check_result<double>(boost::math::erfc_inv<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::erfc_inv<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::expm1<float>(f));
|
||||
check_result<double>(boost::math::expm1<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::expm1<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,18 +17,26 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::factorial<float>(u));
|
||||
check_result<double>(boost::math::factorial<double>(u));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::factorial<long double>(u));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::double_factorial<float>(u));
|
||||
check_result<double>(boost::math::double_factorial<double>(u));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::double_factorial<long double>(u));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::rising_factorial<float>(f, i));
|
||||
check_result<double>(boost::math::rising_factorial<double>(d, i));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::rising_factorial<long double>(l, i));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::falling_factorial<float>(f, u));
|
||||
check_result<double>(boost::math::falling_factorial<double>(d, u));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::falling_factorial<long double>(l, u));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -17,19 +17,27 @@ void check()
|
||||
{
|
||||
check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<float>(f));
|
||||
check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<float>(f));
|
||||
check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<float>(f));
|
||||
check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<float>(f));
|
||||
check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,45 +17,67 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::tgamma<float>(f));
|
||||
check_result<double>(boost::math::tgamma<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::tgamma<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::lgamma<float>(f));
|
||||
check_result<double>(boost::math::lgamma<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::lgamma<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_p<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_p<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_p<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_q<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_q<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_q<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_p_inv<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_p_inv<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_p_inv<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_q_inv<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_q_inv<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_q_inv<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_p_inva<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_p_inva<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_p_inva<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_q_inva<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_q_inva<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_q_inva<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::gamma_p_derivative<float>(f, f));
|
||||
check_result<double>(boost::math::gamma_p_derivative<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::gamma_p_derivative<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::tgamma_ratio<float>(f, f));
|
||||
check_result<double>(boost::math::tgamma_ratio<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::tgamma_ratio<long double>(l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::tgamma_delta_ratio<float>(f, f));
|
||||
check_result<double>(boost::math::tgamma_delta_ratio<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::tgamma_delta_ratio<long double>(l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::hermite<float>(u, f));
|
||||
check_result<double>(boost::math::hermite<double>(u, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::hermite<long double>(u, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::hypot<float>(f, f));
|
||||
check_result<double>(boost::math::hypot<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::hypot<long double>(l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,12 +17,16 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::laguerre<float>(u, f));
|
||||
check_result<double>(boost::math::laguerre<double>(u, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::laguerre<long double>(u, l));
|
||||
#endif
|
||||
|
||||
typedef boost::math::policies::policy<> def_pol;
|
||||
def_pol p;
|
||||
|
||||
check_result<float>(boost::math::laguerre<float, def_pol>(u, u, f, p));
|
||||
check_result<double>(boost::math::laguerre<double, def_pol>(u, u, d, p));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::laguerre<long double, def_pol>(u, u, l, p));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,13 +17,19 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::legendre_p<float>(i, f));
|
||||
check_result<double>(boost::math::legendre_p<double>(i, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::legendre_p<long double>(i, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::legendre_p<float>(i, i, f));
|
||||
check_result<double>(boost::math::legendre_p<double>(i, i, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::legendre_p<long double>(i, i, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::legendre_q<float>(u, f));
|
||||
check_result<double>(boost::math::legendre_q<double>(u, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::legendre_q<long double>(u, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::log1p<float>(f));
|
||||
check_result<double>(boost::math::log1p<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::log1p<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::powm1<float>(f, f));
|
||||
check_result<double>(boost::math::powm1<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::powm1<long double>(l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,13 +17,19 @@ void check()
|
||||
{
|
||||
check_result<int>(boost::math::sign<float>(f));
|
||||
check_result<int>(boost::math::sign<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<int>(boost::math::sign<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<int>(boost::math::signbit<float>(f));
|
||||
check_result<int>(boost::math::signbit<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<int>(boost::math::signbit<long double>(l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::copysign<float>(f, f));
|
||||
check_result<double>(boost::math::copysign<double>(d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::copysign<long double>(l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::sin_pi<float>(f));
|
||||
check_result<double>(boost::math::sin_pi<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sin_pi<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::sinc_pi<float>(f));
|
||||
check_result<double>(boost::math::sinc_pi<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sinc_pi<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::sinhc_pi<float>(f));
|
||||
check_result<double>(boost::math::sinhc_pi<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sinhc_pi<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -23,15 +23,21 @@ void check()
|
||||
{
|
||||
check_result<std::complex<float> >(boost::math::spherical_harmonic<float>(u, i, f, f));
|
||||
check_result<std::complex<double> >(boost::math::spherical_harmonic<double>(u, i, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<std::complex<long double> >(boost::math::spherical_harmonic<long double>(u, i, l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::spherical_harmonic_r<float>(u, i, f, f));
|
||||
check_result<double>(boost::math::spherical_harmonic_r<double>(u, i, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::spherical_harmonic_r<long double>(u, i, l, l));
|
||||
#endif
|
||||
|
||||
check_result<float>(boost::math::spherical_harmonic_i<float>(u, i, f, f));
|
||||
check_result<double>(boost::math::spherical_harmonic_i<double>(u, i, d, d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::spherical_harmonic_i<long double>(u, i, l, l));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,5 +17,7 @@ void check()
|
||||
{
|
||||
check_result<float>(boost::math::sqrt1pm1<float>(f));
|
||||
check_result<double>(boost::math::sqrt1pm1<double>(d));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
check_result<long double>(boost::math::sqrt1pm1<long double>(l));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -193,6 +193,8 @@ struct numeric_limits<boost::math::concepts::std_real_concept>
|
||||
|
||||
int main()
|
||||
{
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
instantiate(boost::math::concepts::std_real_concept(0));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -119,8 +119,13 @@ private:
|
||||
}
|
||||
}; // struct DistributionConcept
|
||||
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
#define TEST_DIST_FUNC(dist)\
|
||||
DistributionConcept< boost::math::dist##_distribution<float> >::constraints();\
|
||||
DistributionConcept< boost::math::dist##_distribution<double> >::constraints();\
|
||||
DistributionConcept< boost::math::dist##_distribution<long double> >::constraints();
|
||||
|
||||
#else
|
||||
#define TEST_DIST_FUNC(dist)\
|
||||
DistributionConcept< boost::math::dist##_distribution<float> >::constraints();\
|
||||
DistributionConcept< boost::math::dist##_distribution<double> >::constraints();
|
||||
#endif
|
||||
|
||||
@@ -853,9 +853,11 @@ int test_main(int, char*[])
|
||||
check_spots(float(0));
|
||||
std::cout << "Running complex trig spot checks for type double." << std::endl;
|
||||
check_spots(double(0));
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
std::cout << "Running complex trig spot checks for type long double." << std::endl;
|
||||
check_spots((long double)(0));
|
||||
|
||||
#endif
|
||||
|
||||
std::cout << "Running complex trig boundary and accuracy tests." << std::endl;
|
||||
test_boundaries();
|
||||
return 0;
|
||||
|
||||
@@ -41,8 +41,13 @@ const float boundaries[] = {
|
||||
void do_test_boundaries(float x, float y)
|
||||
{
|
||||
float expected = static_cast<float>((boost::math::hypot)(
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
static_cast<long double>(x),
|
||||
static_cast<long double>(y)));
|
||||
#else
|
||||
static_cast<double>(x),
|
||||
static_cast<double>(y)));
|
||||
#endif
|
||||
float found = (boost::math::hypot)(x, y);
|
||||
BOOST_CHECK_CLOSE(expected, found, tolerance);
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ void sinc_pi_manual_check()
|
||||
|
||||
for (int i = 0; i <= 100; i++)
|
||||
{
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< sinc_pi<float>(static_cast<float>(i-50)/
|
||||
static_cast<float>(50))
|
||||
@@ -75,6 +76,14 @@ void sinc_pi_manual_check()
|
||||
<< ::std::setw(15)
|
||||
<< sinc_pi<long double>(static_cast<long double>(i-50)/
|
||||
static_cast<long double>(50)));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< sinc_pi<float>(static_cast<float>(i-50)/
|
||||
static_cast<float>(50))
|
||||
<< ::std::setw(15)
|
||||
<< sinc_pi<double>(static_cast<double>(i-50)/
|
||||
static_cast<double>(50)));
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOST_MESSAGE(" ");
|
||||
|
||||
@@ -66,6 +66,7 @@ void sinhc_pi_manual_check()
|
||||
|
||||
for (int i = 0; i <= 100; i++)
|
||||
{
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< sinhc_pi<float>(static_cast<float>(i-50)/
|
||||
static_cast<float>(50))
|
||||
@@ -75,6 +76,14 @@ void sinhc_pi_manual_check()
|
||||
<< ::std::setw(15)
|
||||
<< sinhc_pi<long double>(static_cast<long double>(i-50)/
|
||||
static_cast<long double>(50)));
|
||||
#else
|
||||
BOOST_MESSAGE( ::std::setw(15)
|
||||
<< sinhc_pi<float>(static_cast<float>(i-50)/
|
||||
static_cast<float>(50))
|
||||
<< ::std::setw(15)
|
||||
<< sinhc_pi<double>(static_cast<double>(i-50)/
|
||||
static_cast<double>(50)));
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOST_MESSAGE(" ");
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <boost/test/unit_test_log.hpp>
|
||||
#include <boost/test/test_case_template.hpp>
|
||||
#include <boost/math/tools/config.hpp>
|
||||
|
||||
|
||||
template<typename T>
|
||||
@@ -28,17 +29,23 @@ template<> struct string_type_name<Type> \
|
||||
} \
|
||||
}
|
||||
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
DEFINE_TYPE_NAME(float);
|
||||
DEFINE_TYPE_NAME(double);
|
||||
DEFINE_TYPE_NAME(long double);
|
||||
|
||||
|
||||
typedef boost::mpl::list<float,double,long double> test_types;
|
||||
#else
|
||||
DEFINE_TYPE_NAME(float);
|
||||
DEFINE_TYPE_NAME(double);
|
||||
|
||||
typedef boost::mpl::list<float,double> test_types;
|
||||
#endif
|
||||
|
||||
// Apple GCC 4.0 uses the "double double" format for its long double,
|
||||
// which means that epsilon is VERY small but useless for
|
||||
// comparisons. So, don't do those comparisons.
|
||||
#if defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4
|
||||
#if (defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
|
||||
typedef boost::mpl::list<float,double> near_eps_test_types;
|
||||
#else
|
||||
typedef boost::mpl::list<float,double,long double> near_eps_test_types;
|
||||
|
||||
@@ -119,9 +119,11 @@ int test_main(int, char* [])
|
||||
BOOST_MATH_CONTROL_FP;
|
||||
test_cbrt(0.1F, "float");
|
||||
test_cbrt(0.1, "double");
|
||||
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
test_cbrt(0.1L, "long double");
|
||||
#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS
|
||||
test_cbrt(boost::math::concepts::real_concept(0.1), "real_concept");
|
||||
#endif
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user