tgamma, tgammaf, tgammal — true gamma function
#include <math.h>
double
tgamma( 
double x) ; 
float
tgammaf( 
float x) ; 
long double
tgammal( 
long double x) ; 
Note  


Note  

Link with 
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)
Furthermore, the following is valid for all values of
x
outside the
poles:
Gamma(x) * Gamma(1 − x) = PI / sin(PI * x)
On success, these functions return Gamma(x).
If x
is a NaN, a
NaN is returned.
If x
is positive
infinity, positive infinity is returned.
If x
is a negative
integer, or is negative infinity, a domain error occurs, and
a NaN is returned.
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.
If the result underflows, a range error occurs, and the functions return 0, with the correct mathematical sign.
If x
is −0
or +0, a pole error occurs, and the functions return
HUGE_VAL
, HUGE_VALF
, or HUGE_VALL
, respectively, with the same sign
as the 0.
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 negative integer, or
negative infinityerrno
is set to
EDOM. An invalid
floatingpoint exception (FE_INVALID
) is raised (but see
BUGS).
x
is +0 or
−0errno
is set to
ERANGE. A dividebyzero
floatingpoint exception (FE_DIVBYZERO
) is raised.
errno
is set to
ERANGE. An overflow
floatingpoint exception (FE_OVERFLOW
) is raised.
glibc also gives the following error which is not specified in C99 or POSIX.12001.
An underflow floatingpoint exception (FE_UNDERFLOW
) is raised.
errno
is not set for
this case.
This function had to be called "true gamma function" since there is already a function gamma(3) that returns something else (see gamma(3) for details).
If x
is negative
infinity, errno
is not set (it
should be set to EDOM).
In glibc versions 2.3.3 and earlier, an argument of +0 or
−0 incorrectly produced a domain error (errno
set to EDOM and an FE_INVALID
exception raised), rather than a
pole error.
This page is part of release 3.52 of the Linux manpages
project. A
description of the project, and information about reporting
bugs, can be found at
http://www.kernel.org/doc/man−pages/.
Copyright 2002 Walter Harms (walter.harmsinformatik.unioldenburg.de) %%%LICENSE_START(GPL_NOVERSION_ONELINE) Distributed under GPL %%%LICENSE_END Based on glibc infopages and Copyright 2008, Linux Foundation, written by Michael Kerrisk <mtk.manpagesgmail.com> Modified 20041115, fixed error noted by Fabian Kreutz <kreutzdbs.unihannover.de> 