# FreeBSD Manual Pages

```LGAMMA(3)		   Linux Programmer's Manual		     LGAMMA(3)

NAME
lgamma -	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);

DESCRIPTION
The Gamma function is defined by

Gamma(x) = integral from 0 to infinity of t^(x-1) e^-t dt

It  is  defined	for every real number except for nonpositive integers.
For nonnegative integral	m one has

Gamma(m+1) = m!

and, more generally, for	all x:

Gamma(x+1) = x * Gamma(x)

For x < 0.5 one can use

Gamma(x) * Gamma(1-x) =	PI/sin(PI*x)

The lgamma() function returns the natural  logarithm  of	 the  absolute
value  of  the  Gamma  function.	 The sign of the Gamma function	is re-
turned 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 func-
tions lgamma_r()	etc. have been introduced; they	return this  sign  via
the parameter signp.

For  nonpositive	 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.)

ERRORS
An  application	wishing	to check for error situations should set errno
to zero and  call  feclearexcept(FE_ALL_EXCEPT)	before	calling	 these
functions. On return, if	errno is non-zero or fetestexcept(FE_INVALID |
FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero,	an  error  has
occurred.

ERANGE Invalid argument - nonpositive integer value of x.

CONFORMING TO
C99, SVID 3, BSD	4.3

SEE ALSO
tgamma(3)

2002-08-10			     LGAMMA(3)
```

NAME | SYNOPSIS | DESCRIPTION | ERRORS | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=lgamma&sektion=3&manpath=Red+Hat+9>