2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-19 04:22:09 +00:00

Coverage: Jacobi Elliptic, test error handling, simplify code.

This commit is contained in:
jzmaddock
2025-04-28 13:18:57 +01:00
parent 50def60663
commit 1fc0741bcf
2 changed files with 29 additions and 3 deletions

View File

@@ -41,9 +41,7 @@ T jacobi_imp(const T& x, const T& k, T* cn, T* dn, const Policy& pol, const char
BOOST_MATH_STD_USING
if(k < 0)
{
*cn = policies::raise_domain_error<T>(function, "Modulus k must be positive but got %1%.", k, pol);
*dn = *cn;
return *cn;
return *dn = *cn = policies::raise_domain_error<T>(function, "Modulus k must be positive but got %1%.", k, pol);
}
if(k > 1)
{

View File

@@ -186,5 +186,33 @@ void test_spots(T, const char* type_name)
BOOST_CHECK_CLOSE_FRACTION(boost::math::jacobi_sn(T(0.5), T(0.5)), static_cast<T>(0.475082936028536510082218324703870258745078171807428948028252L), tol);
BOOST_CHECK_CLOSE_FRACTION(boost::math::jacobi_sn(T(0.5), T(0.5), pol), static_cast<T>(0.475082936028536510082218324703870258745078171807428948028252L), tol);
//
// Bug cases and coverage:
//
#ifndef BOOST_MATH_NO_EXCEPTIONS
BOOST_CHECK_THROW(boost::math::jacobi_cd(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_cn(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_cs(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_dn(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_ds(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_nc(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_nd(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_ns(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_sc(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_sd(T(-0.5), T(0.5)), std::domain_error);
BOOST_CHECK_THROW(boost::math::jacobi_sn(T(-0.5), T(0.5)), std::domain_error);
#else
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_cd(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_cn(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_cs(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_dn(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_ds(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_nc(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_nd(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_ns(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_sc(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_sd(T(-0.5), T(0.5))));
BOOST_CHECK((boost::math::isnan)(boost::math::jacobi_sn(T(-0.5), T(0.5))));
#endif
}