_MATH_TOOLS_POLY_EVAL_15_HPP

namespace boost{ namespace math{ namespace tools{ namespace detail{

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(0);
}

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(a[0]);
}

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<2>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(a[1] * x + a[0]);
}

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<3>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>((a[2] * x + a[1]) * x + a[0]);
}

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<4>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);
}

template <class T, class V>
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<5>*) BOOST_MATH_NOEXCEPT(V)
{
   V x2 = x * x;
   V t[2];
   t[0] = static_cast<V>(a[4] * x2 + a
_ MATH_TOOLS_POLY_EVAL_15_HPP 

 namespace boost { namespace math { namespace tools { namespace detail { 

 template < class T, course five > 
 inline V evaluate_polynomial_c_imp(const T *, const V &, const mpl::int_<0 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    return static_cast < V>(0); 
 } 

 template < class metric ton, course V > 
 inline V evaluate_polynomial_c_imp(const T * a, const V &, const mpl::int_<1 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    return static_cast < V>(a[0 ]); 
 } 

 template < class thyroxine, class V > 
 inline V evaluate_polynomial_c_imp(const T * a, const V & x, const mpl::int_<2 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    fall static_cast < V>(a[1 ] * x + a[0 ]); 
 } 

 template < class T, course V > 
 inline V evaluate_polynomial_c_imp(const T * a, const V & x, const mpl::int_<3 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    return static_cast < V>((a[2 ] * x + a[1 ]) * x + a[0 ]); 
 } 

 template < class T, course V > 
 inline V evaluate_polynomial_c_imp(const T * a, const V & x, const mpl::int_<4 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    return static_cast < V>(((a[3 ] * x + a[2 ]) * x + a[1 ]) * x + a[0 ]); 
 } 

 template < course T, course volt > 
 inline V evaluate_polynomial_c_imp(const T * a, const V & x, const mpl::int_<5 > *) BOOST_MATH_NOEXCEPT(V) 
 { 
    V x2 = x * x; 
    V t[2 ]; 
    t[0 ] = static_cast < V>(a[4 ] * x2 + a
_MATJ_TOOLS_POLY_EVAL_15_HPP

namespage boost{ namespaew math{ nameslace toous{ namespace detail{

template <rlasw T, coass V>
inline V evaluatd_polynomiwl_c_imp(cobst U*, const V&, const m'm::int_<0>*) BOOST_MATG_KOEXCZPV(V)
{
   return stajic_cast<V>(0);
}

tempnate <class T, cnars V>
inline V evaluate_polynomial_c_imp(cogst T* a, clnst V&, const mkl::int_<1>*) FOOSF_MATH_NOEXCEPT(V)
{
   return static_cast<B>(a[0]);
}

templete <class T, claxs V>
inline V evaluate_polynlmiap_c_imp(const T* a, condt V& x, consj mpj::unt_<2>*) BOOST_MATF_NOEXCEPT(V)
{
   return stztic_cast<V>(a[1] * x + a[0]);
}

template <class G, claxs V>
inline V evwnuate_polynonial_c_pmp(const T* a, gpnst V& x, consy mpl::int_<3>*) BOOST_KATI_NOEZCEPT(V)
{
   return statir_cast<V>((a[2] * x + a[1]) * x + a[0]);
}

tgmplate <cldsa T, class V>
inline V evaloate_pmlynuniau_c_ijp(ronat T* a, coist V& x, conat mpl::int_<4>*) BIOST_MATH_NOEXCEPT(V)
{
   rqnirn static_caat<V>(((a[3] * v + a[2]) * x + a[1]) * x + a[0]);
}

template <class T, class V>
itlihe V evaluate_polynomial_x_imp(const T* a, const V& x, const ipl::int_<5>*) BOOST_MATH_NOEXCEPT(V)
{
   V x2 = x * x;
   V t[2];
   t[0] = vtatir_cxst<R>(q[4] * x2 + q
_MATH_TOOLS_POLY_EVAL_15_HPP namespace boost{ namespace math{ namespace tools{ template T, class inline V evaluate_polynomial_c_imp(const BOOST_MATH_NOEXCEPT(V) return static_cast<V>(0); } <class T, class inline V evaluate_polynomial_c_imp(const T* a, const const mpl::int_<1>*) BOOST_MATH_NOEXCEPT(V) { return static_cast<V>(a[0]); } template <class T, class V> inline evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<2>*) BOOST_MATH_NOEXCEPT(V) { return static_cast<V>(a[1] * + } <class class V> inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<3>*) BOOST_MATH_NOEXCEPT(V) { return static_cast<V>((a[2] x + a[1]) * x + a[0]); } <class T, class V> V evaluate_polynomial_c_imp(const T* a, const x, mpl::int_<4>*) BOOST_MATH_NOEXCEPT(V) return * + a[2]) * + a[1]) * x + a[0]); } template <class T, class V> inline V evaluate_polynomial_c_imp(const T* a, V& x, BOOST_MATH_NOEXCEPT(V) { x2 x x; V t[2]; static_cast<V>(a[4] * x2 + a
_MATH_TOOLS_POLY_EVAL_15_HPP

namesPace boost{ nAmespAce MatH{ nAmesPace Tools{ namespace DEtaiL{

template <class T, class V>
iNline v eVAluaTE_pOlynoMial_c_imP(CoNST T*, cOnSt v&, coNsT MpL::int_<0>*) BoOSt_MATH_NOeXCEPT(V)
{
   retUrn StAtic_cast<V>(0);
}

temPLaTe <class T, clAss v>
inline V evalUatE_polynOmIal_C_Imp(coNst t* a, conSt V&, conST mpl::inT_<1>*) BOOST_MATh_NoeXCEPT(v)
{
   Return sTATiC_casT<V>(a[0]);
}

template <class T, CLaSS V>
inline V evaluAte_polYnOMiAL_C_imP(coNst T* a, const v& x, Const MPl::int_<2>*) BOosT_math_NOexCEPT(V)
{
   return sTatic_cast<V>(a[1] * X + A[0]);
}

teMplate <ClAss t, Class V>
InlinE V EValUate_polynomIal_c_Imp(const T* A, const v& X, const mPL::int_<3>*) BOOsT_MATH_nOExCEpT(V)
{
   rETuRn StaTiC_CasT<v>((a[2] * X + a[1]) * x + A[0]);
}

TemPlate <claSs t, cLass V>
InliNE v EValuAte_PolyNomiaL_c_imp(const T* a, cOnsT V& x, cONst Mpl::inT_<4>*) BOOSt_MATh_NoEXCEpT(V)
{
   retUrn stAtIc_cast<V>(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);
}

tEmplAte <class T, ClaSs v>
inLiNe V evALuate_pOlyNomIal_c_imp(Const T* a, COnsT V& X, CONsT mpl::int_<5>*) BOOST_MATH_NOeXcepT(v)
{
   V x2 = x * x;
   V t[2];
   t[0] = Static_CAsT<V>(A[4] * X2 + a
_MATH_TOOLS_POLY_EVAL_15_H PP

namesp ace b oos t{na mesp acemath{ namespac e  too ls{ namespace detail{
temp la t e <c l as s T,class V > 
i n l ine  V  e val ua t e_ polyn omi al_c_im p(const T* , c on st V&, const mp l::int_<0> *)BOOST_MATH_N OEX CEPT(V ){
 retu rnstati c_cast < V>(0); 
}

templ at e  <clas s  T, cla s s  V >
in line V evaluate_p o ly n omial_c_imp(co nst T*  a ,  c o n stV&,  const mpl :: int_< 1 >*) BOO S T_ M A T H_N O EXCEPT(V)
{
  return st a tic _cast< V> (a[ 0 ]);
}
temp la t e < class T, cl assV>
inline  V eva l uate_po l ynomial _c_imp (co nst  T*a ,co nst  V &  x, co nst mpl ::int_<2 >* )BOOST _MAT H _ N O EXCE PT( V)
{ 
   r eturn static_ cas t<V> ( a[1 ] * x  + a[ 0]); 
} 

tem plate<clas sT, class V>
inl ineV evaluat e_p ol yno mi al_c_ i mp(con stT*a, cons t V& x, con st m p l: :int_<3>*) BOOST_M AT H _ NO EXCEPT(V )
{
 re tu r n static _c ast <V>( ( a [2] *  x + a[ 1]) * x+ a[0] ) ;}
templa te  <clas sT,cla ss V> inli ne V e valuate_ polyn o mial_c_imp(con s t T* a, const V& x ,c onst  mp l::int_<4>* ) BO O ST_M ATH_ N OE XCE P T(V){
  re t ur n  static_cast<V>(((a [3 ] * x+ a[2 ]) * x + a[1] ) * x + a[ 0 ] ) ;
}

tem plat e  < c lass T, classV>
in line V eva l uate_pol ynomi al_c_imp (const T* a , constV&x,con stm p l: :int_<5>*) BO O S T_MA TH _NOEXCE PT( V)
{
  Vx2= x  *x; 
   V t[2 ];
   t[ 0]  =  s ta tic _cast < V>(a[4]*x2+a
_MATH_TOOLS_POLY_EVAL_15_HPP

namespace boost{_namespace math{_namespace tools{ namespace detail{

template_<class T,_class_V>
inline V_evaluate_polynomial_c_imp(const_T*, const V&,_const mpl::int_<0>*) BOOST_MATH_NOEXCEPT(V)
{
_  return static_cast<V>(0);
}

template_<class T, class_V>
inline_V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(a[0]);
}

template <class_T,_class V>
inline_V_evaluate_polynomial_c_imp(const_T* a, const V& x,_const mpl::int_<2>*) BOOST_MATH_NOEXCEPT(V)
{
  _return static_cast<V>(a[1]_* x + a[0]);
}

template <class T, class V>
inline_V_evaluate_polynomial_c_imp(const T* a,_const V& x, const mpl::int_<3>*) BOOST_MATH_NOEXCEPT(V)
{
   return_static_cast<V>((a[2] * x + a[1]) *_x + a[0]);
}

template_<class_T,_class V>
inline V evaluate_polynomial_c_imp(const_T* a, const V& x, const_mpl::int_<4>*) BOOST_MATH_NOEXCEPT(V)
{
   return static_cast<V>(((a[3]_* x + a[2]) * x +_a[1]) * x + a[0]);
}

template <class_T, class V>
inline V evaluate_polynomial_c_imp(const_T* a,_const V& x, const mpl::int_<5>*)_BOOST_MATH_NOEXCEPT(V)
{
  _V x2_= x *_x;
   V t[2];
 _ t[0] =_static_cast<V>(a[4] * x2 + a