Divided Difference Polynomials

DIVDIF is a FORTRAN90 library which creates, prints and manipulates divided difference polynomials based on data tabulated at evenly spaced or unevenly spaced argument values.

Divided difference polynomials are a systematic method of computing polynomial approximations to scattered data. The representations are compact, and may easily be updated with new data, rebased at zero, or analyzed to produce the standard form polynomial, integral or derivative polynomials.

Other routines are available to convert the divided difference representation to standard polynomial format. This is a natural way to determine the coefficients of the polynomial that interpolates a given set of data, for instance.

One surprisingly simple but useful routine is available to take a set of roots and compute the divided difference or standard form polynomial that passes through those roots.

Finally, the Newton-Cotes quadrature formulas can be derived using divided difference methods, so a few routines are given which can compute the weights and abscissas of open or closed rules for an arbitrary number of nodes.


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


DIVDIF is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

BERNSTEIN_POLYNOMIAL, a FORTRAN90 library which evaluates the Bernstein polynomials, useful for uniform approximation of functions;

CHEBYSHEV, a FORTRAN90 library which computes the Chebyshev interpolant/approximant to a given function over an interval.

DIFFER, a FORTRAN90 library which determines the finite difference coefficients necessary in order to combine function values at known locations to compute an approximation of given accuracy to a derivative of a given order.

HERMITE, a FORTRAN90 library which computes the Hermite interpolant, a polynomial that matches function values and derivatives.

LAGRANGE_INTERP_1D, a FORTRAN90 library which defines and evaluates the Lagrange polynomial p(x) which interpolates a set of data, so that p(x(i)) = y(i).

PPPACK, a FORTRAN90 library which computes piecewise polynomial functions, including cubic splines.

RBF_INTERP, a FORTRAN90 library which defines and evaluates radial basis interpolants to multidimensional data.

SPLINE, a FORTRAN90 library which can construct and evaluate spline interpolants and approximants.

TEST_APPROX, a FORTRAN90 library which defines test functions for approximation and interpolation.

TOMS446, a FORTRAN90 library which manipulates Chebyshev series for interpolation and approximation;
this is a version of ACM TOMS algorithm 446, by Roger Broucke.

VANDERMONDE_INTERP_1D, a FORTRAN90 library which finds a polynomial interpolant to data y(x) of a 1D argument, by setting up and solving a linear system for the polynomial coefficients, involving the Vandermonde matrix.


  1. Philip Davis,
    Interpolation and Approximation,
    Dover, 1975,
    ISBN: 0-486-62495-1,
    LC: QA221.D33
  2. Carl deBoor,
    A Practical Guide to Splines,
    Springer, 2001,
    ISBN: 0387953663,
    LC: QA1.A647.v27.
  3. Jean-Paul Berrut, Lloyd Trefethen,
    Barycentric Lagrange Interpolation,
    SIAM Review,
    Volume 46, Number 3, September 2004, pages 501-517.
  4. FM Larkin,
    Root Finding by Divided Differences,
    Numerische Mathematik,
    Volume 37, pages 93-104, 1981.

Source Code:

Examples and Tests:

List of Routines:

You can go up one level to the FORTRAN90 source codes.

Last revised on 25 May 2011.