g01ff returns the deviate associated with the given lower tail probability of the gamma distribution.

# Syntax

C#
```public static double g01ff(
double p,
double a,
double b,
double tol,
out int ifail
)```
Visual Basic
```Public Shared Function g01ff ( _
p As Double, _
a As Double, _
b As Double, _
tol As Double, _
<OutAttribute> ByRef ifail As Integer _
) As Double```
Visual C++
```public:
static double g01ff(
double p,
double a,
double b,
double tol,
[OutAttribute] int% ifail
)```
F#
```static member g01ff :
p : float *
a : float *
b : float *
tol : float *
ifail : int byref -> float
```

#### Parameters

p
Type: System..::..Double
On entry: $p$, the lower tail probability from the required gamma distribution.
Constraint: $0.0\le {\mathbf{p}}<1.0$.
a
Type: System..::..Double
On entry: $\alpha$, the shape parameter of the gamma distribution.
Constraint: $0.0<{\mathbf{a}}\le {10}^{6}$.
b
Type: System..::..Double
On entry: $\beta$, the scale parameter of the gamma distribution.
Constraint: ${\mathbf{b}}>0.0$.
tol
Type: System..::..Double
On entry: the relative accuracy required by you in the results. The smallest recommended value is $50×\delta$, where . If g01ff is entered with tol less than $50×\delta$ or greater or equal to $1.0$, then $50×\delta$ is used instead.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

#### Return Value

g01ff returns the deviate associated with the given lower tail probability of the gamma distribution.

# Description

The deviate, ${g}_{p}$, associated with the lower tail probability, $p$, of the gamma distribution with shape parameter $\alpha$ and scale parameter $\beta$, is defined as the solution to
 $PG≤gp:α,β=p=1βαΓα∫0gpe-G/βGα-1dG, 0≤gp<∞;α,β>0.$
The method used is described by Best and Roberts (1975) making use of the relationship between the gamma distribution and the ${\chi }^{2}$-distribution.
Let $y=2\frac{{g}_{p}}{\beta }$. The required $y$ is found from the Taylor series expansion
 $y=y0+∑rCry0r!Eϕy0r,$
where ${y}_{0}$ is a starting approximation
• ${C}_{1}\left(u\right)=1$,
• ${C}_{r+1}\left(u\right)=\left(r\Psi +\frac{d}{du}\right){C}_{r}\left(u\right)$,
• $\Psi =\frac{1}{2}-\frac{\alpha -1}{u}$,
• $E=p-\underset{0}{\overset{{y}_{0}}{\int }}\varphi \left(u\right)du$,
• $\varphi \left(u\right)=\frac{1}{{2}^{\alpha }\Gamma \left(\alpha \right)}{e}^{-u/2}{u}^{\alpha -1}$.
For most values of $p$ and $\alpha$ the starting value
 $y01=2αz⁢19α+1-19α3$
is used, where $z$ is the deviate associated with a lower tail probability of $p$ for the standard Normal distribution.
For $p$ close to zero,
 $y02=pα2αΓα1/α$
is used.
For large $p$ values, when ${y}_{01}>4.4\alpha +6.0$,
 $y03=-2ln1-p-α-1ln12y01+lnΓα$
is found to be a better starting value than ${y}_{01}$.
For small $\alpha$ $\left(\alpha \le 0.16\right)$, $p$ is expressed in terms of an approximation to the exponential integral and ${y}_{04}$ is found by Newton–Raphson iterations.
Seven terms of the Taylor series are used to refine the starting approximation, repeating the process if necessary until the required accuracy is obtained.

# References

Best D J and Roberts D E (1975) Algorithm AS 91. The percentage points of the ${\chi }^{2}$ distribution Appl. Statist. 24 385–388

# Error Indicators and Warnings

Note: g01ff may return useful information for one or more of the following detected errors or warnings.
Errors or warnings detected by the method:
If on exit ${\mathbf{ifail}}={1}$${2}$${3}$ or ${5}$, then g01ff returns $0.0$.
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{p}}<0.0$, or ${\mathbf{p}}\ge 1.0$,
${\mathbf{ifail}}=2$
 On entry, ${\mathbf{a}}\le 0.0$, or ${\mathbf{a}}>{10}^{6}$, or ${\mathbf{b}}\le 0.0$
${\mathbf{ifail}}=3$
p is too close to $0.0$ or $1.0$ to enable the result to be calculated.
${\mathbf{ifail}}=4$
The solution has failed to converge in $100$ iterations. A larger value of tol should be tried. The result may be a reasonable approximation.
${\mathbf{ifail}}=5$
The series to calculate the gamma function has failed to converge. This is an unlikely error exit.
${\mathbf{ifail}}=-9000$
An error occured, see message report.

# Accuracy

In most cases the relative accuracy of the results should be as specified by tol. However, for very small values of $\alpha$ or very small values of $p$ there may be some loss of accuracy.

None.

None.

# Example

This example reads lower tail probabilities for several gamma distributions, and calculates and prints the corresponding deviates until the end of data is reached.

Example program (C#): g01ffe.cs

Example program data: g01ffe.d

Example program results: g01ffe.r