# Accurate Polynomial Evaluation in Floating Point

What are the most accurate algorithms for evaluating a polynomial using floating point arithmetic? The internet seems to suggest that Horner's method is commonly used. In particular I have a cubic polynomial of the form f(x) = a x^3 + b x^2 + c x + d, which I am evaluating in the naive way with floating point arithmetic, and was curious whether some recursive approach or some refactoring would give a more accurate result. That is, a result closer to what I would get if I were to evaluate the polynomial exactly or with a metric ton of precision in Mathematica.

• A key question, also, is: what is your input? Sometimes you get coefficients in different "bases", for instance you may want to evaluate the polynomial such that $p(0)=0$, $p(1)=5$, $p(2)=3$, $p(3)=5$ in $x=10$ (interpolation). – Federico Poloni Sep 1 '20 at 14:52
• Are you dealing with piecewise cubic splines? – Brian Borchers Sep 2 '20 at 15:48

The stability of Horner can be improved by subtracting a constant from each $$x$$ in the Horner form.