LGAMMA(3)

名称
lgamma, lgammaf, gamma, gammaf - ガンマ関数およびガンマ関数の対数計算

ライブラリ
libm

書式
#include <math.h> extern int signgam;

double lgamma(double x) float lgammaf(float x) double gamma(double x) float gammaf(float x)

解説
lgamma(x) および lgammaf(x) は x のガンマ関数の自然対数を返します。

外部変数 signgam には x のガンマ関数の符号が返されます。

gamma(x) および gammaf(x) では signgam は使用されません。

特記事項
g := Γ(x) の計算において “signam*exp(lgamma(x))” のような記述は不適切です。 以下のような (C 言語) プログラムコーディングにします。

    lg = lgamma(x); g = signam*exp(lg);

signgam は、 lgamma() あるいは lgammaf() の処理が完了した段階でないと正しい値を得ることができません。

引数の値域については、 gamma() および gammaf() のものが優先されます。 正値引数の場合は全ての計算要素まで正確に計算されます。 lgamma() のベキ指数の有効サイズは 2 の 10 乗までです。

戻り値
gamma(), gammaf(), lgamma(), および lgammaf() は引数の値が適正な範囲であれば正しい結果を返します。 制限を越えた大きな桁の正整数値や負符号の 整数値を指定すると桁あふれエラーとなります。 VAX では、予約語のオペレータが返され、 負の大きな非整数値に関しては gamma() 関数でアンダフローエラーが発生し、 errno に ERANGE がセットされます。

関連項目
math(3)

歴史
lgamma は 4.3BSD に実装された関数です。 gamma は 4.4BSD に実装された関数です。 gamma() の名称は関数名 lgamma() の元になっていますが、 旧いコードの部分では互換性が失われている場合もあります。