g01jd calculates the lower tail probability for a linear combination of (central) χ2 variables.


public static void g01jd(
	string method,
	int n,
	double[] rlam,
	double d,
	double c,
	out double prob,
	out int ifail
Visual Basic
Public Shared Sub g01jd ( _
	method As String, _
	n As Integer, _
	rlam As Double(), _
	d As Double, _
	c As Double, _
	<OutAttribute> ByRef prob As Double, _
	<OutAttribute> ByRef ifail As Integer _
Visual C++
static void g01jd(
	String^ method, 
	int n, 
	array<double>^ rlam, 
	double d, 
	double c, 
	[OutAttribute] double% prob, 
	[OutAttribute] int% ifail
static member g01jd : 
        method : string * 
        n : int * 
        rlam : float[] * 
        d : float * 
        c : float * 
        prob : float byref * 
        ifail : int byref -> unit 


Type: System..::..String
On entry: indicates whether Pan's, Imhof's or an appropriately selected procedure is to be used.
Pan's method is used.
Imhof's method is used.
Pan's method is used if λi*, for i=1,2,,n are at least 1% distinct and n60; otherwise Imhof's method is used.
Constraint: method="P", "I" or "D".
Type: System..::..Int32
On entry: n, the number of independent standard Normal variates, (central χ2 variates).
Constraint: n1.
Type: array<System..::..Double>[]()[][]
An array of size [n]
On entry: the weights, λi, for i=1,2,,n, of the central χ2 variables.
Constraint: rlam[i-1]d for at least one i. If method="P", then the λi* must be at least 1% distinct; see [Further Comments], for i=1,2,,n.
Type: System..::..Double
On entry: d, the multiplier of the central χ2 variables.
Constraint: d0.0.
Type: System..::..Double
On entry: c, the value of the constant.
Type: System..::..Double%
On exit: the lower tail probability for the linear combination of central χ2 variables.
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).


Let u1,u2,,un be independent Normal variables with mean zero and unit variance, so that u12,u22,,un2 have independent χ2-distributions with unit degrees of freedom. g01jd evaluates the probability that
If c=0.0 this is equivalent to the probability that
Alternatively let
λi*=λi-d,   ​i=1,2,,n,
then g01jd returns the probability that
Two methods are available. One due to Pan (1964) (see Farebrother (1980)) makes use of series approximations. The other method due to Imhof (1961) reduces the problem to a one-dimensional integral. If n6 then a non-adaptive method described in d01bd is used to compute the value of the integral otherwise d01aj is used.
Pan's procedure can only be used if the λi* are sufficiently distinct; g01jd requires the λi* to be at least 1% distinct; see [Further Comments]. If the λi* are at least 1% distinct and n60, then Pan's procedure is recommended; otherwise Imhof's procedure is recommended.


Farebrother R W (1980) Algorithm AS 153. Pan's procedure for the tail probabilities of the Durbin–Watson statistic Appl. Statist. 29 224–227
Imhof J P (1961) Computing the distribution of quadratic forms in Normal variables Biometrika 48 419–426
Pan Jie–Jian (1964) Distributions of the noncircular serial correlation coefficients Shuxue Jinzhan 7 328–337

Error Indicators and Warnings

Errors or warnings detected by the method:
On entry,n<1,
ormethod"P", "I" or "D".
On entry, rlam[i-1]=d for all values of i, for i=1,2,,n.
On entry, method="P" yet two successive values of the ordered λi*, for i=1,2,,n, were not at least 1% distinct.
An error occured, see message report.
Negative dimension for array value
Invalid Parameters value


On successful exit at least four decimal places of accuracy should be achieved.

Parallelism and Performance


Further Comments

Pan's procedure can only work if the λi* are sufficiently distinct. g01jd uses the check wj-wj-10.01×maxwj,wj-1, where the wj are the ordered nonzero values of λi*.
For the situation when all the λi are positive g01jc may be used. If the probabilities required are for the Durbin–Watson test, then the bounds for the probabilities are given by g01ep.


For n=10, the choice of method, values of c and d and the λi are input and the probabilities computed and printed.

Example program (C#): g01jde.cs

Example program data: g01jde.d

Example program results: g01jde.r

See Also