LGAMMA(3) BSD Programmer's Manual LGAMMA(3)
lgamma, lgammaf, lgamma_r, lgammaf_r, gamma, gammaf, gamma_r, gammaf_r - log gamma function
libm
#include <math.h> extern int signgam; double lgamma(double x); float lgammaf(float x); double lgamma_r(double x, int *sign); float lgammaf_r(float x, int *sign); double gamma(double x); float gammaf(float x); double gamma_r(double x, int *sign); float gammaf_r(float x, int *sign);
lgamma(x) returns ln|I̅(x)|. The external integer signgam returns the sign of I̅(x). lgamma_r() is a reentrant interface that performs identically to lgam- ma(), differing in that the sign of I̅(x) is stored in the location point- ed to by the sign argument and signgam is not modified.
Do not use the expression "signgam*exp(lgamma(x))" to compute g := I̅(x). Instead use a program like this (in C): lg = lgamma(x); g = signgam*exp(lg); Only after lgamma() has returned can signgam be correct.
lgamma() returns appropriate values unless an argument is out of range. Overflow will occur for sufficiently large positive values, and non- positive integers. On the VAX, the reserved operator is returned, and errno is set to ERANGE.
math(3)
The lgamma function appeared in 4.3BSD. MirBSD #10-current December 3, 1992 1