mirror of
https://github.com/boostorg/math.git
synced 2026-01-19 04:22:09 +00:00
2359 lines
93 KiB
C++
2359 lines
93 KiB
C++
// (C) Copyright John Maddock 2006.
|
|
// Use, modification and distribution are subject to the
|
|
// Boost Software License, Version 1.0. (See accompanying file
|
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#include <boost/math/concepts/real_concept.hpp>
|
|
#include <boost/test/included/test_exec_monitor.hpp>
|
|
#include <boost/test/floating_point_comparison.hpp>
|
|
#include <boost/array.hpp>
|
|
#include <boost/math/tools/rational.hpp>
|
|
|
|
template <class T, class U>
|
|
void do_test_spots(T, U)
|
|
{
|
|
//
|
|
// Tolerance is 4 eps expressed as a persentage:
|
|
//
|
|
T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
|
|
|
|
//
|
|
// Everything past this point is generated by the program
|
|
// ../tools/generate_rational_test.cpp
|
|
//
|
|
|
|
//
|
|
// Polynomials of order 0
|
|
//
|
|
static const U n1c[1] = { 2 };
|
|
static const boost::array<U, 1> n1a = { 2 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.125), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.25), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.75), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.125)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.25)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.75)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.125)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.25)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.75)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.125), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.25), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.75), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.125)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.25)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.75)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.125)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.25)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.75)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(2L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 0
|
|
//
|
|
static const U d1c[1] = { 3 };
|
|
static const boost::array<U, 1> d1a = { 3 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.125), 1),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.25), 1),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.75), 1),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.6666666666666666666666666666666666666667L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 1
|
|
//
|
|
static const U n2c[2] = { 3, 1 };
|
|
static const boost::array<U, 2> n2a = { 3, 1 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.125), 2),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.25), 2),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.75), 2),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
|
|
static_cast<T>(3.984375L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.75)),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.984375L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.75)),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.984375L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125), 2),
|
|
static_cast<T>(3.015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25), 2),
|
|
static_cast<T>(3.0625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75), 2),
|
|
static_cast<T>(3.5625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
|
|
static_cast<T>(3.968994140625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.0625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75)),
|
|
static_cast<T>(3.5625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.968994140625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.0625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.75)),
|
|
static_cast<T>(3.5625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.968994140625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125), 2),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25), 2),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75), 2),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
|
|
static_cast<T>(3.984375L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75)),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.984375L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.25L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.75)),
|
|
static_cast<T>(3.75L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(3.984375L),
|
|
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.5102040816326530612244897959183673469388L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25), 2),
|
|
static_cast<T>(0.4482758620689655172413793103448275862069L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75), 2),
|
|
static_cast<T>(0.3191489361702127659574468085106382978723L),
|
|
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.2874859075535512965050732807215332581736L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.5102040816326530612244897959183673469388L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.4482758620689655172413793103448275862069L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.3191489361702127659574468085106382978723L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.2874859075535512965050732807215332581736L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.5102040816326530612244897959183673469388L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.4482758620689655172413793103448275862069L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.3191489361702127659574468085106382978723L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.2874859075535512965050732807215332581736L),
|
|
tolerance);
|
|
|
|
//
|
|
// 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>(10.921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25), 3),
|
|
static_cast<T>(12.1875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75), 3),
|
|
static_cast<T>(20.6875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
|
|
static_cast<T>(26.565185546875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.125)),
|
|
static_cast<T>(10.921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25)),
|
|
static_cast<T>(12.1875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75)),
|
|
static_cast<T>(20.6875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.565185546875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.125)),
|
|
static_cast<T>(10.921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.25)),
|
|
static_cast<T>(12.1875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.75)),
|
|
static_cast<T>(20.6875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.565185546875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.125), 3),
|
|
static_cast<T>(10.096435546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.25), 3),
|
|
static_cast<T>(10.41796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.75), 3),
|
|
static_cast<T>(16.85546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
|
|
static_cast<T>(26.142410933971405029296875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.125)),
|
|
static_cast<T>(10.096435546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.25)),
|
|
static_cast<T>(10.41796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.75)),
|
|
static_cast<T>(16.85546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.142410933971405029296875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.125)),
|
|
static_cast<T>(10.096435546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.25)),
|
|
static_cast<T>(10.41796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.75)),
|
|
static_cast<T>(16.85546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.142410933971405029296875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.125), 3),
|
|
static_cast<T>(10.771484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.25), 3),
|
|
static_cast<T>(11.671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.75), 3),
|
|
static_cast<T>(19.140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
|
|
static_cast<T>(26.398639678955078125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.125)),
|
|
static_cast<T>(10.771484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.25)),
|
|
static_cast<T>(11.671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.75)),
|
|
static_cast<T>(19.140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.398639678955078125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.125)),
|
|
static_cast<T>(10.771484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.25)),
|
|
static_cast<T>(11.671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.75)),
|
|
static_cast<T>(19.140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(26.398639678955078125L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 2
|
|
//
|
|
static const U d3c[3] = { 3, 4, 10 };
|
|
static const boost::array<U, 3> d3a = { 3, 4, 10 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.125), 3),
|
|
static_cast<T>(2.987179487179487179487179487179487179487L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.25), 3),
|
|
static_cast<T>(2.635135135135135135135135135135135135135L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.75), 3),
|
|
static_cast<T>(1.779569892473118279569892473118279569892L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
|
|
static_cast<T>(1.597671277126831703520981998649164537633L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.125)),
|
|
static_cast<T>(2.987179487179487179487179487179487179487L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.25)),
|
|
static_cast<T>(2.635135135135135135135135135135135135135L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.75)),
|
|
static_cast<T>(1.779569892473118279569892473118279569892L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.597671277126831703520981998649164537633L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.125)),
|
|
static_cast<T>(2.987179487179487179487179487179487179487L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.25)),
|
|
static_cast<T>(2.635135135135135135135135135135135135135L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.75)),
|
|
static_cast<T>(1.779569892473118279569892473118279569892L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.597671277126831703520981998649164537633L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 3
|
|
//
|
|
static const U n4c[4] = { 1, 4, 9, 11 };
|
|
static const boost::array<U, 4> n4a = { 1, 4, 9, 11 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.125), 4),
|
|
static_cast<T>(1.662109375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.25), 4),
|
|
static_cast<T>(2.734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.75), 4),
|
|
static_cast<T>(13.703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
|
|
static_cast<T>(24.150836944580078125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.662109375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.25)),
|
|
static_cast<T>(2.734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.75)),
|
|
static_cast<T>(13.703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(24.150836944580078125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.662109375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.25)),
|
|
static_cast<T>(2.734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.75)),
|
|
static_cast<T>(13.703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(24.150836944580078125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.125), 4),
|
|
static_cast<T>(1.064739227294921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.25), 4),
|
|
static_cast<T>(1.287841796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.75), 4),
|
|
static_cast<T>(8.055419921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
|
|
static_cast<T>(23.334727106775972060859203338623046875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.064739227294921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.25)),
|
|
static_cast<T>(1.287841796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.75)),
|
|
static_cast<T>(8.055419921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(23.334727106775972060859203338623046875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.064739227294921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.25)),
|
|
static_cast<T>(1.287841796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.75)),
|
|
static_cast<T>(8.055419921875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(23.334727106775972060859203338623046875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.125), 4),
|
|
static_cast<T>(1.517913818359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.25), 4),
|
|
static_cast<T>(2.1513671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.75), 4),
|
|
static_cast<T>(10.4072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
|
|
static_cast<T>(23.689246584661304950714111328125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.517913818359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.25)),
|
|
static_cast<T>(2.1513671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.75)),
|
|
static_cast<T>(10.4072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(23.689246584661304950714111328125L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.517913818359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.25)),
|
|
static_cast<T>(2.1513671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.75)),
|
|
static_cast<T>(10.4072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(23.689246584661304950714111328125L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 3
|
|
//
|
|
static const U d4c[4] = { 10, 2, 5, 4 };
|
|
static const boost::array<U, 4> d4a = { 10, 2, 5, 4 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.125), 4),
|
|
static_cast<T>(0.1608087679516250944822373393801965230537L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.25), 4),
|
|
static_cast<T>(0.2514367816091954022988505747126436781609L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.75), 4),
|
|
static_cast<T>(0.8564453125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
|
|
static_cast<T>(1.170714951947222939292918160495461743806L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.1608087679516250944822373393801965230537L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.2514367816091954022988505747126436781609L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.8564453125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.170714951947222939292918160495461743806L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.1608087679516250944822373393801965230537L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.2514367816091954022988505747126436781609L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.8564453125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.170714951947222939292918160495461743806L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 4
|
|
//
|
|
static const U n5c[5] = { 10, 10, 4, 11, 9 };
|
|
static const boost::array<U, 5> n5a = { 10, 10, 4, 11, 9 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.125), 5),
|
|
static_cast<T>(11.336181640625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.25), 5),
|
|
static_cast<T>(12.95703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.75), 5),
|
|
static_cast<T>(27.23828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
|
|
static_cast<T>(42.662663042545318603515625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.125)),
|
|
static_cast<T>(11.336181640625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.25)),
|
|
static_cast<T>(12.95703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.75)),
|
|
static_cast<T>(27.23828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.662663042545318603515625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.125)),
|
|
static_cast<T>(11.336181640625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.25)),
|
|
static_cast<T>(12.95703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.75)),
|
|
static_cast<T>(27.23828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.662663042545318603515625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.125), 5),
|
|
static_cast<T>(10.157269060611724853515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.25), 5),
|
|
static_cast<T>(10.6434478759765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.75), 5),
|
|
static_cast<T>(19.7494049072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
|
|
static_cast<T>(41.38858164296656028113829961512237787247L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.125)),
|
|
static_cast<T>(10.157269060611724853515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.25)),
|
|
static_cast<T>(10.6434478759765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.75)),
|
|
static_cast<T>(19.7494049072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.38858164296656028113829961512237787247L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.125)),
|
|
static_cast<T>(10.157269060611724853515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.25)),
|
|
static_cast<T>(10.6434478759765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.75)),
|
|
static_cast<T>(19.7494049072265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.38858164296656028113829961512237787247L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.125), 5),
|
|
static_cast<T>(11.258152484893798828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.25), 5),
|
|
static_cast<T>(12.57379150390625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.75), 5),
|
|
static_cast<T>(22.99920654296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
|
|
static_cast<T>(41.88681309761682314274366945028305053711L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.125)),
|
|
static_cast<T>(11.258152484893798828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.25)),
|
|
static_cast<T>(12.57379150390625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.75)),
|
|
static_cast<T>(22.99920654296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.88681309761682314274366945028305053711L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.125)),
|
|
static_cast<T>(11.258152484893798828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.25)),
|
|
static_cast<T>(12.57379150390625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.75)),
|
|
static_cast<T>(22.99920654296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.88681309761682314274366945028305053711L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 4
|
|
//
|
|
static const U d5c[5] = { 6, 9, 6, 2, 5 };
|
|
static const boost::array<U, 5> d5a = { 6, 9, 6, 2, 5 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.125), 5),
|
|
static_cast<T>(1.569265605461489066882963263374902835513L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.25), 5),
|
|
static_cast<T>(1.493471409275101305718144979738856371004L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.75), 5),
|
|
static_cast<T>(1.468309117708991366603495472731101284481L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
|
|
static_cast<T>(1.564121691159921277310988862398683772017L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.569265605461489066882963263374902835513L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.25)),
|
|
static_cast<T>(1.493471409275101305718144979738856371004L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.75)),
|
|
static_cast<T>(1.468309117708991366603495472731101284481L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.564121691159921277310988862398683772017L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.569265605461489066882963263374902835513L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.25)),
|
|
static_cast<T>(1.493471409275101305718144979738856371004L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.75)),
|
|
static_cast<T>(1.468309117708991366603495472731101284481L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.564121691159921277310988862398683772017L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 5
|
|
//
|
|
static const U n6c[6] = { 6, 8, 12, 5, 7, 5 };
|
|
static const boost::array<U, 6> n6a = { 6, 8, 12, 5, 7, 5 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.125), 6),
|
|
static_cast<T>(7.199127197265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.25), 6),
|
|
static_cast<T>(8.8603515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.75), 6),
|
|
static_cast<T>(24.2607421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
|
|
static_cast<T>(41.466238017193973064422607421875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.125)),
|
|
static_cast<T>(7.199127197265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.25)),
|
|
static_cast<T>(8.8603515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.75)),
|
|
static_cast<T>(24.2607421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.466238017193973064422607421875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.125)),
|
|
static_cast<T>(7.199127197265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.25)),
|
|
static_cast<T>(8.8603515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.75)),
|
|
static_cast<T>(24.2607421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(41.466238017193973064422607421875L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.125), 6),
|
|
static_cast<T>(6.127949182875454425811767578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.25), 6),
|
|
static_cast<T>(6.54820728302001953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.75), 6),
|
|
static_cast<T>(16.16912555694580078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
|
|
static_cast<T>(40.01137167344577683526091194110563264985L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.125)),
|
|
static_cast<T>(6.127949182875454425811767578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.25)),
|
|
static_cast<T>(6.54820728302001953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.75)),
|
|
static_cast<T>(16.16912555694580078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(40.01137167344577683526091194110563264985L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.125)),
|
|
static_cast<T>(6.127949182875454425811767578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.25)),
|
|
static_cast<T>(6.54820728302001953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.75)),
|
|
static_cast<T>(16.16912555694580078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(40.01137167344577683526091194110563264985L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.125), 6),
|
|
static_cast<T>(7.023593463003635406494140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.25), 6),
|
|
static_cast<T>(8.192829132080078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.75), 6),
|
|
static_cast<T>(19.558834075927734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
|
|
static_cast<T>(40.55123471588142408661425974969461094588L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.125)),
|
|
static_cast<T>(7.023593463003635406494140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.25)),
|
|
static_cast<T>(8.192829132080078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.75)),
|
|
static_cast<T>(19.558834075927734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(40.55123471588142408661425974969461094588L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.125)),
|
|
static_cast<T>(7.023593463003635406494140625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.25)),
|
|
static_cast<T>(8.192829132080078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.75)),
|
|
static_cast<T>(19.558834075927734375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(40.55123471588142408661425974969461094588L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 5
|
|
//
|
|
static const U d6c[6] = { 5, 11, 7, 12, 10, 5 };
|
|
static const boost::array<U, 6> d6a = { 5, 11, 7, 12, 10, 5 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.125), 6),
|
|
static_cast<T>(1.105787665293227020667219792530925829572L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.25), 6),
|
|
static_cast<T>(1.052430112515949425820670455863588910799L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.75), 6),
|
|
static_cast<T>(0.9120378868534087154447666948125848966555L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
|
|
static_cast<T>(0.8626539746676637108178973543021882567334L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.105787665293227020667219792530925829572L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.25)),
|
|
static_cast<T>(1.052430112515949425820670455863588910799L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.9120378868534087154447666948125848966555L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.8626539746676637108178973543021882567334L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.105787665293227020667219792530925829572L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.25)),
|
|
static_cast<T>(1.052430112515949425820670455863588910799L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.9120378868534087154447666948125848966555L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.8626539746676637108178973543021882567334L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 6
|
|
//
|
|
static const U n7c[7] = { 3, 4, 11, 5, 10, 7, 9 };
|
|
static const boost::array<U, 7> n7a = { 3, 4, 11, 5, 10, 7, 9 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.125), 7),
|
|
static_cast<T>(3.684329986572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.25), 7),
|
|
static_cast<T>(4.813720703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.75), 7),
|
|
static_cast<T>(20.723876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
|
|
static_cast<T>(46.413680258337990380823612213134765625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.684329986572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.25)),
|
|
static_cast<T>(4.813720703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.75)),
|
|
static_cast<T>(20.723876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(46.413680258337990380823612213134765625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.684329986572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.25)),
|
|
static_cast<T>(4.813720703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.75)),
|
|
static_cast<T>(20.723876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(46.413680258337990380823612213134765625L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.125), 7),
|
|
static_cast<T>(3.065205223058001138269901275634765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.25), 7),
|
|
static_cast<T>(3.294349253177642822265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.75), 7),
|
|
static_cast<T>(11.300772249698638916015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
|
|
static_cast<T>(44.00013192129567626077980251194602528964L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.065205223058001138269901275634765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.294349253177642822265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.75)),
|
|
static_cast<T>(11.300772249698638916015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.00013192129567626077980251194602528964L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.065205223058001138269901275634765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.294349253177642822265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.75)),
|
|
static_cast<T>(11.300772249698638916015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.00013192129567626077980251194602528964L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.125), 7),
|
|
static_cast<T>(3.521641784464009106159210205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.25), 7),
|
|
static_cast<T>(4.1773970127105712890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.75), 7),
|
|
static_cast<T>(14.0676963329315185546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
|
|
static_cast<T>(44.65092766607814731253821207562770823074L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.521641784464009106159210205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.25)),
|
|
static_cast<T>(4.1773970127105712890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.75)),
|
|
static_cast<T>(14.0676963329315185546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.65092766607814731253821207562770823074L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.521641784464009106159210205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.25)),
|
|
static_cast<T>(4.1773970127105712890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.75)),
|
|
static_cast<T>(14.0676963329315185546875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.65092766607814731253821207562770823074L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 6
|
|
//
|
|
static const U d7c[7] = { 2, 8, 10, 8, 1, 11, 1 };
|
|
static const boost::array<U, 7> d7a = { 2, 8, 10, 8, 1, 11, 1 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.125), 7),
|
|
static_cast<T>(1.161348466465698540596242849979738853664L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.25), 7),
|
|
static_cast<T>(1.010247476558897371522262642824204539632L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.75), 7),
|
|
static_cast<T>(1.03079575951134804308491906398377636644L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
|
|
static_cast<T>(1.183671559390403425417413542214181025989L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.161348466465698540596242849979738853664L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.25)),
|
|
static_cast<T>(1.010247476558897371522262642824204539632L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.75)),
|
|
static_cast<T>(1.03079575951134804308491906398377636644L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.183671559390403425417413542214181025989L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.161348466465698540596242849979738853664L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.25)),
|
|
static_cast<T>(1.010247476558897371522262642824204539632L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.75)),
|
|
static_cast<T>(1.03079575951134804308491906398377636644L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(1.183671559390403425417413542214181025989L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 7
|
|
//
|
|
static const U n8c[8] = { 9, 5, 6, 1, 12, 2, 11, 1 };
|
|
static const boost::array<U, 8> n8a = { 9, 5, 6, 1, 12, 2, 11, 1 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.125), 8),
|
|
static_cast<T>(9.723736286163330078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.25), 8),
|
|
static_cast<T>(10.69219970703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.75), 8),
|
|
static_cast<T>(22.90960693359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
|
|
static_cast<T>(44.70947054706607559637632220983505249023L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.125)),
|
|
static_cast<T>(9.723736286163330078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.25)),
|
|
static_cast<T>(10.69219970703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.75)),
|
|
static_cast<T>(22.90960693359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.70947054706607559637632220983505249023L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.125)),
|
|
static_cast<T>(9.723736286163330078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.25)),
|
|
static_cast<T>(10.69219970703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.75)),
|
|
static_cast<T>(22.90960693359375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(44.70947054706607559637632220983505249023L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.125), 8),
|
|
static_cast<T>(9.079594375725946520105935633182525634766L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.25), 8),
|
|
static_cast<T>(9.3363673128187656402587890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.75), 8),
|
|
static_cast<T>(15.5691558457911014556884765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
|
|
static_cast<T>(42.58457138999176910226338119632657870077L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.125)),
|
|
static_cast<T>(9.079594375725946520105935633182525634766L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.25)),
|
|
static_cast<T>(9.3363673128187656402587890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.75)),
|
|
static_cast<T>(15.5691558457911014556884765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.58457138999176910226338119632657870077L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.125)),
|
|
static_cast<T>(9.079594375725946520105935633182525634766L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.25)),
|
|
static_cast<T>(9.3363673128187656402587890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.75)),
|
|
static_cast<T>(15.5691558457911014556884765625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.58457138999176910226338119632657870077L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.125), 8),
|
|
static_cast<T>(9.636755005807572160847485065460205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.25), 8),
|
|
static_cast<T>(10.34546925127506256103515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.75), 8),
|
|
static_cast<T>(17.75887446105480194091796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
|
|
static_cast<T>(43.11765982475354321499772058039525455316L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.125)),
|
|
static_cast<T>(9.636755005807572160847485065460205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.25)),
|
|
static_cast<T>(10.34546925127506256103515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.75)),
|
|
static_cast<T>(17.75887446105480194091796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(43.11765982475354321499772058039525455316L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.125)),
|
|
static_cast<T>(9.636755005807572160847485065460205078125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.25)),
|
|
static_cast<T>(10.34546925127506256103515625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.75)),
|
|
static_cast<T>(17.75887446105480194091796875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(43.11765982475354321499772058039525455316L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 7
|
|
//
|
|
static const U d8c[8] = { 7, 10, 10, 11, 2, 4, 1, 7 };
|
|
static const boost::array<U, 8> d8a = { 7, 10, 10, 11, 2, 4, 1, 7 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.125), 8),
|
|
static_cast<T>(1.153693678861771369296601206130394355814L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.25), 8),
|
|
static_cast<T>(1.03714470093009762768860970830101771981L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.75), 8),
|
|
static_cast<T>(0.834289461108456229648481346061946410909L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
|
|
static_cast<T>(0.8981362736388035283180082845549732926578L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.125)),
|
|
static_cast<T>(1.153693678861771369296601206130394355814L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.25)),
|
|
static_cast<T>(1.03714470093009762768860970830101771981L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.834289461108456229648481346061946410909L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.8981362736388035283180082845549732926578L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.125)),
|
|
static_cast<T>(1.153693678861771369296601206130394355814L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.25)),
|
|
static_cast<T>(1.03714470093009762768860970830101771981L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.834289461108456229648481346061946410909L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.8981362736388035283180082845549732926578L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 8
|
|
//
|
|
static const U n9c[9] = { 3, 9, 3, 9, 5, 6, 10, 7, 10 };
|
|
static const boost::array<U, 9> n9a = { 3, 9, 3, 9, 5, 6, 10, 7, 10 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.125), 9),
|
|
static_cast<T>(4.19089901447296142578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.25), 9),
|
|
static_cast<T>(5.606536865234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.75), 9),
|
|
static_cast<T>(21.955535888671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
|
|
static_cast<T>(57.7754343750660055434309470001608133316L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.125)),
|
|
static_cast<T>(4.19089901447296142578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.25)),
|
|
static_cast<T>(5.606536865234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.75)),
|
|
static_cast<T>(21.955535888671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(57.7754343750660055434309470001608133316L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.125)),
|
|
static_cast<T>(4.19089901447296142578125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.25)),
|
|
static_cast<T>(5.606536865234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.75)),
|
|
static_cast<T>(21.955535888671875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(57.7754343750660055434309470001608133316L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.125), 9),
|
|
static_cast<T>(3.141392057908696244794555241242051124573L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.25), 9),
|
|
static_cast<T>(3.5764986560679972171783447265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.75), 9),
|
|
static_cast<T>(11.9936861679889261722564697265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
|
|
static_cast<T>(53.92583642412261279423815221065846904997L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.141392057908696244794555241242051124573L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.5764986560679972171783447265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.75)),
|
|
static_cast<T>(11.9936861679889261722564697265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(53.92583642412261279423815221065846904997L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.141392057908696244794555241242051124573L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.5764986560679972171783447265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.75)),
|
|
static_cast<T>(11.9936861679889261722564697265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(53.92583642412261279423815221065846904997L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.125), 9),
|
|
static_cast<T>(4.131136463269569958356441929936408996582L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.25), 9),
|
|
static_cast<T>(5.30599462427198886871337890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.75), 9),
|
|
static_cast<T>(14.99158155731856822967529296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
|
|
static_cast<T>(54.73418303402932093382923399178003205076L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.125)),
|
|
static_cast<T>(4.131136463269569958356441929936408996582L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.25)),
|
|
static_cast<T>(5.30599462427198886871337890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.75)),
|
|
static_cast<T>(14.99158155731856822967529296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(54.73418303402932093382923399178003205076L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.125)),
|
|
static_cast<T>(4.131136463269569958356441929936408996582L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.25)),
|
|
static_cast<T>(5.30599462427198886871337890625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.75)),
|
|
static_cast<T>(14.99158155731856822967529296875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(54.73418303402932093382923399178003205076L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 8
|
|
//
|
|
static const U d9c[9] = { 12, 3, 10, 4, 6, 6, 6, 10, 7 };
|
|
static const boost::array<U, 9> d9a = { 12, 3, 10, 4, 6, 6, 6, 10, 7 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.125), 9),
|
|
static_cast<T>(0.3341827920887278954826517708316980450243L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.25), 9),
|
|
static_cast<T>(0.4162555242250224594229316089330159747956L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.75), 9),
|
|
static_cast<T>(0.7844550246723573100342976024389406178802L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
|
|
static_cast<T>(0.959335028097323235424759017468360386113L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.3341827920887278954826517708316980450243L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.4162555242250224594229316089330159747956L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.7844550246723573100342976024389406178802L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.959335028097323235424759017468360386113L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.3341827920887278954826517708316980450243L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.4162555242250224594229316089330159747956L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.7844550246723573100342976024389406178802L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.959335028097323235424759017468360386113L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 9
|
|
//
|
|
static const U n10c[10] = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 };
|
|
static const boost::array<U, 10> n10a = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.125), 10),
|
|
static_cast<T>(3.544962465763092041015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.25), 10),
|
|
static_cast<T>(4.251861572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.75), 10),
|
|
static_cast<T>(14.716278076171875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
|
|
static_cast<T>(42.43246072286939307716124858416151255369L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.544962465763092041015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.25)),
|
|
static_cast<T>(4.251861572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.75)),
|
|
static_cast<T>(14.716278076171875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.43246072286939307716124858416151255369L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.544962465763092041015625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.25)),
|
|
static_cast<T>(4.251861572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.75)),
|
|
static_cast<T>(14.716278076171875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(42.43246072286939307716124858416151255369L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.125), 10),
|
|
static_cast<T>(3.063011647232116718697625401546247303486L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.25), 10),
|
|
static_cast<T>(3.259400503826327621936798095703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.75), 10),
|
|
static_cast<T>(8.067807371844537556171417236328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
|
|
static_cast<T>(39.22779295817342542834377568121069117613L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.063011647232116718697625401546247303486L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.259400503826327621936798095703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.75)),
|
|
static_cast<T>(8.067807371844537556171417236328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(39.22779295817342542834377568121069117613L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.063011647232116718697625401546247303486L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.259400503826327621936798095703125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.75)),
|
|
static_cast<T>(8.067807371844537556171417236328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(39.22779295817342542834377568121069117613L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.125), 10),
|
|
static_cast<T>(3.504093177856933749581003212369978427887L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.25), 10),
|
|
static_cast<T>(4.0376020153053104877471923828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.75), 10),
|
|
static_cast<T>(9.7570764957927167415618896484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
|
|
static_cast<T>(39.80283729084284487958732767615054341702L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.125)),
|
|
static_cast<T>(3.504093177856933749581003212369978427887L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.25)),
|
|
static_cast<T>(4.0376020153053104877471923828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.75)),
|
|
static_cast<T>(9.7570764957927167415618896484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(39.80283729084284487958732767615054341702L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.125)),
|
|
static_cast<T>(3.504093177856933749581003212369978427887L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.25)),
|
|
static_cast<T>(4.0376020153053104877471923828125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.75)),
|
|
static_cast<T>(9.7570764957927167415618896484375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(39.80283729084284487958732767615054341702L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 9
|
|
//
|
|
static const U d10c[10] = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 };
|
|
static const boost::array<U, 10> d10a = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.125), 10),
|
|
static_cast<T>(0.8027011456035955638016996485812217742707L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.25), 10),
|
|
static_cast<T>(0.7037718026559713894599659542655668311705L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.75), 10),
|
|
static_cast<T>(0.5819711007563332500606442409694389231031L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
|
|
static_cast<T>(0.6021345078884753739086911192013079405483L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.8027011456035955638016996485812217742707L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.7037718026559713894599659542655668311705L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.5819711007563332500606442409694389231031L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.6021345078884753739086911192013079405483L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.8027011456035955638016996485812217742707L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.7037718026559713894599659542655668311705L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.5819711007563332500606442409694389231031L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.6021345078884753739086911192013079405483L),
|
|
tolerance);
|
|
|
|
//
|
|
// Polynomials of order 10
|
|
//
|
|
static const U n11c[11] = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 };
|
|
static const boost::array<U, 11> n11a = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.125), 11),
|
|
static_cast<T>(2.39738257043063640594482421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.25), 11),
|
|
static_cast<T>(3.1906986236572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.75), 11),
|
|
static_cast<T>(18.7007007598876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
|
|
static_cast<T>(58.07897685780276847943015550157497273176L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.125)),
|
|
static_cast<T>(2.39738257043063640594482421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.25)),
|
|
static_cast<T>(3.1906986236572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.75)),
|
|
static_cast<T>(18.7007007598876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(58.07897685780276847943015550157497273176L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.125)),
|
|
static_cast<T>(2.39738257043063640594482421875L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.25)),
|
|
static_cast<T>(3.1906986236572265625L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.75)),
|
|
static_cast<T>(18.7007007598876953125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(58.07897685780276847943015550157497273176L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.125), 11),
|
|
static_cast<T>(2.033245269357184586631048794913567689946L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.25), 11),
|
|
static_cast<T>(2.158985776148256263695657253265380859375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.75), 11),
|
|
static_cast<T>(8.727145384755203849636018276214599609375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
|
|
static_cast<T>(53.63972553738812062759598952966094072427L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.125)),
|
|
static_cast<T>(2.033245269357184586631048794913567689946L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.25)),
|
|
static_cast<T>(2.158985776148256263695657253265380859375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.75)),
|
|
static_cast<T>(8.727145384755203849636018276214599609375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(53.63972553738812062759598952966094072427L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.125)),
|
|
static_cast<T>(2.033245269357184586631048794913567689946L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.25)),
|
|
static_cast<T>(2.158985776148256263695657253265380859375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.75)),
|
|
static_cast<T>(8.727145384755203849636018276214599609375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(53.63972553738812062759598952966094072427L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.125), 11),
|
|
static_cast<T>(2.265962154857476693048390359308541519567L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.25), 11),
|
|
static_cast<T>(2.6359431045930250547826290130615234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.75), 11),
|
|
static_cast<T>(10.9695271796736051328480243682861328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
|
|
static_cast<T>(54.4594037205212653994625925380682572437L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.125)),
|
|
static_cast<T>(2.265962154857476693048390359308541519567L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.25)),
|
|
static_cast<T>(2.6359431045930250547826290130615234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.75)),
|
|
static_cast<T>(10.9695271796736051328480243682861328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(54.4594037205212653994625925380682572437L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.125)),
|
|
static_cast<T>(2.265962154857476693048390359308541519567L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.25)),
|
|
static_cast<T>(2.6359431045930250547826290130615234375L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.75)),
|
|
static_cast<T>(10.9695271796736051328480243682861328125L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(54.4594037205212653994625925380682572437L),
|
|
tolerance);
|
|
|
|
//
|
|
// Rational functions of order 10
|
|
//
|
|
static const U d11c[11] = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 };
|
|
static const boost::array<U, 11> d11a = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 };
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.125), 11),
|
|
static_cast<T>(0.5718365676248588095654568811483084403598L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.25), 11),
|
|
static_cast<T>(0.6888631839546304707516922567568791812269L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.75), 11),
|
|
static_cast<T>(0.9783539912974912482969079012097816310129L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
|
|
static_cast<T>(0.9694017102874332007392886881642471036972L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.125)),
|
|
static_cast<T>(0.5718365676248588095654568811483084403598L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.25)),
|
|
static_cast<T>(0.6888631839546304707516922567568791812269L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.75)),
|
|
static_cast<T>(0.9783539912974912482969079012097816310129L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.9694017102874332007392886881642471036972L),
|
|
tolerance);
|
|
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.125)),
|
|
static_cast<T>(0.5718365676248588095654568811483084403598L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.25)),
|
|
static_cast<T>(0.6888631839546304707516922567568791812269L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.75)),
|
|
static_cast<T>(0.9783539912974912482969079012097816310129L),
|
|
tolerance);
|
|
BOOST_CHECK_CLOSE(
|
|
boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(1.0f - 1.0f/64.0f)),
|
|
static_cast<T>(0.9694017102874332007392886881642471036972L),
|
|
tolerance);
|
|
}
|
|
|
|
template <class T>
|
|
void test_spots(T t, const char* n)
|
|
{
|
|
std::cout << "Testing basic sanity checks for type " << n << std::endl;
|
|
do_test_spots(t, int(0));
|
|
do_test_spots(t, unsigned(0));
|
|
#ifdef BOOST_HAS_LONG_LONG
|
|
do_test_spots(t, (unsigned long long)(0));
|
|
#endif
|
|
do_test_spots(t, float(0));
|
|
do_test_spots(t, T(0));
|
|
}
|
|
|
|
int test_main(int, char* [])
|
|
{
|
|
test_spots(0.0F, "float");
|
|
test_spots(0.0, "double");
|
|
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
|
test_spots(0.0L, "long double");
|
|
test_spots(boost::math::concepts::real_concept(0.1), "real_concept");
|
|
#else
|
|
std::cout << "<note>The long double tests have been disabled on this platform "
|
|
"either because the long double overloads of the usual math functions are "
|
|
"not available at all, or because they are too inaccurate for these tests "
|
|
"to pass.</note>" << std::cout;
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
|