# SPHERE_EXACTNESS Exactness of Quadrature on the Unit Sphere

SPHERE_EXACTNESS is a FORTRAN90 program which investigates the polynomial exactness of a quadrature rule over the surface of the unit sphere in 3D.

The polynomial exactness of a quadrature rule is defined as the highest total degree D such that the quadrature rule is guaranteed to integrate exactly all polynomials of total degree DEGREE_MAX or less, ignoring roundoff. The total degree of a polynomial is the maximum of the degrees of all its monomial terms. For the unit sphere in 3D, the degree of a monomial term is the sum of the exponents of x, y and z. Thus, for instance, the DEGREE of

x2yz5
is 2+1+5=8.

To be thorough, the program starts at DEGREE = 0, and then proceeds to DEGREE = 1, 2, and so on up to a maximum degree DEGREE_MAX specified by the user. At each value of DEGREE, the program generates every possible monomial term, applies the quadrature rule to it, and determines the quadrature error.

The quadrature rule is read by the program, and there are a number of options for how that information is stored.

### Usage:

sphere_exactness files prefix degree_max
where
• files indicates how the quadrature rule is stored (see below);
• prefix is the common prefix for the files;
• degree_max is the maximum total monomial degree to check. A value of 5 or 10 might be reasonable, but a value of 50 or 100 is probably never a good input!

The input value of files indicates how the quadrature rule information is stored. It might be in one or two files; the abscissas might be stored as (X,Y,Z) or as angles. The angles might be in radians or degrees. The weights might be assumed to be equal, in which case they need not be input.

• XYZW for file prefix.xyzw containing (X,Y,Z,Weight);
• RTPW for file prefix.rtpw containing (Theta, Phi, Weight) (radians);
• DTPW for file prefix.dtpw containing (Theta, Phi, Weight) (degrees);
• XYZ+W for file prefix.xyz containing (X,Y,Z) and file prefix.w containing Weight;
• RTP+W for file prefix.rtp containing (Theta, Phi ) in radians, and file prefix.w containing Weight;
• DTP+W for file prefix.dtp containing (Theta, Phi ) in degrees, and file prefix.w containing Weight;
• XYZ1 for file prefix.xyz containing (X,Y,Z), and equal weights, which do not need to be read in.
• RTP1 for file prefix.rtp containing (Theta, Phi ) in radians, and equal weights, which do not need to be read in.
• DTP1 for file prefix.dtp containing (Theta, Phi ) in degrees, and equal weights, which do not need to be read in.

### Licensing:

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

### Languages:

SPHERE_EXACTNESS 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:

CUBE_EXACTNESS, a FORTRAN90 library which investigates the polynomial exactness of quadrature rules over the interior of a cube in 3D.

HYPERCUBE_EXACTNESS, a FORTRAN90 program which measures the monomial exactness of an M-dimensional quadrature rule over the interior of the unit hypercube in M dimensions.

PYRAMID_EXACTNESS, a FORTRAN90 program which investigates the polynomial exactness of a quadrature rule over the interior of the unit pyramid in 3D.

SPHERE_DESIGN_RULE, a dataset directory which contains files defining point sets on the surface of the unit sphere, known as "designs", which can be useful for estimating integrals on the surface, among other uses.

SPHERE_DESIGN_RULE, a FORTRAN90 library which returns point sets on the surface of the unit sphere, known as "designs", which can be useful for estimating integrals on the surface, among other uses.

SPHERE_INTEGRALS, a FORTRAN90 library which defines test functions for integration over the surface of the unit sphere in 3D.

SPHERE_LEBEDEV_RULE, a FORTRAN90 library which computes Lebedev quadrature rules for the unit sphere;

SPHERE_QUAD, a FORTRAN90 library which approximates an integral over the surface of the unit sphere by applying a triangulation to the surface;

SPHERE_STEREOGRAPH, a FORTRAN90 library which computes the stereographic mapping between points on the unit sphere and points on the plane Z = 1; a generalized mapping is also available.

SPHERE_TRIANGLE_QUAD, a FORTRAN90 library which estimates the integral of a function over a spherical triangle.

SQUARE_EXACTNESS, a FORTRAN90 library which investigates the polynomial exactness of quadrature rules for f(x,y) over the interior of a rectangle in 2D.

TETRAHEDRON_EXACTNESS, a FORTRAN90 program which investigates the polynomial exactness of a quadrature rule over the interior of a tetrahedron in 3D.

TRIANGLE_EXACTNESS, a FORTRAN90 program which investigates the polynomial exactness of a quadrature rule over the interior of a triangle in 2D.

WEDGE_EXACTNESS, a FORTRAN90 program which investigates the monomial exactness of a quadrature rule over the interior of the unit wedge in 3D.

### Reference:

1. Gerald Folland,
How to Integrate a Polynomial Over a Sphere,
American Mathematical Monthly,
Volume 108, Number 5, May 2001, pages 446-448.
2. Ronald Hardin, Neil Sloane,
McLaren's Improved Snub Cube and Other New Spherical Designs in Three Dimensions,
Discrete and Computational Geometry,
Volume 15, 1996, pages 429-441.
3. Vyacheslav Lebedev, Dmitri Laikov,
A quadrature formula for the sphere of the 131st algebraic order of accuracy,
Russian Academy of Sciences Doklady Mathematics,
Volume 59, Number 3, 1999, pages 477-481.
4. AD McLaren,
Optimal Numerical Integration on a Sphere,
Mathematics of Computation,
Volume 17, Number 84, October 1963, pages 361-383.

### Examples and Tests:

DESIGN_04 is a spherical design of precision 4. Uniform weights are used.

LEBEDEV_13 is the 74 Lebedev rule of precision 13. Weights are specified, and the data is stored in the "DTPW" format, that is, theta and phi are specified in degrees. are used.

### List of Routines:

• MAIN is the main program for SPHERE_EXACTNESS.
• CH_CAP capitalizes a single character.
• CH_EQI is a case insensitive comparison of two characters for equality.
• CH_TO_DIGIT returns the integer value of a base 10 digit.
• COMP_NEXT computes the compositions of the integer N into K parts.
• FILE_COLUMN_COUNT counts the number of columns in the first line of a file.
• FILE_ROW_COUNT counts the number of row records in a file.
• GET_UNIT returns a free FORTRAN unit number.
• MONOMIAL_QUADRATURE_SPHERE applies quadrature to a monomial in a sphere.
• MONOMIAL_VALUE evaluates a monomial.
• R8_GAMMA evaluates Gamma(X) for a real argument.
• R8MAT_DATA_READ reads data from an R8MAT file.
• R8MAT_HEADER_READ reads the header from an R8MAT file.
• S_EQI is a case insensitive comparison of two strings for equality.
• S_TO_I4 reads an I4 from a string.
• S_TO_R8 reads an R8 from a string.
• S_TO_R8VEC reads an R8VEC from a string.
• S_WORD_COUNT counts the number of "words" in a string.
• SPHERE01_MONOMIAL_INTEGRAL returns monomial integrals on the unit sphere.
• TIMESTAMP prints the current YMDHMS date as a time stamp.

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

Last revised on 10 September 2010.