EN JA
LGAMMA(3)
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