Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

       #include <math.h>

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

       -lm でリンクする。

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       tgamma(), tgammaf(), tgammal():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

説明

       これらの関数は x のガンマ関数を計算する。

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

                   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)

返り値

       成功すると、これらの関数は Gamma(x) を返す。

       x が NaN の場合、NaN が返される。

       x が正の無限大の場合、正の無限大が返される。

       x が負の整数か負の無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。

       結果がオーバーフローする場合、範囲エラー   (range   error)   が発生し、   各関数はそれぞれ
       HUGE_VAL, HUGE_VALF, HUGE_VALL, を返す。この際、数学的に正しい符号が付与される。

       結果がアンダーフローする場合、範囲エラー  (range error) が発生し、 関数は 0 をを返す。この
       際、数学的に正しい符号が付与される。

       x が  -0  か  +0  の場合、極エラー  (pole  error)  が発生し、  各関数はそれぞれ  HUGE_VAL,
       HUGE_VALF, HUGE_VALL, を返す。 0 と同じ符号が付与される。

エラー

       これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は math_error(7)  を
       参照のこと。

       以下のエラーが発生する可能性がある。

       領域エラー: x が負の整数か負の無限大
              errnoEDOM が設定される。 不正 (invalid) 浮動小数点例外  (FE_INVALID)   が上がる
              (「バグ」の節を参照)。

       極エラー (pole error): x が +0 か -0
              errnoERANGE  が設定される。  0  による除算  (divide-by-zero)  浮動小数点例外
              (FE_DIVBYZERO)  が上がる。

       範囲エラー (range error): 結果のオーバーフロー
              errnoERANGE が設定される。 オーバーフロー浮動小数点例外  (FE_OVERFLOW)   が上が
              る。

       glibc では、C99 や POSIX.1-2001 で規定されていない以下のエラーも 起こり得る。

       範囲エラー (range error): 結果のアンダーフロー
              アンダーフロー浮動小数点例外  (FE_UNDERFLOW)  が上がり、 errnoERANGE に設定され
              る。

バージョン

       これらの関数は glibc バージョン 2.1 で初めて登場した。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌───────────────────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├───────────────────────────────┼───────────────┼─────────┤
       │tgamma(), tgammaf(), tgammal() │ Thread safety │ MT-Safe │
       └───────────────────────────────┴───────────────┴─────────┘

準拠

       C99, POSIX.1-2001, POSIX.1-2008.

注意

       この関数を「本当の (true) ガンマ関数」と呼ばなければならなかった。  なぜなら、他の値を返す
       gamma(3) という関数がすでに存在するからである (詳細については gamma(3)  を参照)。

バグ

       バージョン  2.18 より前の glibc の実装では、 x が負の無限大の場合、 errnoEDOM が設定さ
       れなかった。

       glibc 2.19 より前では、これらの関数の glibc  実装はアンダーフロー範囲エラーの場合に  errnoERANGE を設定しなかった。

       glibc  バージョン 2.3.3 以前では、 引数に +0 や -0 を渡すと、極エラーではなく、 領域エラー
       を間違って発生していた (領域エラーの場合、 errnoEDOM を設定され、 FE_INVALID  例外が発
       生する)。

関連項目

       gamma(3), lgamma(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。