# NAG FL Interfaceg01tcf (inv_​cdf_​chisq_​vector)

## ▸▿ Contents

Settings help

FL Name Style:

FL Specification Language:

## 1Purpose

g01tcf returns a number of deviates associated with the given probabilities of the ${\chi }^{2}$-distribution with real degrees of freedom.

## 2Specification

Fortran Interface
 Subroutine g01tcf ( tail, lp, p, ldf, df, x,
 Integer, Intent (In) :: ltail, lp, ldf Integer, Intent (Inout) :: ifail Integer, Intent (Out) :: ivalid(*) Real (Kind=nag_wp), Intent (In) :: p(lp), df(ldf) Real (Kind=nag_wp), Intent (Out) :: x(*) Character (1), Intent (In) :: tail(ltail)
#include <nag.h>
 void g01tcf_ (const Integer *ltail, const char tail[], const Integer *lp, const double p[], const Integer *ldf, const double df[], double x[], Integer ivalid[], Integer *ifail, const Charlen length_tail)
The routine may be called by the names g01tcf or nagf_stat_inv_cdf_chisq_vector.

## 3Description

The deviate, ${x}_{{p}_{i}}$, associated with the lower tail probability ${p}_{i}$ of the ${\chi }^{2}$-distribution with ${\nu }_{i}$ degrees of freedom is defined as the solution to
 $P( Xi ≤ xpi :νi) = pi = 1 2 νi/2 Γ (νi/2) ∫ 0 xpi e -Xi/2 Xi vi / 2 - 1 dXi , 0 ≤ xpi < ∞ ; ​ νi > 0 .$
The required ${x}_{{p}_{i}}$ is found by using the relationship between a ${\chi }^{2}$-distribution and a gamma distribution, i.e., a ${\chi }^{2}$-distribution with ${\nu }_{i}$ degrees of freedom is equal to a gamma distribution with scale parameter $2$ and shape parameter ${\nu }_{i}/2$.
For very large values of ${\nu }_{i}$, greater than ${10}^{5}$, Wilson and Hilferty's Normal approximation to the ${\chi }^{2}$ is used; see Kendall and Stuart (1969).
The input arrays to this routine are designed to allow maximum flexibility in the supply of vector arguments by re-using elements of any arrays that are shorter than the total number of evaluations required. See Section 2.6 in the G01 Chapter Introduction for further information.

## 4References

Best D J and Roberts D E (1975) Algorithm AS 91. The percentage points of the ${\chi }^{2}$ distribution Appl. Statist. 24 385–388
Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth
Kendall M G and Stuart A (1969) The Advanced Theory of Statistics (Volume 1) (3rd Edition) Griffin

## 5Arguments

1: $\mathbf{ltail}$Integer Input
On entry: the length of the array tail.
Constraint: ${\mathbf{ltail}}>0$.
2: $\mathbf{tail}\left({\mathbf{ltail}}\right)$Character(1) array Input
On entry: indicates which tail the supplied probabilities represent. For , for $\mathit{i}=1,2,\dots ,\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf}}\right)$:
${\mathbf{tail}}\left(j\right)=\text{'L'}$
The lower tail probability, i.e., ${p}_{i}=P\left({X}_{i}\le {x}_{{p}_{i}}:{\nu }_{i}\right)$.
${\mathbf{tail}}\left(j\right)=\text{'U'}$
The upper tail probability, i.e., ${p}_{i}=P\left({X}_{i}\ge {x}_{{p}_{i}}:{\nu }_{i}\right)$.
Constraint: ${\mathbf{tail}}\left(\mathit{j}\right)=\text{'L'}$ or $\text{'U'}$, for $\mathit{j}=1,2,\dots ,{\mathbf{ltail}}$.
3: $\mathbf{lp}$Integer Input
On entry: the length of the array p.
Constraint: ${\mathbf{lp}}>0$.
4: $\mathbf{p}\left({\mathbf{lp}}\right)$Real (Kind=nag_wp) array Input
On entry: ${p}_{i}$, the probability of the required ${\chi }^{2}$-distribution as defined by tail with ${p}_{i}={\mathbf{p}}\left(j\right)$, .
Constraints:
• if ${\mathbf{tail}}\left(k\right)=\text{'L'}$, $0.0\le {\mathbf{p}}\left(\mathit{j}\right)<1.0$;
• otherwise $0.0<{\mathbf{p}}\left(\mathit{j}\right)\le 1.0$.
Where and .
5: $\mathbf{ldf}$Integer Input
On entry: the length of the array df.
Constraint: ${\mathbf{ldf}}>0$.
6: $\mathbf{df}\left({\mathbf{ldf}}\right)$Real (Kind=nag_wp) array Input
On entry: ${\nu }_{i}$, the degrees of freedom of the ${\chi }^{2}$-distribution with ${\nu }_{i}={\mathbf{df}}\left(j\right)$, .
Constraint: ${\mathbf{df}}\left(\mathit{j}\right)>0.0$, for $\mathit{j}=1,2,\dots ,{\mathbf{ldf}}$.
7: $\mathbf{x}\left(*\right)$Real (Kind=nag_wp) array Output
Note: the dimension of the array x must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf}}\right)$.
On exit: ${x}_{{p}_{i}}$, the deviates for the ${\chi }^{2}$-distribution.
8: $\mathbf{ivalid}\left(*\right)$Integer array Output
Note: the dimension of the array ivalid must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf}}\right)$.
On exit: ${\mathbf{ivalid}}\left(i\right)$ indicates any errors with the input arguments, with
${\mathbf{ivalid}}\left(i\right)=0$
No error.
${\mathbf{ivalid}}\left(i\right)=1$
On entry, invalid value supplied in tail when calculating ${x}_{{p}_{i}}$.
${\mathbf{ivalid}}\left(i\right)=2$
On entry, invalid value for ${p}_{i}$.
${\mathbf{ivalid}}\left(i\right)=3$
On entry, ${\nu }_{i}\le 0.0$.
${\mathbf{ivalid}}\left(i\right)=4$
${p}_{i}$ is too close to $0.0$ or $1.0$ for the result to be calculated.
${\mathbf{ivalid}}\left(i\right)=5$
The solution has failed to converge. The result should be a reasonable approximation.
9: $\mathbf{ifail}$Integer Input/Output
On entry: ifail must be set to $0$, $-1$ or $1$ to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of $0$ causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of $-1$ means that an error message is printed while a value of $1$ means that it is not.
If halting is not appropriate, the value $-1$ or $1$ is recommended. If message printing is undesirable, then the value $1$ is recommended. Otherwise, the value $0$ is recommended. When the value $-\mathbf{1}$ or $\mathbf{1}$ is used it is essential to test the value of ifail on exit.
On exit: ${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see Section 6).

## 6Error Indicators and Warnings

If on entry ${\mathbf{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:
${\mathbf{ifail}}=1$
On entry, at least one value of tail, p or df was invalid, or the solution failed to converge.
${\mathbf{ifail}}=2$
On entry, $\text{array size}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{ltail}}>0$.
${\mathbf{ifail}}=3$
On entry, $\text{array size}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{lp}}>0$.
${\mathbf{ifail}}=4$
On entry, $\text{array size}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{ldf}}>0$.
${\mathbf{ifail}}=-99$
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{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.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

## 7Accuracy

The results should be accurate to five significant digits for most argument values. Some accuracy is lost for ${p}_{i}$ close to $0.0$ or $1.0$.

## 8Parallelism and Performance

g01tcf is not threaded in any implementation.

For higher accuracy the relationship described in Section 3 may be used and a direct call to g01tff made.

## 10Example

This example reads lower tail probabilities for several ${\chi }^{2}$-distributions, and calculates and prints the corresponding deviates.

### 10.1Program Text

Program Text (g01tcfe.f90)

### 10.2Program Data

Program Data (g01tcfe.d)

### 10.3Program Results

Program Results (g01tcfe.r)