Manpages - lgamma.3

Table of Contents

NAME

lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam - log gamma function

SYNOPSIS

  #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);

  extern int signgam;

Link with -lm.

Feature Test Macro Requirements for glibc (see *feature_test_macros*(7)):

  lgamma():
      _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE
          || /* Since glibc 2.19: */ _DEFAULT_SOURCE
          || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

*lgammaf*(), *lgammal*():

      _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
          || /* Since glibc 2.19: */ _DEFAULT_SOURCE
          || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

*lgamma_r*(), *lgammaf_r*(), *lgammal_r*():

      /* Since glibc 2.19: */ _DEFAULT_SOURCE
          || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

signgam:

      _XOPEN_SOURCE
          || /* Since glibc 2.19: */ _DEFAULT_SOURCE
          || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

For the definition of the Gamma function, see *tgamma*(3).

The *lgamma*(), *lgammaf*(), and *lgammal*() functions return 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*(), *lgammaf_r*(), and *lgammal_r*() have been introduced; they return the sign via the argument signp.

RETURN VALUE

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.

ERRORS

See *math_error*(7) for information on how to determine whether an error has occurred when calling these functions.

The following errors can occur:

Pole error: x is a nonpositive integer
errno is set to ERANGE (but see BUGS). A divide-by-zero floating-point exception (FE_DIVBYZERO) is raised.
Range error: result overflow
errno is set to ERANGE. An overflow floating-point exception (FE_OVERFLOW) is raised.

CONFORMING TO

The *lgamma*() functions are specified in C99, POSIX.1-2001, and POSIX.1-2008. signgam is specified in POSIX.1-2001 and POSIX.1-2008, but not in C99. The *lgamma_r*() functions are nonstandard, but present on several other systems.

BUGS

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.

SEE ALSO

*tgamma*(3)

COLOPHON

This page is part of release 5.13 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Author: dt

Created: 2022-02-20 Sun 16:59