LGAMMA

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home Page
 

名前

lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam - ガンマ関数の対数を計算する  

書式

#include <math.h>

double lgamma(double x);
float lgammaf(float x);
long double lgammal(long double x);

double lgamma_r(double x, int *signp);
float lgammaf_r(float x, int *signp);
long double lgammal_r(long double x, int *signp);

extern int signgam;

-lm でリンクする。

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

lgamma():

_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

lgammaf(), lgammal():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
lgamma_r(), lgammaf_r(), lgammal_r():
/* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
signgam:
_XOPEN_SOURCE
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 

説明

ガンマ関数の定義については、 tgamma(3) を参照のこと。

関数 lgamma(), lgammaf(), lgammal() は、ガンマ関数の絶対値の自然対数を返す。 ガンマ関数の符号は、 <math.h> で宣言されている extern int signgam に格納される。 格納される値は、ガンマ関数が正または 0 の場合 1、 負の場合 -1 である。

signgam という固定された場所を使うことはスレッドセーフではないので、 関数 lgamma_r(), lgammaf_r(), lgammal_r() が導入された。 これらの関数では、符号は引数 signp 経由で返される。  

返り値

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

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

x が 1 か 2 の場合、+0 が返される。

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

x が正でない整数の場合、極エラー (pole error) が発生し、 各関数はそれぞれ +HUGE_VAL, +HUGE_VALF, +HUGE_VALL を返す。

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

エラー

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

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

極エラー: x が正でない整数
errno に ERANGE が設定される (「バグ」の節も参照)。 0 による除算 (divide-by-zero) 浮動小数点例外 (FE_DIVBYZERO) が上がる。
範囲エラー (range error): 結果のオーバーフロー
errno に ERANGE が設定される。 オーバーフロー浮動小数点例外 (FE_OVERFLOW) が上がる。
 

準拠

関数 lgamma() は C99, POSIX.1-2001, POSIX.1-2008 で規定されている。 signgam は POSIX.1-2001 と POSIX.1-2008 で規定されているが、C99 にはない。 関数 lgamma_r() は非標準だが、いくつかの他のシステムにも存在する。  

バグ

glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した場合、POSIX で要求されている ERANGE ではなく EDOM が errno に設定される。 POSIX.1 では、 ERANGE が設定されるべきとされている。 バージョン 2.10 以降の glibc では、正しい動作をする。  

関連項目

tgamma(3)  

この文書について

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

関連キーワード

double   lgamma   lgammaf   lgammal   Since   versions   対数   符号   無限大   オーバーフロー   math   float   long   自然   格納   整数   範囲   range   バグ   浮動   小数点   規定   signgam   計算   検査

Linux マニュアル 一覧

関連するコマンド・関数

lgamma_r.3   lgammaf.3   lgammaf_r.3   lgammal.3   lgammal_r.3   signgam.3
 

Index

名前
書式
説明
返り値
エラー
準拠
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:32 GMT, October 11, 2026