December 3, 1992 LGAMMA 3

### NAME

lgamma, lgammaf, lgamma_r, lgammaf_r, gamma, gammaf, gamma_r, gammaf_r - log gamma function

### LIBRARY

Math Library (libm, -lm)

### SYNOPSIS

```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`)

### DESCRIPTION

lgamma(```x`) returns ln|(x)|.

The external integer ```signgam` returns the sign of (x).

lgamma_r(``) is a reentrant interface that performs identically to lgamma(``), differing in that the sign of (x) is stored in the location pointed to by the ```sign` argument and ```signgam` is not modified.

### IDIOSYNCRASIES

Do not use the expression `````signgam*exp(lgamma(x))`'' to compute g := (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.

### RETURN VALUES

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`.

### SEE ALSO

math(3)

### HISTORY

The lgamma function appeared in 4.3BSD.