名前


tgamma, tgammaf, tgammal - 本当のガンマ関数

書式


#include <math.h>

double tgamma(double x); float tgammaf(float x); long double tgammal(long double x);

-std=c99 でコンパイルし、-lm でリンクする。

説明


ガンマ関数は以下のように定義される:

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) という関数がすでに存在し、他の値を返すからである。

エラー


エラーをチェックするためには、これらの関数を呼び出す前に errno を 0 にセットし、 feclearexcept(FE_ALL_EXCEPT) を呼べばよい。 関数実行後に、 errno が 0 以外か、 fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) が 0 以外ならば、エラーが発生したことが分かる。

x が大きすぎる場合、range error が発生する。 x が 0 である場合、pole error が発生する。 x が負の整数の場合には domain error (もしくは pole error) が発生する。

準拠


C99.

関連項目


gamma(3), lgamma(3)

openSUSE Logo

コンテンツ