Ten Subroutines for the Manipulation of Chebyshev Series

TOMS446 is a C++ library which implements ACM TOMS algorithm 446, for the manipulation of Chebyshev series, by Roger Broucke.

While the text of many ACM TOMS algorithms is available online through ACM: or NETLIB:, most of the early algorithms are not available. This is one of them. I typed it in.


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


TOMS446 is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

BERNSTEIN, a C++ library which evaluates the Bernstein polynomials, useful for uniform approximation of functions;

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

CHEBYSHEV_SERIES, a C++ library which can evaluate a Chebyshev series approximating a function f(x), while efficiently computing one, two or three derivatives of the series, which approximate f'(x), f''(x), and f'''(x), by Manfred Zimmer.

DIVDIF, a C++ library which computes interpolants by divided differences.

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

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

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


Original FORTRAN77 version by Roger Broucke; C++ version by John Burkardt.


  1. Roger Broucke,
    Algorithm 446: Ten Subroutines for the Manipulation of Chebyshev Series,
    Communications of the ACM,
    October 1973, Volume 16, Number 4, pages 254-256.

Source Code:

Examples and Tests:

List of Routines:

You can go up one level to the C++ source codes.

Last revised on 23 September 2011.