1 // (C) Copyright John Maddock 2007.
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 // This file is machine generated, do not edit by hand
8 // Polynomial evaluation using Horners rule
9 #ifndef BOOST_MATH_TOOLS_POLY_RAT_6_HPP
10 #define BOOST_MATH_TOOLS_POLY_RAT_6_HPP
12 namespace boost
{ namespace math
{ namespace tools
{ namespace detail
{
14 template <class T
, class U
, class V
>
15 inline V
evaluate_rational_c_imp(const T
*, const U
*, const V
&, const mpl::int_
<0>*) BOOST_MATH_NOEXCEPT(V
)
17 return static_cast<V
>(0);
20 template <class T
, class U
, class V
>
21 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
&, const mpl::int_
<1>*) BOOST_MATH_NOEXCEPT(V
)
23 return static_cast<V
>(a
[0]) / static_cast<V
>(b
[0]);
26 template <class T
, class U
, class V
>
27 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
& x
, const mpl::int_
<2>*) BOOST_MATH_NOEXCEPT(V
)
30 return static_cast<V
>((a
[1] * x
+ a
[0]) / (b
[1] * x
+ b
[0]));
34 return static_cast<V
>((a
[0] * z
+ a
[1]) / (b
[0] * z
+ b
[1]));
38 template <class T
, class U
, class V
>
39 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
& x
, const mpl::int_
<3>*) BOOST_MATH_NOEXCEPT(V
)
42 return static_cast<V
>(((a
[2] * x
+ a
[1]) * x
+ a
[0]) / ((b
[2] * x
+ b
[1]) * x
+ b
[0]));
46 return static_cast<V
>(((a
[0] * z
+ a
[1]) * z
+ a
[2]) / ((b
[0] * z
+ b
[1]) * z
+ b
[2]));
50 template <class T
, class U
, class V
>
51 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
& x
, const mpl::int_
<4>*) BOOST_MATH_NOEXCEPT(V
)
54 return static_cast<V
>((((a
[3] * x
+ a
[2]) * x
+ a
[1]) * x
+ a
[0]) / (((b
[3] * x
+ b
[2]) * x
+ b
[1]) * x
+ b
[0]));
58 return static_cast<V
>((((a
[0] * z
+ a
[1]) * z
+ a
[2]) * z
+ a
[3]) / (((b
[0] * z
+ b
[1]) * z
+ b
[2]) * z
+ b
[3]));
62 template <class T
, class U
, class V
>
63 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
& x
, const mpl::int_
<5>*) BOOST_MATH_NOEXCEPT(V
)
66 return static_cast<V
>(((((a
[4] * x
+ a
[3]) * x
+ a
[2]) * x
+ a
[1]) * x
+ a
[0]) / ((((b
[4] * x
+ b
[3]) * x
+ b
[2]) * x
+ b
[1]) * x
+ b
[0]));
70 return static_cast<V
>(((((a
[0] * z
+ a
[1]) * z
+ a
[2]) * z
+ a
[3]) * z
+ a
[4]) / ((((b
[0] * z
+ b
[1]) * z
+ b
[2]) * z
+ b
[3]) * z
+ b
[4]));
74 template <class T
, class U
, class V
>
75 inline V
evaluate_rational_c_imp(const T
* a
, const U
* b
, const V
& x
, const mpl::int_
<6>*) BOOST_MATH_NOEXCEPT(V
)
78 return static_cast<V
>((((((a
[5] * x
+ a
[4]) * x
+ a
[3]) * x
+ a
[2]) * x
+ a
[1]) * x
+ a
[0]) / (((((b
[5] * x
+ b
[4]) * x
+ b
[3]) * x
+ b
[2]) * x
+ b
[1]) * x
+ b
[0]));
82 return static_cast<V
>((((((a
[0] * z
+ a
[1]) * z
+ a
[2]) * z
+ a
[3]) * z
+ a
[4]) * z
+ a
[5]) / (((((b
[0] * z
+ b
[1]) * z
+ b
[2]) * z
+ b
[3]) * z
+ b
[4]) * z
+ b
[5]));
89 #endif // include guard