product_rule, a C code which creates a multidimensional quadrature rule by using a product of distinct one-dimensional quadrature rules.
The program reads a single input file, which contains a list that defines the 1D rules to be used as factors.
Each 1D rule is stored in three files, an "X", "W", and "R" file, which are assumed to share a common filename prefix, so that the files defined by a given prefix have the form:
For instance, let us suppose we want to compute a 2D product rule formed from a 3 point Clenshaw Curtis rule and a 2 point Gauss-Legendre rule. If the prefixes for these files were "cc_d1_o003" and "gl_d1_o002" respectively, then the input file to the program would read as follows:
cc_d1_o003 gl_d1_o002When the program read the first 1D rule, it would be searching for three files:
Once the program has computed the multidimensional product rule, it again writes out three files describing the product rule, with a common filename prefix specified by the user, which might be, for instance, product, in which case the files would be:
product_rule ( list_file, product_prefix )where
If the arguments are not supplied on the command line, the program will prompt for them.
The computer code and data files described and made available on this web page are distributed under the MIT license
product_rule is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version
CLENSHAW_CURTIS_RULE, a C code which defines a Clenshaw Curtis quadrature rule.
HERMITE_RULE, a C code which can compute and print a Gauss-Hermite quadrature rule.
LEGENDRE_RULE, a C code which computes a 1D Gauss-Legendre quadrature rule.
POWER_RULE, a C code which constructs a power rule, that is, a product quadrature rule from identical 1D factor rules.
QUADRULE, a C code which defines quadrature rules on a variety of intervals with different weight functions.
TRUNCATED_NORMAL_RULE, a C code which computes a quadrature rule for a normal probability density function (PDF), also called a Gaussian distribution, that has been truncated to [A,+oo), (-oo,B] or [A,B].