NAG FL Interface
d01gyf (md_​numth_​coeff_​prime)

1 Purpose

d01gyf calculates the optimal coefficients for use by d01gcf and d01gdf, for prime numbers of points.

2 Specification

Fortran Interface
Subroutine d01gyf ( ndim, npts, vk, ifail)
Integer, Intent (In) :: ndim, npts
Integer, Intent (Inout) :: ifail
Real (Kind=nag_wp), Intent (Out) :: vk(ndim)
C Header Interface
#include <nag.h>
void  d01gyf_ (const Integer *ndim, const Integer *npts, double vk[], Integer *ifail)
The routine may be called by the names d01gyf or nagf_quad_md_numth_coeff_prime.

3 Description

The Korobov (1963) procedure for calculating the optimal coefficients a1,a2,,an for p-point integration over the n-cube 0,1n imposes the constraint that
a1=1  and  ai=ai-1 mod p,  i=1,2,,n (1)
where p is a prime number and a is an adjustable argument. This argument is computed to minimize the error in the integral
3n01dx101dxni=1n 1-2xi 2, (2)
when computed using the number theoretic rule, and the resulting coefficients can be shown to fit the Korobov definition of optimality.
The computation for large values of p is extremely time consuming (the number of elementary operations varying as p2) and there is a practical upper limit to the number of points that can be used. Routine d01gzf is computationally more economical in this respect but the associated error is likely to be larger.

4 References

Korobov N M (1963) Number Theoretic Methods in Approximate Analysis Fizmatgiz, Moscow

5 Arguments

1: ndim Integer Input
On entry: n, the number of dimensions of the integral.
Constraint: ndim1.
2: npts Integer Input
On entry: p, the number of points to be used.
Constraint: npts must be a prime number 5.
3: vkndim Real (Kind=nag_wp) array Output
On exit: the n optimal coefficients.
4: ifail Integer Input/Output
On entry: ifail must be set to 0, -1 or 1. If you are unfamiliar with this argument you should refer to Section 4 in the Introduction to the NAG Library FL Interface for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value -1 or 1 is recommended. If the output of error messages is undesirable, then the value 1 is recommended. Otherwise, if you are not familiar with this argument, the recommended value is 0. When the value -1 or 1 is used it is essential to test the value of ifail on exit.
On exit: ifail=0 unless the routine detects an error or a warning has been flagged (see Section 6).

6 Error Indicators and Warnings

If on entry ifail=0 or -1, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
ifail=1
On entry, ndim=value.
Constraint: ndim1.
ifail=2
On entry, npts=value.
Constraint: npts5.
ifail=3
On entry, npts=value.
Constraint: npts must be a prime number.
ifail=4
The machine precision is insufficient to perform the computation exactly. Try reducing npts: npts=value.
ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
ifail=-399
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
ifail=-999
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

7 Accuracy

The optimal coefficients are returned as exact integers (though stored in a real array).

8 Parallelism and Performance

d01gyf is not threaded in any implementation.

9 Further Comments

The time taken is approximately proportional to p2 (see Section 3).

10 Example

This example calculates the Korobov optimal coefficients where the number of dimensions is 4 and the number of points is 631.

10.1 Program Text

Program Text (d01gyfe.f90)

10.2 Program Data

None.

10.3 Program Results

Program Results (d01gyfe.r)