# TESTPACK Testing Multidimensional Integration Routines

TESTPACK is a FORTRAN90 program which demonstrates the testing of a routine for multidimensional integration.

In this case, the code being tested is a subroutine known as ADAPT, written by Genz. The code is tested on six test integrand functions, also defined by Genz. The test is done with a variety of spatial dimensions, parameter values, and difficulty factors.

With M denoting the spatial dimension, R a parameter, C a scaling vector, and X0 a displacement vector, the test functions can be summarized as:

1. f(x) = cos ( 2 * pi * r + sum ( c(1:m) * x(1:m) ) ),
Genz "Oscillatory";
2. f(x) = 1 / product ( c(1:m)**2 + (x(1:m) - x0(1:m))**2),
Genz "Product Peak";
3. f(x) = 1 / ( 1 + sum ( c(1:m) * x(1:m) ) )**(m+r),
Genz "Corner Peak";
4. f(x) = exp(-sum(c(1:m)**2 * ( x(1:m) - x0(1:m))**2 ) ),
Genz "Gaussian";
5. f(x) = exp ( - sum ( c(1:m) * abs ( x(1:m) - x0(1:m) ) ) ),
Genz "Continuous";
6. f(x) = exp(sum(c(1:m)*x(1:m)) for x(1:m) <= x0(1:m), 0 otherwise,
Genz "Discontinuous";

### Languages:

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

### Related Data and Programs:

CUBPACK, a FORTRAN90 library which estimates the integral of a function (or vector of functions) over a collection of N-dimensional hyperrectangles and simplices.

INTEGRAL_TEST, a FORTRAN90 program which tests the suitability of a set of N points for use in an equal-weight quadrature rule over the M-dimensional unit hypercube.

INTLIB, a FORTRAN90 library which estimates the integral of a function over a one-dimensional interval.

NINTLIB, a FORTRAN90 library which estimates the integral of a function over a one-dimensional interval.

PRODUCT_RULE, a FORTRAN90 program which constructs a product rule from identical 1D factor rules.

QUADRULE, a FORTRAN90 library which defines a variety of (mostly 1-dimensional) quadrature rules.

SMOLPACK, a C library which uses the Genz test functions to demonstrate quadrature in multiple dimensions using a sparse grid.

SPINTERP, a MATLAB library which uses the Genz test functions to demonstrate multilinear interpolation on a sparse grid.

STROUD, a FORTRAN90 library which defines a variety of quadrature rules over various "interesting" geometric shapes.

TEST_NINT, a FORTRAN90 library which can be used to test N-dimensional quadrature routines.

### Reference:

1. Alan Genz,
Testing Multidimensional Integration Routines,
in Tools, Methods, and Languages for Scientific and Engineering Computation,
edited by B Ford, JC Rault, F Thomasset,
North-Holland, 1984, pages 81-94,
ISBN: 0444875700,
LC: Q183.9.I53.
2. Alan Genz,
A Package for Testing Multiple Integration Subroutines,
in Numerical Integration: Recent Developments, Software and Applications,
edited by Patrick Keast, Graeme Fairweather,
Reidel, 1987, pages 337-340,
ISBN: 9027725144,
LC: QA299.3.N38
3. John Hart, Ward Cheney, Charles Lawson, Hans Maehly, Charles Mesztenyi, John Rice, Henry Thacher, Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.
4. Linus Schrage,
A More Portable Fortran Random Number Generator,
ACM Transactions on Mathematical Software,
Volume 5, Number 2, June 1979, pages 132-138.

### List of Routines:

• MAIN is the main program for testing TESTPACK.
• FUNCTN evaluates one of the test integrand functions.
• MULTST tests a multidimensional integration routine.
• PHI estimates the normal cumulative density function.
• R8VEC_MEDIAN computes the median of an R8VEC.
• RANDOM_SCHRAGE is a portable random number generator
• TIMESTAMP prints the current YMDHMS date as a time stamp.
• TUPLE_NEXT computes the next element of a tuple space.
• VALINT computes the exact integrals of the test functions.

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

Last revised on 13 March 2007.