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_3_HPP
10 #define BOOST_MATH_TOOLS_POLY_RAT_3_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]));
53 #endif // include guard