OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man3 / tgamma.3
1 .\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
2 .\" Distributed under GPL
3 .\" Based on glibc infopages
4 .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
5 .\"     <mtk.manpages@gmail.com>
6 .\" Modified 2004-11-15, fixed error noted by Fabian Kreutz
7 .\"      <kreutz@dbs.uni-hannover.de>
8 .\"
9 .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI
10 .\"         all rights reserved.
11 .\" Translated Sun Sep 22 09:31:52 2002
12 .\"         by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
13 .\" Updated & Modified Sat Feb 12 12:00:00 2005
14 .\"         by SAITOH Akira <s-akira@users.sourceforge.net>
15 .\" Updated 2008-09-16, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
16 .\"
17 .TH TGAMMA 3 2010-09-20 "GNU" "Linux Programmer's Manual"
18 .SH 名前
19 tgamma, tgammaf, tgammal \- 本当のガンマ関数
20 .SH 書式
21 .B #include <math.h>
22 .sp
23 .BI "double tgamma(double " x );
24 .br
25 .BI "float tgammaf(float " x );
26 .br
27 .BI "long double tgammal(long double " x );
28 .sp
29 \fI\-lm\fP でリンクする。
30 .sp
31 .in -4n
32 glibc 向けの機能検査マクロの要件
33 .RB ( feature_test_macros (7)
34 参照):
35 .in
36 .sp
37 .ad l
38 .BR tgamma (),
39 .BR tgammaf (),
40 .BR tgammal ():
41 .RS 4
42 _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
43 _POSIX_C_SOURCE\ >=\ 200112L;
44 .br
45 or
46 .I cc\ -std=c99
47 .RE
48 .ad
49 .SH 説明
50 ガンマ関数は以下のように定義される:
51 .sp
52      Gamma(x) = t^(x\-1) e^\-t dt の 0 から無限大までの積分
53 .sp
54 この関数は正でない整数を除くすべての実数に対して定義されている。
55 非負の整数 \fIm\fP に関して、以下が成立する:
56 .sp
57     Gamma(m+1) = m!
58 .sp
59 より一般的には、すべての \fIx\fP に関して以下が成立する:
60 .sp
61     Gamma(x+1) = x * Gamma(x)
62 .sp
63 さらに、極を除くすべての \fIx\fP で次式も成立する:
64 .sp
65     Gamma(x) * Gamma(1 \- x) = PI / sin(PI * x)
66 .PP
67 .SH 返り値
68 成功すると、これらの関数は Gamma(x) を返す。
69
70 .I x
71 が NaN の場合、NaN が返される。
72
73 .I x
74 が正の無限大の場合、正の無限大が返される。
75
76 .I x
77 が負の整数か負の無限大の場合、領域エラー (domain error) が発生し、
78 NaN が返される。
79
80 結果がオーバーフローする場合、範囲エラー (range error) が発生し、
81 各関数はそれぞれ
82 .BR HUGE_VAL ,
83 .BR HUGE_VALF ,
84 .BR HUGE_VALL ,
85 を返す。この際、数学的に正しい符号が付与される。
86
87 結果がアンダーフローする場合、範囲エラー (range error) が発生し、
88 関数は 0 をを返す。この際、数学的に正しい符号が付与される。
89
90 .I x
91 が \-0 か +0 の場合、極エラー (pole error) が発生し、
92 各関数はそれぞれ
93 .BR HUGE_VAL ,
94 .BR HUGE_VALF ,
95 .BR HUGE_VALL ,
96 を返す。
97 0 と同じ符号が付与される。
98 .SH エラー
99 これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は
100 .BR math_error (7)
101 を参照のこと。
102 .PP
103 以下のエラーが発生する可能性がある。
104 .TP
105 領域エラー: \fIx\fP が負の整数か負の無限大
106 .\" FIXME . errno is not set to EDOM for x == -inf
107 .\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6809
108 .I errno
109
110 .B EDOM
111 が設定される。
112 不正 (invalid) 浮動小数点例外
113 .RB ( FE_INVALID )
114 が上がる (「バグ」の節を参照)。
115 .TP
116 極エラー (pole error): \fIx\fP が +0 か \-0
117 .I errno
118
119 .B ERANGE
120 が設定される。
121 0 による除算 (divide-by-zero) 浮動小数点例外
122 .RB ( FE_DIVBYZERO )
123 が上がる。
124 .TP
125 範囲エラー (range error): 結果のオーバーフロー
126 .I errno
127
128 .B ERANGE
129 が設定される。
130 オーバーフロー浮動小数点例外
131 .RB ( FE_OVERFLOW )
132 が上がる。
133 .PP
134 glibc では、C99 や POSIX.1-2001 で規定されていない以下のエラーも
135 起こり得る。
136 .TP
137 範囲エラー (range error): 結果のアンダーフロー
138 .\" e.g., tgamma(-172.5) on glibc 2.8/x86-32
139 .\" .I errno
140 .\" is set to
141 .\" .BR ERANGE .
142 アンダーフロー浮動小数点例外
143 .RB ( FE_UNDERFLOW )
144 が上がる。
145 この場合は
146 .I errno
147 は設定されない。
148 .\" FIXME . Is it intentional that errno is not set:
149 .\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6810
150 .\"
151 .\" glibc (as at 2.8) also supports and an inexact
152 .\" exception for various cases.
153 .SH バージョン
154 これらの関数は glibc バージョン 2.1 で初めて登場した。
155 .SH 準拠
156 C99, POSIX.1-2001.
157 .SH 注意
158 この関数を「本当の (true) ガンマ関数」と呼ばなければならなかった。
159 なぜなら、他の値を返す
160 .BR gamma (3)
161 という関数がすでに存在するからである (詳細については
162 .BR gamma (3)
163 を参照)。
164 .SH バグ
165 .I x
166 が負の無限大の場合、
167 .I errno
168 は設定されない
169 .RB ( EDOM
170 が設定されるべきである)。
171 .\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6809
172
173 glibc バージョン 2.3.3 以前では、
174 引き数に +0 や \-0 を渡すと、極エラーではなく、
175 領域エラーを間違って発生していた
176 (領域エラーの場合、
177 .I errno
178
179 .B EDOM
180 を設定され、
181 .B FE_INVALID
182 例外が発生する)。
183 .SH 関連項目
184 .BR gamma (3),
185 .BR lgamma (3)