In order to carry out careful tests of the different algorithms, a large
set of general problems was needed with variation in all of the six
parameters in
and
. Let
, with
The first tests that were completed used
,
,
,
,
,
. A complete test with all of the different
combinations of parameters checks more than 2 million values for
, and includes problems with
as small as
The methods using equations (10-11), (13-14)
were tested using an integration rule with a fixed number, K, of integration
rule points for K = 6, 12, 24, and the results are given in the first
three rows of Table 1.
The Table 1 (first three row) results are consistent with results
reported by Gassmann. The Plackett formula methods (13-14) were
the most accurate.
None of the TVN tests described so far used
values that were approximately
equal. This type of limit combination was what motivated the final
modifications described in the previous section for the Drezner-Wesolowsky
BVN algorithm. In order to investigate the sensitivity of the TVN algorithms
to this type of problems, another test was completed. This test used the same
's that were used for the Table 1 first three row results, but used
,
,
, with
. The 24-point rule
results from this test are reported in Table 1, where it can be seen that
the Drezner-Plackett method has a significant increase in maximum error.
Additional tests were completed with other (larger and smaller)
's
but the largest errors occurred near
.
The results suggest that a 24-point Gauss-Legendre integration
rule could be used with TVN algorithms based on the equations (13) or
(14). These algorithms would produce single precision accuracy for most
problems. The equation (13) algorithm appears to be less sensitive
to the subtractive cancellation loss of accuracy that occurs with nearly
equal
values. All of these algorithms were implemented in Fortran
double precision. The average time for a TVN probability
computation using a Fortran 77 (double precision) implementation with an
800 MHZ Pentium III processor was
seconds for the
Plackett formula and Gauss-Hermite algorithm implementations;
the
transform algorithm implementation usually took about
10 times longer.
Some tests were also completed to investigate the possibility of fixed rule
double precision TVN algorithms. Some 48-point Gauss rule results are also
provided in Table 1. There were significant decreases in the maximum errors,
but the results suggest that a reliable double precision algorithm might
require a Gauss rule with several hundred points. The use of an adaptive
integration was also investigated. A simple globally adaptive algorithm
similar to the one used in many of the algorithms for QUADPACK
(Piessens, deDoncker, Uberhuber and Kahaner, 1983) was selected.
This type of algorithm uses a fixed local
integration rule that also provides an error estimate. The rule is first
applied to the integrand over the whole integration interval. If the
error estimate is larger than the requested accuracy, then the interval,
with associated error and integral estimates, is used to initialize a
list. The algorithm then proceeds in stages.
At each stage an interval with largest error is removed from the list and
divided in half. The local integration rule is used on each half of the
selected interval and results from the two halves are added to the list.
The algorithm terminates when the sum of the local error estimates is
less than the requested accuracy. The sum of the local integral estimates
is returned as the result. After some experimentation, a 23-point Kronrod
rule (see Davis and Rabinowitz, 1984, pp. 106-109) was selected for the
local integration rule. This degree thirty-five rule includes an imbedded
11-point Gauss-Legendre rule. The difference between results from the two
rules is used to provide a local error estimate. This adaptive algorithm
was used with requested accuracy level set at
.
The results are given in the last three rows of Table 1. The algorithms based
on equations (10), (13) and (14) all had difficulty reliably
achieving the requested accuracy level, with the
transform method
providing the worst performance. These difficulties are probably due to
the sensitivity to subtractive cancellations for all three of the methods.
The error averages for the three methods were
,
, respectively, for the
test. Overall, the tests suggest that the use of equation (14)
with an adaptive algorithm can provide double precision results for most
TVN problems with times less than
seconds using modern
computers. Double precision BVN (BVND) and TVN (part of TVTL)
Fortran implementations, with supporting functions, are available from the
author's website (www.math.wsu.edu/faculty/genz/homepage, in TVPACK)