NAME
lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r - log gamma function
SYNOPSIS
#include <math.h>
I double lgamma(double x );
I float lgammaf(float x );
I long double lgammal(long double x );
I double lgamma_r(double x , int * signp );
I float lgammaf_r(float x , int * signp );
I long double lgammal_r(long double x , int * signp );
Compile with
-std=c99; link with
-lm.
DESCRIPTION
For the definition of the Gamma function, see
tgamma(3).
The
R 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
R <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
R lgamma_r ()
etc. have
been introduced; they return this sign via the parameter
R signp .
For non-positive integer values of x,
R lgamma ()
returns
R HUGE_VAL ,
sets errno to
ERANGE
and raises the zero divide exception.
(Similarly,
R lgammaf ()
returns
HUGE_VALF
and
R lgammal ()
returns
R HUGE_VALL .)
ERRORS
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 non-zero or
fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW)
is non-zero, 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.
CONFORMING TO
C99, SVr4, 4.3BSD
SEE ALSO