diff --git a/test/powm1_sqrtp1m1_test.hpp b/test/powm1_sqrtp1m1_test.hpp index 12871bbd7..86f4e4a7e 100644 --- a/test/powm1_sqrtp1m1_test.hpp +++ b/test/powm1_sqrtp1m1_test.hpp @@ -1606,5 +1606,20 @@ void test_powm1_sqrtp1m1(T, const char* type_name) extract_result(2)); handle_test_result(result, powm1_big_data[result.worst()], result.worst(), type_name, "boost::math::powm1", "powm1"); + // + // Special cases and code coverage: + // + BOOST_MATH_IF_CONSTEXPR(std::numeric_limits::has_quiet_NaN) + { + BOOST_MATH_CHECK_THROW(boost::math::powm1(std::numeric_limits::quiet_NaN(), static_cast(2.0)), std::domain_error); + BOOST_MATH_CHECK_THROW(boost::math::powm1(static_cast(3.5), std::numeric_limits::quiet_NaN()), std::domain_error); + } + + BOOST_CHECK_EQUAL(boost::math::powm1(static_cast(-2.0), static_cast(4)), static_cast(15)); + BOOST_CHECK_EQUAL(boost::math::powm1(static_cast(-3.0), static_cast(4)), static_cast(80)); + BOOST_CHECK_EQUAL(boost::math::powm1(static_cast(-3.0), static_cast(3)), static_cast(-28)); + BOOST_CHECK_EQUAL(boost::math::powm1(-static_cast(0.0), static_cast(3)), static_cast(-1)); + BOOST_MATH_CHECK_THROW(boost::math::powm1(static_cast(-3.5), static_cast(2.25)), std::domain_error); + }