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]](../stylesheet/note.png) | 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 the sign via the argument signp.
On success, these functions return the natural logarithm of Gamma(x).
If x is a NaN, a
      NaN is returned.
If x is 1 or 2, +0
      is returned.
If x is positive
      infinity or negative infinity, positive infinity is
      returned.
If x is a
      nonpositive integer, a pole error occurs, and the functions
      return +HUGE_VAL, +HUGE_VALF, or +HUGE_VALL, respectively.
If the result overflows, a range error occurs, and the
      functions return HUGE_VAL,
      HUGE_VALF, or HUGE_VALL, respectively, with the correct
      mathematical sign.
See math_error(7) for information on how to determine whether an error has occurred when calling these functions.
The following errors can occur:
x is a nonpositive
          integererrno is set to
            ERANGE (but see BUGS). A
            divide-by-zero floating-point exception (FE_DIVBYZERO) is raised.
errno is set to
            ERANGE. An overflow
            floating-point exception (FE_OVERFLOW) is raised.
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 nonstandard, but present on several other
      systems.
In glibc 2.9 and earlier, when a pole error occurs,
      errno is set to EDOM; instead of the POSIX-mandated
      ERANGE. Since version 2.10,
      glibc does the right thing.
This page is part of release 3.35 of the Linux man-pages project. A
      description of the project, and information about reporting
      bugs, can be found at http://man7.org/linux/man-pages/.
| Copyright 2002 Walter Harms (walter.harmsinformatik.uni-oldenburg.de) Distributed under GPL based on glibc infopages and Copyright 2008, Linux Foundation, written by Michael Kerrisk <mtk.manpagesgmail.com> |