#ifndef POLYNOMIAL_COMPUTE_H
#define POLYNOMIAL_COMPUTE_H
//
// 多项式计算:
// 霍纳规则 T = a0 + x(a1 + x(a2 + .... + x(an-1 + xan)...))
//
template <typename Iterator, typename Val>
Val polynomial_compute(Iterator a0, Iterator an, Val x)
{
// Initialize the result
Val result = Val();
// Do T‘ = x(a1 + x(a2 + .... + x(an-1 + xan)...))
while (--an != a0)
{
result += *an;
result *= x;
}
// Do T = a0 + T‘
return result += *a0;
}
#endif