Рассмотрим программу для расчета значения полинома в общем виде:
y = anxn + an-1xn-1 + ... + a1x1 + a0
Решение "в лоб" даст нам:
y = a[0] xi = 1 for i = 1 to n xi = x * xi y = y + a[i] * xi
Код делает 2*n умножений(n - размерность полинома). Многовато, с учетом того, что умножение не самая элементарная операция. К счастью существует более быстрая программа.
По схеме Горнера значение полинома может быть вычислено, следующим образом:
y = a[n] for i = n-1 downto 0 y = x * y + a[i]
В программе используется n умножений и она обычно работает вдвое быстрее.