📄 test_rational.hpp
字号:
BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.3984375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(6.5)), static_cast<T>(0.95e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(10247.25)), static_cast<T>(0.1025025e5L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125), 2), static_cast<T>(0.3015625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25), 2), static_cast<T>(0.30625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75), 2), static_cast<T>(0.35625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2), static_cast<T>(0.3968994140625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(6.5f), 2), static_cast<T>(0.4525e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(10247.25f), 2), static_cast<T>(0.1050061355625e9L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125)), static_cast<T>(0.3015625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25)), static_cast<T>(0.30625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75)), static_cast<T>(0.35625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.3968994140625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(6.5f)), static_cast<T>(0.4525e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(10247.25f)), static_cast<T>(0.1050061355625e9L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.125)), static_cast<T>(0.3015625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.25)), static_cast<T>(0.30625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.75)), static_cast<T>(0.35625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.3968994140625e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(6.5f)), static_cast<T>(0.4525e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(10247.25f)), static_cast<T>(0.1050061355625e9L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125), 2), static_cast<T>(0.3125e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25), 2), static_cast<T>(0.325e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75), 2), static_cast<T>(0.375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2), static_cast<T>(0.3984375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(6.5f), 2), static_cast<T>(0.95e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(10247.25f), 2), static_cast<T>(0.1025025e5L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125)), static_cast<T>(0.3125e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25)), static_cast<T>(0.325e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75)), static_cast<T>(0.375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.3984375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(6.5f)), static_cast<T>(0.95e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(10247.25f)), static_cast<T>(0.1025025e5L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.125)), static_cast<T>(0.3125e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.25)), static_cast<T>(0.325e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.75)), static_cast<T>(0.375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.3984375e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(6.5f)), static_cast<T>(0.95e1L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(10247.25f)), static_cast<T>(0.1025025e5L), tolerance); // // Rational functions of order 1 // static const U d2c[2] = { 5, 9 }; static const boost::array<U, 2> d2a = { 5, 9 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.125), 2), static_cast<T>(0.5102040816326530612244897959183673469388e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25), 2), static_cast<T>(0.4482758620689655172413793103448275862069e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75), 2), static_cast<T>(0.3191489361702127659574468085106382978723e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(1.0f - 1.0f/64.0f), 2), static_cast<T>(0.2874859075535512965050732807215332581736e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(6.5f), 2), static_cast<T>(0.1496062992125984251968503937007874015748e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(10247.25f), 2), static_cast<T>(0.1111376148281068304596377002122405609873e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.125)), static_cast<T>(0.5102040816326530612244897959183673469388e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25)), static_cast<T>(0.4482758620689655172413793103448275862069e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75)), static_cast<T>(0.3191489361702127659574468085106382978723e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.2874859075535512965050732807215332581736e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(6.5f)), static_cast<T>(0.1496062992125984251968503937007874015748e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(10247.25f)), static_cast<T>(0.1111376148281068304596377002122405609873e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.125)), static_cast<T>(0.5102040816326530612244897959183673469388e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.25)), static_cast<T>(0.4482758620689655172413793103448275862069e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.75)), static_cast<T>(0.3191489361702127659574468085106382978723e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.2874859075535512965050732807215332581736e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(6.5f)), static_cast<T>(0.1496062992125984251968503937007874015748e0L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(10247.25f)), static_cast<T>(0.1111376148281068304596377002122405609873e0L), tolerance);}template <class T, class U>void do_test_spots2(T, U){ // // Tolerance is 4 eps expressed as a persentage: // T tolerance = boost::math::tools::epsilon<T>() * 4 * 100; // // Polynomials of order 2 // static const U n3c[3] = { 10, 6, 11 }; static const boost::array<U, 3> n3a = { 10, 6, 11 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.125), 3), static_cast<T>(0.10921875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25), 3), static_cast<T>(0.121875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75), 3), static_cast<T>(0.206875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3), static_cast<T>(0.26565185546875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(6.5), 3), static_cast<T>(0.51375e3L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(10247.25), 3), static_cast<T>(0.11551289516875e10L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.125)), static_cast<T>(0.10921875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25)), static_cast<T>(0.121875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75)), static_cast<T>(0.206875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.26565185546875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(6.5)), static_cast<T>(0.51375e3L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(10247.25)), static_cast<T>(0.11551289516875e10L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.125)), static_cast<T>(0.10921875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.25)), static_cast<T>(0.121875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.75)), static_cast<T>(0.206875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)), static_cast<T>(0.26565185546875e2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(6.5)), static_cast<T>(0.51375e3L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(10247.25)), static_cast<T>(0.11551289516875e10L),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -