.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under GPL .\" %%%LICENSE_END .\" .\" Based on glibc infopages .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" Modified 2004-11-15, fixed error noted by Fabian Kreutz .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI .\" all rights reserved. .\" Translated Sun Sep 22 09:31:52 2002 .\" by Akihiro MOTOKI .\" Updated & Modified Sat Feb 12 12:00:00 2005 .\" by SAITOH Akira .\" Updated 2008-09-16, Akihiro MOTOKI .\" .TH TGAMMA 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 tgamma, tgammaf, tgammal \- 本当のガンマ関数 .SH 書式 \fB#include \fP .PP \fBdouble tgamma(double \fP\fIx\fP\fB);\fP .br \fBfloat tgammaf(float \fP\fIx\fP\fB);\fP .br \fBlong double tgammal(long double \fP\fIx\fP\fB);\fP .PP \fI\-lm\fP でリンクする。 .PP .RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .RE .PP .ad l \fBtgamma\fP(), \fBtgammaf\fP(), \fBtgammal\fP(): .RS 4 _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L .RE .ad .SH 説明 これらの関数は \fIx\fP のガンマ関数を計算する。 .PP ガンマ関数は以下のように定義される: .PP .RS Gamma(x) = t^(x\-1) e^\-t dt の 0 から無限大までの積分 .RE .PP この関数は正でない整数を除くすべての実数に対して定義されている。 非負の整数 \fIm\fP に関して、以下が成立する: .PP .RS Gamma(m+1) = m! .RE .PP より一般的には、すべての \fIx\fP に関して以下が成立する: .PP .RS Gamma(x+1) = x * Gamma(x) .RE .PP さらに、極を除くすべての \fIx\fP で次式も成立する: .PP .RS Gamma(x) * Gamma(1 \- x) = PI / sin(PI * x) .RE .SH 返り値 成功すると、これらの関数は Gamma(x) を返す。 .PP \fIx\fP が NaN の場合、NaN が返される。 .PP \fIx\fP が正の無限大の場合、正の無限大が返される。 .PP \fIx\fP が負の整数か負の無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。 .PP 結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP, を返す。この際、数学的に正しい符号が付与される。 .PP 結果がアンダーフローする場合、範囲エラー (range error) が発生し、 関数は 0 をを返す。この際、数学的に正しい符号が付与される。 .PP \fIx\fP が \-0 か +0 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP, を返す。 0 と同じ符号が付与される。 .SH エラー これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 .PP 以下のエラーが発生する可能性がある。 .TP 領域エラー: \fIx\fP が負の整数か負の無限大 \fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる (「バグ」の節を参照)。 .TP 極エラー (pole error): \fIx\fP が +0 か \-0 \fIerrno\fP に \fBERANGE\fP が設定される。 0 による除算 (divide\-by\-zero) 浮動小数点例外 (\fBFE_DIVBYZERO\fP) が上がる。 .TP 範囲エラー (range error): 結果のオーバーフロー \fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 .PP glibc では、C99 や POSIX.1\-2001 で規定されていない以下のエラーも 起こり得る。 .TP 範囲エラー (range error): 結果のアンダーフロー .\" e.g., tgamma(-172.5) on glibc 2.8/x86-32 .\" .I errno .\" is set to .\" .BR ERANGE . .\" glibc (as at 2.8) also supports an inexact .\" exception for various cases. アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がり、 \fIerrno\fP が \fBERANGE\fP に設定される。 .SH バージョン これらの関数は glibc バージョン 2.1 で初めて登場した。 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .TS allbox; lbw30 lb lb l l l. インターフェース 属性 値 T{ \fBtgamma\fP(), \fBtgammaf\fP(), \fBtgammal\fP() T} Thread safety MT\-Safe .TE .SH 準拠 C99, POSIX.1\-2001, POSIX.1\-2008. .SH 注意 この関数を「本当の (true) ガンマ関数」と呼ばなければならなかった。 なぜなら、他の値を返す \fBgamma\fP(3) という関数がすでに存在するからである (詳細については \fBgamma\fP(3) を参照)。 .SH バグ .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6809 バージョン 2.18 より前の glibc の実装では、 \fIx\fP が負の無限大の場合、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 .PP .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6810 glibc 2.19 より前では、これらの関数の glibc 実装はアンダーフロー範囲エラーの場合に \fIerrno\fP に \fBERANGE\fP を設定しなかった。 .PP .\" glibc バージョン 2.3.3 以前では、 引数に +0 や \-0 を渡すと、極エラーではなく、 領域エラーを間違って発生していた (領域エラーの場合、 \fIerrno\fP に \fBEDOM\fP を設定され、 \fBFE_INVALID\fP 例外が発生する)。 .SH 関連項目 \fBgamma\fP(3), \fBlgamma\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。