OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man3 / lgamma.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 .\"
7 .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI
8 .\"         all rights reserved.
9 .\" Translated Sun Sep 22 08:44:32 2002
10 .\"         by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
11 .\" Updated & Modified Sat Feb 12 12:40:00 2005
12 .\"         by SAITOH Akira <s-akira@users.sourceforge.net>
13 .\" Updated 2008-09-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
14 .\"
15 .TH LGAMMA 3 2010-09-11 "" "Linux Programmer's Manual"
16 .SH 名前
17 lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam \-
18 ガンマ関数の対数を計算する
19 .SH 書式
20 .nf
21 .B #include <math.h>
22 .sp
23 .BI "double lgamma(double " x );
24 .br
25 .BI "float lgammaf(float " x );
26 .br
27 .BI "long double lgammal(long double " x );
28 .sp
29 .BI "double lgamma_r(double " x ", int *" signp );
30 .br
31 .BI "float lgammaf_r(float " x ", int *" signp );
32 .br
33 .BI "long double lgammal_r(long double " x ", int *" signp );
34 .sp
35 .BI "extern int " signgam ;
36 .fi
37 .sp
38 \fI\-lm\fP でリンクする。
39 .sp
40 .in -4n
41 glibc 向けの機能検査マクロの要件
42 .RB ( feature_test_macros (7)
43 参照):
44 .in
45 .sp
46 .ad l
47 .BR lgamma ():
48 .RS 4
49 _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
50 _POSIX_C_SOURCE\ >=\ 200112L;
51 .br
52 or
53 .I cc\ -std=c99
54 .RE
55 .br
56 .BR lgammaf (),
57 .BR lgammal ():
58 .RS 4
59 _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
60 _POSIX_C_SOURCE\ >=\ 200112L;
61 .br
62 or
63 .I cc\ -std=c99
64 .RE
65 .BR lgamma_r (),
66 .BR lgammaf_r (),
67 .BR lgammal_r ():
68 .RS 4
69 _BSD_SOURCE || _SVID_SOURCE
70 .RE
71 .IR signgam :
72 .RS 4
73 _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
74 .RE
75 .ad b
76 .SH 説明
77 ガンマ関数の定義については、
78 .BR tgamma (3)
79 を参照のこと。
80 .PP
81 関数
82 .BR lgamma ()
83 は、ガンマ関数の絶対値の自然対数を返す。
84 ガンマ関数の符号は、
85 .I <math.h>
86 で宣言されている extern int \fIsigngam\fP に格納される。
87 格納される値は、ガンマ関数が正または 0 の場合 1、
88 負の場合 \-1 である。
89 .PP
90 .I signgam
91 という固定された場所を使うことはスレッドセーフではないので、
92 関数
93 .BR lgamma_r ()
94 などが導入されている。
95 これらの関数では、符号は引き数
96 .I signp
97 経由で返される。
98 .SH 返り値
99 成功すると、これらの関数は Gamma(x) の自然対数を返す。
100
101 .I x
102 が NaN の場合、NaN が返される。
103
104 .I x
105 が 1 か 2 の場合、+0 が返される。
106
107 .I x
108 が正の無限大か負の無限大の場合、
109 正の無限大が返される。
110
111 .I x
112 が正でない整数の場合、極エラー (pole error) が発生し、
113 各関数はそれぞれ
114 .RB + HUGE_VAL ,
115 .RB + HUGE_VALF ,
116 .RB + HUGE_VALL
117 を返す。
118
119 .\" e.g., lgamma(DBL_MAX)
120 結果がオーバーフローする場合、範囲エラーが発生し、
121 各関数はそれぞれ
122 .BR HUGE_VAL ,
123 .BR HUGE_VALF ,
124 .B HUGE_VALL
125 を返す。返り値には数学的に正しい符号が付与される。
126 .SH エラー
127 これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は
128 .BR math_error (7)
129 を参照のこと。
130 .PP
131 以下のエラーが発生する可能性がある。
132 .TP
133 極エラー: \fIx\fP が正でない整数
134 .I errno
135
136 .B ERANGE
137 が設定される (「バグ」の節を参照)。
138 0 による除算 (divide-by-zero) 浮動小数点例外
139 .RB ( FE_DIVBYZERO )
140 が上がる。
141 .TP
142 範囲エラー: 結果のオーバーフロー
143 .I errno
144
145 .B ERANGE
146 が設定される。
147 オーバーフロー浮動小数点例外
148 .RB ( FE_OVERFLOW )
149 が上がる。
150 .\" glibc (as at 2.8) also supports an inexact
151 .\" exception for various cases.
152 .SH 準拠
153 関数
154 .BR lgamma ()
155 は C99 と POSIX.1-2001 で規定されている。
156 .I signgam
157 は POSIX.1-2001 で規定されているが、C99 にはない。
158 関数
159 .BR lgamma_r ()
160 は非標準だが、いくつかの他のシステムにも存在する。
161 .SH バグ
162 .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6777
163 glibc 2.9 とそれ以前のバージョンでは、
164 極エラーが発生した場合、POSIX で要求されている
165 .B ERANGE
166 ではなく
167 .B EDOM
168
169 .I errno
170 に設定される。
171 POSIX.1 では、
172 .B ERANGE
173 が設定されるべきとされている。
174 バージョン 2.10 以降の glibc では、正しい動作をする。
175 .SH 関連項目
176 .BR tgamma (3)