LGAMMA(3) | FreeBSD Library Functions Manual | LGAMMA(3) |
名称
lgamma, lgamma_r, lgammaf, lgammaf_r, gamma, gamma_r, gammaf, gammaf_r, tgamma, tgammaf — 対数ガンマ関数、ガンマ関数ライブラリ
Math Library (libm, -lm)書式
#include < math.h>extern int signgam;
double
lgamma( double x);
double
lgamma_r( double x, int *signgamp);
float
lgammaf( float x);
float
lgammaf_r( float x, int *signgamp);
double
gamma( double x);
double
gamma_r( double x, int *signgamp);
float
gammaf( float x);
float
gammaf_r( float x, int *signgamp);
double
tgamma( double x);
float
tgammaf( float x);
解説
lgamma( x) と lgammaf( x) は ln|Γ(x)| を返します。外部整数 signgam はΓ(x) のサインを戻します。lgamma_r( x, signgamp) と lgammaf_r( x, signgamp) は lgamma( x) と lgammaf( x) と同じ機能を提供しますが、呼び出し側はΓ(x) のサインを格納する整数を提供しなければなりません。
tgamma( x) と tgammaf( x) 関数は、 signgam での効果なしでΓ(x) を返します。
gamma(), gammaf(), gamma_r(), gammaf_r() はそれぞれ lgamma(), lgammaf(), lgamma_r(), lgammaf_r() のための推奨されない別名です。
特異事項
g := Γ(x) の計算するのに“signgam∗exp(lgamma(x))
”のような表現を使わないでください。代わりに、(C 言語で) 次のようなプログラムを使ってください。
lg = lgamma(x); g = signgam∗exp(lg);
lgamma() か lgammaf() が返った後のみ、signgam は正確です。
その範囲での引数において、 tgamma() は、最後の場所で 1 ユニット内で正確であるという正の引数に関しては、優先されます。 lgamma() の指数計算は最大 10 有効ビットを失うでしょう。
戻り値
引数が範囲外でなければ gamma(), gamma_r(), gammaf(), gammaf_r(), lgamma(), lgamma_r(), lgammaf(), lgammaf_r() は適切な値を返します。非常に大きな正の整数か負の整数でオーバフローが生じます。大きな非整数の負の値に対して、 tgamma() はアンダフローするでしょう。関連項目
math(3)規格
lgamma(), lgammaf(), tgamma() と tgammaf() 関数は ISO/IEC 9899:1999 (“ISO C99”) に適合する予定です。歴史
lgamma() 関数は 4.3BSD で登場しました。 gamma() 関数はΓ(x) を計算する関数として 4.4BSD で登場しました。この版数は FreeBSD 1.1 で使われました。名前 gamma() は最初 lgamma() 関数のために設けられていました。そして、その使用は Sun の fdlibm に交換することで FreeBSD 1.1.5 で回復されました。 tgamma() 関数は FreeBSD 5.0 で登場しました。January 14, 2005 | FreeBSD |