nag_gamma (s14aac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_gamma (s14aac)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_gamma (s14aac) returns the value of the Gamma function Γ x .

2  Specification

#include <nag.h>
#include <nags.h>
double  nag_gamma (double x, NagError *fail)

3  Description

nag_gamma (s14aac) evaluates
Γ x = 0 t x-1 e -t dt .
The function is based on a Chebyshev expansion for Γ 1+u , and uses the property Γ 1+x = x Γ x . If x = N + 1 + u  where N  is integral and 0 u < 1  then it follows that:
There are four possible failures for this function:
(i) if x  is too large, there is a danger of overflow since Γ x  could become too large to be represented in the machine;
(ii) if x  is too large and negative, there is a danger of underflow;
(iii) if x  is equal to a negative integer, Γ x  would overflow since it has poles at such points;
(iv) if x  is too near zero, there is again the danger of overflow on some machines.
For small x , Γ x 1 / x , and on some machines there exists a range of nonzero but small values of x  for which 1/x  is larger than the greatest representable value.

4  References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications

5  Arguments

1:     xdoubleInput
On entry: the argument x  of the function.
Constraint: x must not be zero or a negative integer.
2:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_REAL_ARG_GT
On entry, x=value.
Constraint: xvalue.
The argument is too large, the function returns the approximate value of Γ x  at the nearest valid argument.
NE_REAL_ARG_LT
On entry, x must not be less than value: x=value .
The argument is too large and negative, the function returns zero.
NE_REAL_ARG_NEG_INT
On entry, x must not be effectively a negative integer: x=value .
The argument is a negative integer, at which values Γ x  is infinite. The function returns a large positive value.
NE_REAL_ARG_TOO_SMALL
On entry, x must be greater than value: x=value .
The argument is too close to zero, the function returns the approximate value of Γ x  at the nearest valid argument.

7  Accuracy

Let δ  and ε  be the relative errors in the argument and the result respectively. If δ  is somewhat larger than the machine precision (i.e., is due to data errors etc.), then ε  and δ  are approximately related by ε x ψ x δ  (provided ε  is also greater than the representation error). Here ψ x  is the digamma function Γ x / Γ x .
If δ  is of the same order as machine precision, then rounding errors could make ε  slightly larger than the above relation predicts.
There is clearly a severe, but unavoidable, loss of accuracy for arguments close to the poles of Γ x  at negative integers. However, relative accuracy is preserved near the pole at x=0  right up to the point of failure arising from the danger of setting overflow.
Also accuracy will necessarily be lost as x  becomes large since in this region ε δ x lnx . However, since Γ x  increases rapidly with x , the function must fail due to the danger of setting overflow before this loss of accuracy is too great. For example, for x=20 , the amplification factor 60 .

8  Further Comments

None.

9  Example

The following program reads values of the argument x  from a file, evaluates the function at each value of x  and prints the results.

9.1  Program Text

Program Text (s14aace.c)

9.2  Program Data

Program Data (s14aace.d)

9.3  Program Results

Program Results (s14aace.r)


nag_gamma (s14aac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012