NAG FL Interface
g01sff (prob_​gamma_​vector)

1 Purpose

g01sff returns a number of lower or upper tail probabilities for the gamma distribution.

2 Specification

Fortran Interface
Subroutine g01sff ( ltail, tail, lg, g, la, a, lb, b, p, ivalid, ifail)
Integer, Intent (In) :: ltail, lg, la, lb
Integer, Intent (Inout) :: ifail
Integer, Intent (Out) :: ivalid(*)
Real (Kind=nag_wp), Intent (In) :: g(lg), a(la), b(lb)
Real (Kind=nag_wp), Intent (Out) :: p(*)
Character (1), Intent (In) :: tail(ltail)
C Header Interface
#include <nag.h>
void  g01sff_ (const Integer *ltail, const char tail[], const Integer *lg, const double g[], const Integer *la, const double a[], const Integer *lb, const double b[], double p[], Integer ivalid[], Integer *ifail, const Charlen length_tail)
The routine may be called by the names g01sff or nagf_stat_prob_gamma_vector.

3 Description

The lower tail probability for the gamma distribution with parameters αi and βi, PGigi, is defined by:
P Gi gi :αi,βi = 1 βi αi Γ αi 0 gi Gi αi-1 e -Gi/βi dGi ,   αi>0.0 , ​ βi>0.0 .  
The mean of the distribution is αiβi and its variance is αiβi2. The transformation Zi=Giβi is applied to yield the following incomplete gamma function in normalized form,
P Gi gi :αi,βi = P Zi gi / βi :αi,1.0 = 1 Γ αi 0 gi / βi Zi αi-1 e -Zi dZi .  
This is then evaluated using s14baf.
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.

4 References

Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth

5 Arguments

1: ltail Integer Input
On entry: the length of the array tail.
Constraint: ltail>0.
2: tailltail Character(1) array Input
On entry: indicates whether a lower or upper tail probability is required. For j= i-1 mod ltail +1 , for i=1,2,,maxltail,lg,la,lb:
tailj='L'
The lower tail probability is returned, i.e., pi = P Gi gi :αi,βi .
tailj='U'
The upper tail probability is returned, i.e., pi = P Gi gi :αi,βi .
Constraint: tailj='L' or 'U', for j=1,2,,ltail.
3: lg Integer Input
On entry: the length of the array g.
Constraint: lg>0.
4: glg Real (Kind=nag_wp) array Input
On entry: gi, the value of the gamma variate with gi=gj, j=i-1 mod lg+1.
Constraint: gj0.0, for j=1,2,,lg.
5: la Integer Input
On entry: the length of the array a.
Constraint: la>0.
6: ala Real (Kind=nag_wp) array Input
On entry: the parameter αi of the gamma distribution with αi=aj, j=i-1 mod la+1.
Constraint: aj>0.0, for j=1,2,,la.
7: lb Integer Input
On entry: the length of the array b.
Constraint: lb>0.
8: blb Real (Kind=nag_wp) array Input
On entry: the parameter βi of the gamma distribution with βi=bj, j=i-1 mod lb+1.
Constraint: bj>0.0, for j=1,2,,lb.
9: p* Real (Kind=nag_wp) array Output
Note: the dimension of the array p must be at least maxlg,la,lb,ltail.
On exit: pi, the probabilities of the beta distribution.
10: ivalid* Integer array Output
Note: the dimension of the array ivalid must be at least maxlg,la,lb,ltail.
On exit: ivalidi indicates any errors with the input arguments, with
ivalidi=0
No error.
ivalidi=1
On entry, invalid value supplied in tail when calculating pi.
ivalidi=2
On entry, gi<0.0.
ivalidi=3
On entry, αi0.0, or, βi0.0.
ivalidi=4
The solution did not converge in 600 iterations, see s14baf for details. The probability returned should be a reasonable approximation to the solution.
11: 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 -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, at least one value of g, a, b or tail was invalid, or the solution did not converge.
Check ivalid for more information.
ifail=2
On entry, array size=value.
Constraint: ltail>0.
ifail=3
On entry, array size=value.
Constraint: lg>0.
ifail=4
On entry, array size=value.
Constraint: la>0.
ifail=5
On entry, array size=value.
Constraint: lb>0.
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 result should have a relative accuracy of machine precision. There are rare occasions when the relative accuracy attained is somewhat less than machine precision but the error should not exceed more than 1 or 2 decimal places.

8 Parallelism and Performance

g01sff is not threaded in any implementation.

9 Further Comments

The time taken by g01sff to calculate each probability varies slightly with the input arguments gi, αi and βi.

10 Example

This example reads in values from a number of gamma distributions and computes the associated lower tail probabilities.

10.1 Program Text

Program Text (g01sffe.f90)

10.2 Program Data

Program Data (g01sffe.d)

10.3 Program Results

Program Results (g01sffe.r)