TGAMMA(3)

NAME
tgamma, lgamma, gamma - gamma and log of gamma

SYNOPSIS
#include <math.h>
double
tgamma(double x);
long double
tgammal(long double x);
float
tgammaf(float x);
double
lgamma_r(double x, int *psigngam);
long double
lgammal_r(long double x, int *psigngam);
float
lgammaf_r(float x, int *psigngam);
double
lgamma(double x);
long double
lgammal(long double x);
float
lgammaf(float x);

DESCRIPTION
tgamma() calculates the gamma function of x. lgamma() calculates the natural logorithm of the absolute value of the gamma function of x. gamma() is the same function as tgamma. Its use is deprecated.

lgamma_r() is a thread-safe alternative to lgamma(). Instead of setting the global variable signgam, it stores the sign of Gamma(x) in the location pointed to by its second argument. In order to use the lgamma_r() function, define the macro _REENTRANT before including <math.h>.

SPECIAL VALUES
tgamma(±0) returns ±infinity and raises the "divide-by-zero" floating-point exception.

tgamma(x) returns a NaN and raises the "invalid" floating-point exception if x is a negative integer.

tgamma(-infinity) returns a NaN and raises the "invalid" floating-point exception.

tgamma(+infinity) returns +infinity.

tgamma(x) generates a domain error if x is a negative integer or if the result cannnot be respresented when x is 0.

A range error may occur if the magnitude of x is too large or too small.

lgamma(1) returns +0.

lgamma(2) returns +0.

lgamma(x) returns +infinity and raises the "divide-by-zero" floating-point exception if x is a negative integer or 0.

lgamma(±infinity) returns +infinity.

lgamma(x) generates a range error if x is too large.

A range error may occur if x is a negative integer or 0.

NOTE
lgamma(x) and its variants have the (non-threadsafe) side-effect of setting the global variable signgam to ±1, equal to the sign of tgamma(x). lgamma_r(x, psigngam) instead sets the user-allocated integer pointed to by the psigngam argument.

gamma() and gamma_r() are deprecated, and should not be used. The tgamma() function should be used instead. Note, however, that on some platforms, gamma() and gamma_r() historically computed the log of the Gamma function, instead of the Gamma function itself. When porting code from such platforms, it will be necessary to use lgamma() or lgamma_r() instead.

SEE ALSO
math(3)

STANDARDS
The tgamma() , and lgamma() functions conform to ISO/IEC 9899:2011.