Mathematical Library Functions lgamma(3M)
NAME
lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r,
gamma, gammaf, gammal, gamma_r, gammaf_r, gammal_r - log
gamma functionSYNOPSIS
c99 [ flag... ] file... -lm [ library... ]
#include
extern int signgam; double lgamma(double x);float lgammaf(float x);
long double lgammal(long double x); double gamma(double x); float gammaf(float x); long double gammal(long double x);double lgamma_r(double x, int *signgamp);
float lgammaf_r(float x, int *signgamp);
long double lgammal_r(long double x, int *signgamp);
double gamma_r(double x, int *signgamp);
float gammaf_r(float x, int *signgamp);
long double gammal_r(long double x, int *signgamp);
DESCRIPTION
These functions return ln||~(x)|SunOS 5.11 Last change: 12 Jul 2006 1
Mathematical Library Functions lgamma(3M) where|~(x) = integral from 0 to +Infinity of pow(t,x-1)*exp(-t)
dt for x > 0 and|~(x) = n/(|~(1-x)sin(nx))
for x < 1. These functions use the external integer signgam to returnthe sign of |~(x) while lgamma_r() and gamma_r() use the
user-allocated space addressed by signgamp.
RETURN VALUES
Upon successful completion, these functions return the loga-
rithmic gamma of x.If x is a non-positive integer, a pole error occurs and
these functions return +HUGE_VAL, +HUGE_VALF, and
+HUGE_VALL, respectively.
If x is NaN, a NaN is returned. If x is 1 or 2, +0 shall be returned.If x is +_Inf, +Inf is returned.
ERRORS
These functions will fail if: Pole Error The x argument is a negative integer or 0.If the integer expression (math_errhandling &
MATH_ERREXCEPT) is non-zero, then the divide-
by-zero floating-point exception is raised.
USAGE
An application wanting to check for exceptions should callfeclearexcept(FE_ALL_EXCEPT) before calling these functions.
On return, if fetestexcept(FE_INVALID | FE_DIVBYZERO |
FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an exception has
been raised. An application should either examine the returnSunOS 5.11 Last change: 12 Jul 2006 2
Mathematical Library Functions lgamma(3M) value or check the floating point exception flags to detect exceptions. In the case of lgamma(), do not use the expression signgam*exp(lgamma(x)) to compute `g := |~(x)' Instead compute lgamma() first: lg = lgamma(x); g = signgam*exp(lg); only after lgamma() has returned can signgam be correct.Note that |~(x) must overflow when x is large enough, under-
flow when -x is large enough, and generate a division by 0
exception at the singularities x a nonpositive integer.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | See below. |
|_____________________________|_____________________________|
| Standard | See below. ||_____________________________|_____________________________|
The lgamma(), lgammaf(), lgammal(), gamma(), gammaf(), and
gammal() functions are Unsafe in multithreaded applications.The lgamma_r(), lgammaf_r(), lgammal_r(), gamma_r(),
gammaf_r(), and gammal_r() functions are MT-Safe and should
be used instead.For lgamma(), lgammaf(), lgammal(), and gamma(), see stan-
dards(5).SEE ALSO
exp(3M), feclearexcept(3M), fetestexcept(3M), isnan(3M), math.h(3HEAD), attributes(5), standards(5)SunOS 5.11 Last change: 12 Jul 2006 3
Mathematical Library Functions lgamma(3M) NOTESWhen compiling multithreaded applications, the _REENTRANT
flag must be defined on the compile line. This flag should only be used in multithreaded applications.SunOS 5.11 Last change: 12 Jul 2006 4