double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
-lm でリンクする。
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
tgamma(), tgammaf(), tgammal(): _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE; or cc -std=c99
Gamma(x) = t^(x-1) e^-t dt の 0 から無限大までの積分
この関数は正でない整数を除くすべての実数に対して定義されている。 非負の整数 m に関して、以下が成立する:
Gamma(m+1) = m!
より一般的には、すべての x に関して以下が成立する:
Gamma(x+1) = x * Gamma(x)
さらに、極を除くすべての x で次式も成立する:
Gamma(x) * Gamma(1 - x) = PI / sin(PI * x)
この関数は、引き数 x に対するガンマ関数の値を返す。 この関数は「本当の (true) ガンマ関数」と呼ばれる。 なぜなら、 gamma(3) という関数がすでに存在し、他の値を返すからである。
x が大きすぎる場合、range error が発生する。 x が 0 である場合、pole error が発生する。 x が負の整数の場合には domain error (もしくは pole error) が発生する。