gamma

Evaluates the real gamma function.

Synopsis

#include <imsls.h>

float imsls_f_gamma (float x)

The type double function is imsls_d_gamma.

Required Arguments

float x (Input)
Point at which the gamma function is to be evaluated.

Return Value

The value of the gamma function Γ(x).

Description

The gamma function, Γ(x), is defined to be

 

For x < 0, the above definition is extended by analytic continuation.

The gamma function is not defined for integers less than or equal to zero. It underflows for x << 0 and overflows for large x. It also overflows for values near negative integers.

 

Figure 1,  Plot of Γ(x) and 1/Γ(x)

Example

In this example, Γ(1.5) is computed and printed.

 

#include <stdio.h>

#include <imsls.h>

 

int main()

{

float x = 1.5;

float ans;

 

ans = imsls_f_gamma(x);

printf("Gamma(%f) = %f\n", x, ans);

}

Output

 

Gamma(1.500000) = 0.886227

Alert Errors

IMSLS_SMALL_ARG_UNDERFLOW

The argument x must be large enough that Γ(x) does not underflow. The underflow limit occurs first for arguments close to large negative half integers. Even though other arguments away from these half integers may yield machine-representable values of Γ(x), such arguments are considered illegal.

Warning Errors

IMSLS_NEAR_NEG_INT_WARN

The result is accurate to less than one-half precision because x is too close to a negative integer.

Fatal Errors

IMSLS_ZERO_ARG_OVERFLOW

The argument for the gamma function is too close to zero.

IMSLS_NEAR_NEG_INT_FATAL

The argument for the function is too close to a negative integer.

IMSLS_LARGE_ARG_OVERFLOW

The function overflows because x is too large.

IMSLS_CANNOT_FIND_XMIN

The algorithm used to find xmin failed. This error should never occur.

IMSLS_CANNOT_FIND_XMAX

The algorithm used to find xmax failed. This error should never occur.