名前空間
変種
操作

tgamma, tgammaf, tgammal

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
tgamma
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <math.h> で定義
float       tgammaf( float arg );
(1) (C99以降)
double      tgamma( double arg );
(2) (C99以降)
long double tgammal( long double arg );
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define tgamma( arg )
(4) (C99以降)
1-3) argガンマ関数を計算します。
4) 型汎用マクロ: argの型がlong doubleの場合、tgammalが呼び出されます。それ以外の場合、argの型が整数型またはdoubleの場合、tgammaが呼び出されます。それ以外の場合、tgammafが呼び出されます。

目次

[編集] パラメータ

arg - floating-point value

[編集] 戻り値

エラーが発生しなかった場合、argのガンマ関数の値、すなわち
0
targ-1
e-t dt
、が返されます。

ドメインエラーが発生した場合、実装定義の値(サポートされている場合はNaN)が返されます。

ポールエラーが発生した場合、±HUGE_VAL±HUGE_VALF、または±HUGE_VALLが返されます。

オーバーフローによる範囲エラーが発生した場合、±HUGE_VAL±HUGE_VALF、または ±HUGE_VALL が返されます。

アンダーフローによる範囲エラーが発生した場合、(丸め後の)正しい値を返します。

[編集] エラー処理

エラーは math_errhandling で指定されたとおりに報告されます。

argがゼロまたは負の整数である場合、ポールエラーまたはドメインエラーが発生する可能性があります。

実装が IEEE 浮動小数点演算 (IEC 60559) をサポートしている場合

  • 引数が±0の場合、±∞が返され、FE_DIVBYZEROが設定されます。
  • 引数が負の整数である場合、NaNが返され、FE_INVALIDが設定されます。
  • 引数が-∞の場合、NaNが返され、FE_INVALIDが設定されます。
  • 引数が +∞ の場合、+∞ が返されます。
  • 引数が NaN の場合、NaN が返されます。

[編集] 注記

argが自然数である場合、tgamma(arg)arg - 1の階乗です。多くの実装では、引数が十分に小さい整数の場合、正確な整数ドメインの階乗を計算します。

IEEE互換のdouble型の場合、0 < x < 1/DBL_MAXまたはx > 171.7の場合にオーバーフローが発生します。

POSIXでは、引数がゼロの場合はポールエラーが発生し、引数が負の整数の場合はドメインエラーが発生することが要求されています。また、将来的に、負の整数の引数に対してドメインエラーがポールエラーに置き換えられる可能性がある(その場合、これらのケースでの戻り値はNaNから±∞に変わる)と規定しています。

様々な実装に gamma という名前の非標準関数がありますが、その定義は一貫性がありません。例えば、glibc と 4.2BSD 版の gammalgamma を実行しますが、4.4BSD 版の gammatgamma を実行します。

[編集]

#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
 
int main(void)
{
    printf("tgamma(10) = %f, 9!=%f\n", tgamma(10), 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9.0);
    printf("tgamma(0.5) = %f, sqrt(pi) = %f\n", tgamma(0.5), sqrt(acos(-1)));
 
    // special values
    printf("tgamma(+Inf) = %f\n", tgamma(INFINITY));
 
    // error handling
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("tgamma(-1) = %f\n", tgamma(-1));
    if (errno == ERANGE)
        perror("    errno == ERANGE");
    else
        if (errno == EDOM)   perror("    errno == EDOM");
    if (fetestexcept(FE_DIVBYZERO))
        puts("    FE_DIVBYZERO raised");
    else if (fetestexcept(FE_INVALID))
        puts("    FE_INVALID raised");
}

実行結果の例

tgamma(10) = 362880.000000, 9!=362880.000000
tgamma(0.5) = 1.772454, sqrt(pi) = 1.772454
tgamma(+Inf) = inf
tgamma(-1) = nan
    errno == EDOM: Numerical argument out of domain
    FE_INVALID raised

[編集] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.12.8.4 The tgamma functions (p: 250)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.5.4 The tgamma functions (p: 525)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.12.8.4 The tgamma functions (p: 250)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.5.4 The tgamma functions (p: 525)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.12.8.4 The tgamma functions (p: 250)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.5.4 The tgamma functions (p: 525)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.12.8.4 The tgamma functions (p: 231)
  • 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
  • F.9.5.4 The tgamma functions (p: 462)

[編集] 関連項目

(C99)(C99)(C99)
ガンマ関数の自然(底-e)対数を計算する
(関数) [編集]

[編集] 外部リンク

Weisstein, Eric W. "Gamma Function." MathWorld — A Wolfram Web Resourceより。
English 日本語 中文(简体) 中文(繁體)