lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam — log gamma function
#include <math.h>
double lgamma( | 
            double | x); | 
          
float
            lgammaf( | 
            float | x); | 
          
long
            double lgammal( | 
            long double | x); | 
          
double lgamma_r( | 
            double | x, | 
| int * | signp); | 
          
float
            lgammaf_r( | 
            float | x, | 
| int * | signp); | 
          
long
            double lgammal_r( | 
            long double | x, | 
| int * | signp); | 
          
![]()  | 
            Note | ||||||
|---|---|---|---|---|---|---|---|
              
  | 
          
extern int signgam; Link with −lm.
For the definition of the Gamma function, see tgamma(3).
The lgamma() function
      returns the natural logarithm of the absolute value of the
      Gamma function. The sign of the Gamma function is returned in
      the external integer signgam
      declared in <math.h> It
      is 1 when the Gamma function is positive or zero, −1
      when it is negative.
Since using a constant location signgam is not thread-safe, the functions
      lgamma_r() etc. have been
      introduced; they return this sign via the parameter
      signp.
For non-positive integer values of x, lgamma() returns HUGE_VAL, sets errno to ERANGE and raises the zero divide
      exception. (Similarly, lgammaf() returns HUGE_VALF and lgammal() returns HUGE_VALL.)
In order to check for errors, set errno to zero and call feclearexcept(FE_ALL_EXCEPT)
      before calling these functions. On return, if errno is nonzero or fetestexcept(FE_INVALID | FE_DIVBYZERO |
      FE_OVERFLOW | FE_UNDERFLOW) is nonzero, an error
      has occurred.
A range error occurs if x is too large. A pole error
      occurs if x is a
      negative integer or zero.
The lgamma() functions are
      specified in C99 and POSIX.1-2001. signgam is specified in POSIX.1-2001, but
      not in C99. The lgamma_r()
      functions are non-standard, but present on several other
      systems.
This page is part of release 2.79 of the Linux man-pages project. A
      description of the project, and information about reporting
      bugs, can be found at
      http://www.kernel.org/doc/man-pages/.
| 
                 Copyright 2002 Walter Harms (walter.harmsinformatik.uni-oldenburg.de) Distributed under GPL based on glibc infopages  |