CLENSHAW_CURTIS is a FORTRAN90 program, using double precision arithmetic, which can set up a Clenshaw Curtis quadrature rule in one or multiple dimensions.
Routines are available to look up or compute the weights and abscissas of the 1D rule.
The code includes a routine to set the abscissas of a multiple dimension product rule.
It is easy to generate a Clenshaw Curtis grid of any order N. Of special interest are nested grids, particularly those for which the nesting involves repeated divisions of the interval length by 2. In such a case, the data computed from the previous step can be reused, and the new data allows for an inexpensive estimate of the rate of error decrease. In the 1D case, we can keep track of such a nested sequence of rules by the "level", which, except for the zeroth level, has a simple relationship to the order N:
| LEVEL | N | H |
|---|---|---|
| 0 | 1 | 2 |
| 1 | 3=2+1 | 1 |
| 2 | 5=4+1 | 1/2 |
| 3 | 9=8+1 | 1/4 |
| 4 | 17=16+1 | 1/8 |
| 5 | 33=32+1 | 1/16 |
The code includes routines which pack into a single array all the abscissas associated with several Clenshaw Curtis grids of abscissas, with the grids selected in one of two ways.
Two selection rules are available.
For the first "MINMAX" selection rule, we define the quantity Q to be the sum of the 1D orders:
Q = sum ( 1 <= I <= DIM_NUM ) ORDER(I)
and then select all grids for which
Q_MIN <= Q <= Q_MAX.
For the second "CONSTRAINED" selection rule, we define the quantity Q to be the weighted sum of the 1D orders:
Q = sum ( 1 <= I <= DIM_NUM ) ALPHA(I) * ORDER(I)
and we require that the orders be bounded:
ORDER_MIN(I) <= ORDER(I) <= ORDER_MAX(I).
and then select all grids for which
Q <= Q_MAX.
CC_DISPLAY is a MATLAB program which can display various 2D Clenshaw Curtis grids.
CLENSHAW_CURTIS is also available in a C++ version and a MATLAB version.
FEKETE is a FORTRAN90 library which defines a Fekete rule for quadrature or interpolation over a triangle.
INTLIB is a FORTRAN90 library which contains routines for numerical estimation of integrals in 1D.
NESTED_SEQUENCE_DISPLAY is a MATLAB program which can display a set of nested 1D sequences.
NINT_EXACTNESS is a FORTRAN90 program which demonstrates how to measure the polynomial exactness of a multidimensional quadrature rule.
NINTLIB is a FORTRAN90 library which contains a variety of routines for numerical estimation of integrals in multiple dimensions.
PRODUCT_FACTOR is a FORTRAN90 program which constructs a product rule from distinct 1D factor rules.
PRODUCT_RULE is a FORTRAN90 program which constructs a product rule from identical 1D factor rules.
QUADPACK is a FORTRAN90 library which contains a variety of routines for numerical estimation of integrals in 1D.
QUADRATURE_RULES is a dataset directory which contains sets of files that define quadrature rules over various 1D intervals or multidimensional hypercubes.
QUADRULE is a FORTRAN90 library which contains quadrature rules.
SPARSE_GRID_CLOSED is a FORTRAN90 library which generates points on sparse grids associated with closed quadrature rules, including the Clenshaw-Curtis rule.
SPARSE_GRID_DISPLAY is a MATLAB library which can display a sparse grid in 2D or 3D.
STROUD is a FORTRAN90 library which contains quadrature rules for a variety of unusual areas, surfaces and volumes in 2D, 3D and N-dimensions.
TEST_INT is a FORTRAN90 library which contains functions that may be used as test integrands for quadrature rules in 1D.
TEST_NINT is a FORTRAN90 library which containsn functions that may be used as test integrands for quadrature rules in multiple dimensions.
TOMS351 is a FORTRAN77 library which estimates an integral using Romberg integration.
TOMS379 is a FORTRAN77 library which estimates an integral.
TOMS418 is a FORTRAN77 library which estimates the integral of a function with a sine or cosine factor.
TOMS424 is a FORTRAN77 library which estimates the integral of a function using Clenshaw-Curtis quadrature.
TOMS468 is a FORTRAN77 library which "automatically" integrates a function.
CC_1D is an image of the abscissas of a nested sequence of Clenshaw Curtis rules.
CC_D1_O9 is a Clenshaw Curtis rule for 1D, using an order 9 rule.
CC_D4_O3X3X3X3 is a Clenshaw Curtis rule for 4D, using a product of order 3 rules.
You can go up one level to the FORTRAN90 source codes.