In
mathematics
Mathematics is a field of study that discovers and organizes methods, Mathematical theory, theories and theorems that are developed and Mathematical proof, proved for the needs of empirical sciences and mathematics itself. There are many ar ...
and
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, polynomial evaluation refers to computation of the value of a
polynomial
In mathematics, a polynomial is a Expression (mathematics), mathematical expression consisting of indeterminate (variable), indeterminates (also called variable (mathematics), variables) and coefficients, that involves only the operations of addit ...
when its
indeterminates are substituted for some values. In other words, evaluating the polynomial
at
consists of computing
See also
For evaluating the
univariate polynomial
In mathematics, a polynomial is a mathematical expression consisting of indeterminates (also called variables) and coefficients, that involves only the operations of addition, subtraction, multiplication and exponentiation to nonnegative integer ...
the most naive method would use
multiplications to compute
, use
multiplications to compute
and so on for a total of
multiplications and
additions.
Using better methods, such as
Horner's rule, this can be reduced to
multiplications and
additions. If some preprocessing is allowed, even more savings are possible.
Background
This problem arises frequently in practice. In
computational geometry, polynomials are used to compute function approximations using
Taylor polynomials. In
cryptography
Cryptography, or cryptology (from "hidden, secret"; and ''graphein'', "to write", or ''-logy, -logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of Adversary (cryptography), ...
and
hash table
In computer science, a hash table is a data structure that implements an associative array, also called a dictionary or simply map; an associative array is an abstract data type that maps Unique key, keys to Value (computer science), values. ...
s, polynomials are used to compute
''k''-independent hashing.
In the former case, polynomials are evaluated using
floating-point arithmetic
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
, which is not exact. Thus different schemes for the evaluation will, in general, give slightly different answers. In the latter case, the polynomials are usually evaluated in a
finite field
In mathematics, a finite field or Galois field (so-named in honor of Évariste Galois) is a field (mathematics), field that contains a finite number of Element (mathematics), elements. As with any field, a finite field is a Set (mathematics), s ...
, in which case the answers are always exact.
General methods
Horner's rule
Horner's method evaluates a polynomial using repeated bracketing:
This method reduces the number of multiplications and additions to just
Horner's method is so common that a computer instruction "
multiply–accumulate operation" has been added to many computer processors, which allow doing the addition and multiplication operations in one combined step.
Multivariate
If the polynomial is multivariate, Horner's rule can be applied recursively over some ordering of the variables.
E.g.
:
can be written as
:
An efficient version of this approach was described by Carnicer and Gasca.
Estrin's scheme
While it's not possible to do less computation than Horner's rule (without preprocessing), on modern computers the order of evaluation can matter a lot for the computational efficiency.
A method known as
Estrin's scheme computes a (single variate) polynomial in a tree like pattern:
Combined by
Exponentiation by squaring, this allows parallelizing the computation.
Evaluation with preprocessing
Arbitrary polynomials can be evaluated with fewer
operations than Horner's rule requires if we first "preprocess"
the coefficients
.
An example was first given by Motzkin who noted that
:
can be written as
:
where the values
are computed in advanced, based on
.
Motzkin's method uses just 3 multiplications compared to Horner's 4.
The values for each
can be easily computed by expanding
and equating the coefficients:
:
Example
To compute the
Taylor expansion ,
we can upscale by a factor 24, apply the above steps, and scale back down.
That gives us the three multiplication computation
:
Improving over the equivalent Horner form (that is
) by 1 multiplication.
Some general methods include the
Knuth–Eve algorithm and the
Rabin–Winograd algorithm.
Multipoint evaluation
Evaluation of a degree-n polynomial
at multiple points
can be done with
multiplications by using
Horner's method
In mathematics and computer science, Horner's method (or Horner's scheme) is an algorithm for polynomial evaluation. Although named after William George Horner, this method is much older, as it has been attributed to Joseph-Louis Lagrange by Hor ...
times. Using the above preprocessing approach, this can be reduced by a factor of two; that is, to
multiplications.
However, it is possible to do better and reduce the time requirement to just
.
The idea is to define two polynomials that are zero in respectively the first and second half of the points:
and
.
We then compute
and
using the
Polynomial remainder theorem
In algebra, the polynomial remainder theorem or little Bézout's theorem (named after Étienne Bézout) is an application of Euclidean division of polynomials. It states that, for every number r, any polynomial f(x) is the sum of f(r) and the p ...
, which can be done in
time using a
fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). A Fourier transform converts a signal from its original domain (often time or space) to a representation in ...
.
This means
and
by construction, where
and
are polynomials of degree at most
.
Because of how
and
were defined, we have
:
Thus to compute
on all
of the
, it suffices to compute the smaller polynomials
and
on each half of the points.
This gives us a
divide-and-conquer algorithm
In computer science, divide and conquer is an algorithm design paradigm. A divide-and-conquer algorithm recursively breaks down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved dir ...
with
, which implies
by the
master theorem.
In the case where the points in which we wish to evaluate the polynomials have some structure, simpler methods exist.
For example, Knuth section 4.6.4
gives a method for tabulating polynomial values of the type
:
Dynamic evaluation
In the case where
are not known in advance,
Kedlaya and Umans gave a data structure for evaluating polynomials over a
finite field
In mathematics, a finite field or Galois field (so-named in honor of Évariste Galois) is a field (mathematics), field that contains a finite number of Element (mathematics), elements. As with any field, a finite field is a Set (mathematics), s ...
of size
in time
per evaluation after some initial preprocessing.
This was shown by
Larsen to be essentially optimal.
The idea is to transform
of degree
into a
multivariate polynomial , such that
and the individual degrees of
is at most
.
Since this is over
, the largest value
can take (over
) is
.
Using the
Chinese remainder theorem
In mathematics, the Chinese remainder theorem states that if one knows the remainders of the Euclidean division of an integer ''n'' by several integers, then one can determine uniquely the remainder of the division of ''n'' by the product of thes ...
, it suffices to evaluate
modulo different primes
with a product at least
.
Each prime can be taken to be roughly
, and the number of primes needed,
, is roughly the same.
Doing this process recursively, we can get the primes as small as
.
That means we can compute and store
on all the possible values in
time and space.
If we take
, we get
, so the time/space requirement is just
Kedlaya and Umans further show how to combine this preprocessing with fast (FFT) multipoint evaluation.
This allows optimal algorithms for many important algebraic problems, such as polynomial
modular composition.
Specific polynomials
While general polynomials require
operations to evaluate, some polynomials can be computed much faster.
For example, the polynomial
can be computed using just one multiplication and one addition since
Evaluation of powers
A particularly interesting type of polynomial is powers like
.
Such polynomials can always be computed in
operations.
Suppose, for example, that we need to compute
; we could simply start with
and multiply by
to get
.
We can then multiply that by itself to get
and so on to get
and
in just four multiplications.
Other powers like
can similarly be computed efficiently by first computing
by 2 multiplications and then multiplying by
.
The most efficient way to compute a given power
is provided by
addition-chain exponentiation. However, this requires designing a specific algorithm for each exponent, and the computation needed for designing these algorithms are difficult (
NP-complete
In computational complexity theory, NP-complete problems are the hardest of the problems to which ''solutions'' can be verified ''quickly''.
Somewhat more precisely, a problem is NP-complete when:
# It is a decision problem, meaning that for any ...
), so exponentiation by squaring is generally preferred for effective computations.
Polynomial families
Often polynomials show up in a different form than the well known
.
For polynomials in
Chebyshev form we can use
Clenshaw algorithm.
For polynomials in
Bézier form we can use
De Casteljau's algorithm,
and for
B-spline
In numerical analysis, a B-spline (short for basis spline) is a type of Spline (mathematics), spline function designed to have minimal Support (mathematics), support (overlap) for a given Degree of a polynomial, degree, smoothness, and set of bre ...
s there is
De Boor's algorithm
In the mathematical subfield of numerical analysis, de Boor's algorithmC. de Boor 971 "Subroutine package for calculating with B-splines", Techn.Rep. LA-4728-MS, Los Alamos Sci.Lab, Los Alamos NM; p. 109, 121. is a polynomial-time and numericall ...
.
Hard polynomials
The fact that some polynomials can be computed significantly faster than "general polynomials" suggests the question: Can we give an example of a simple polynomial that cannot be computed in time much smaller than its degree?
Volker Strassen has shown that the polynomial
:
cannot be evaluated with less than
multiplications and
additions.
At least this bound holds if only operations of those types are allowed, giving rise to a so-called "polynomial chain of length