# GL Profile Suite / boost_1_51_0 / boost / math / tools / detail / rational_horner1_3.hpp

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54``` ```// (C) Copyright John Maddock 2007. // 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) // // This file is machine generated, do not edit by hand // Polynomial evaluation using Horners rule #ifndef BOOST_MATH_TOOLS_POLY_RAT_3_HPP #define BOOST_MATH_TOOLS_POLY_RAT_3_HPP namespace boost{ namespace math{ namespace tools{ namespace detail{ template inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*) { return static_cast(0); } template inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*) { return static_cast(a[0]) / static_cast(b[0]); } template inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<2>*) { if(x <= 1) return static_cast((a[1] * x + a[0]) / (b[1] * x + b[0])); else { V z = 1 / x; return static_cast((a[0] * z + a[1]) / (b[0] * z + b[1])); } } template inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<3>*) { if(x <= 1) return static_cast(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0])); else { V z = 1 / x; return static_cast(((a[0] * z + a[1]) * z + a[2]) / ((b[0] * z + b[1]) * z + b[2])); } } }}}} // namespaces #endif // include guard ```