TESTPACK
Testing Multidimensional Integration Routines
TESTPACK
is a MATLAB 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:

f(x) = cos ( 2 * pi * r + sum ( c(1:m) * x(1:m) ) ),
Genz "Oscillatory";

f(x) = 1 / product ( c(1:m)^2 + (x(1:m)  x0(1:m))^2),
Genz "Product Peak";

f(x) = 1 / ( 1 + sum ( c(1:m) * x(1:m) ) )^(m+r),
Genz "Corner Peak";

f(x) = exp(sum(c(1:m)^2 * ( x(1:m)  x0(1:m))^2 ) ),
Genz "Gaussian";

f(x) = exp (  sum ( c(1:m) * abs ( x(1:m)  x0(1:m) ) ) ),
Genz "Continuous";

f(x) = exp(sum(c(1:m)*x(1:m)) for x(1:m) <= x0(1:m), 0 otherwise,
Genz "Discontinuous";
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
TESTPACK 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:
INTEGRAL_TEST,
a FORTRAN90 program which
tests the suitability of
a set of N points for use in an equalweight quadrature rule over
the Mdimensional unit hypercube.
INTLIB,
a FORTRAN90 library which
estimates the integral of a function over a onedimensional interval.
NINTLIB,
a MATLAB library which
estimates
the integral of a function over a onedimensional interval.
PRODUCT_RULE,
a MATLAB program which
can create a multidimensional quadrature rule as a product of
one dimensional rules.
QUADRULE,
a MATLAB library which
defines a variety of
(mostly 1dimensional) 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 MATLAB library which
defines a variety of
quadrature rules over various "interesting" geometric shapes.
TEST_NINT
a MATLAB library which
can be used to test Ndimensional
quadrature routines.
Reference:

Alan Genz,
Testing Multidimensional Integration Routines,
in Tools, Methods, and Languages for Scientific and
Engineering Computation,
edited by B Ford, JC Rault, F Thomasset,
NorthHolland, 1984, pages 8194,
ISBN: 0444875700,
LC: Q183.9.I53.

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 337340,
ISBN: 9027725144,
LC: QA299.3.N38

John Hart, Ward Cheney, Charles Lawson, Hans Maehly,
Charles Mesztenyi, John Rice, Henry Thatcher,
Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.

Linus Schrage,
A More Portable Fortran Random Number Generator,
ACM Transactions on Mathematical Software,
Volume 5, Number 2, June 1979, pages 132138.
Source Code:

testpack.m
is the main program for testing TESTPACK.

adapt.m
carries out adaptive multidimensional quadrature.

genz_function.m
evaluates one of the test integrand functions.

genz_integral.m
computes the exact integrals of the test functions.

genz_name.m
returns the "name" of one of the test functions.

genz_phi.m
estimates the normal cumulative density function.

genz_random.m
is a portable random number generator

multst.m
tests a multidimensional integration routine.

r8vec_median.m
computes the median of an R8VEC.

timestamp.m
prints out the current YMDHMS date as a timestamp.

tuple_next.m
computes the next element of a tuple space.
Examples and Tests:
You can go up one level to
the MATLAB source codes.
Last revised on 26 May 2007.