.\" Updated 2008-09-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\"
.TH POW 3 2010-09-12 "" "Linux Programmer's Manual"
-.SH ̾Á°
-pow, powf, powl \- Îß¾è´Ø¿ô
-.SH ½ñ¼°
+.SH 名前
+pow, powf, powl \- 累乗関数
+.SH 書式
.nf
.B #include <math.h>
.sp
.BI "long double powl(long double " x ", long double " y );
.fi
.sp
-\fI\-lm\fP ¤Ç¥ê¥ó¥¯¤¹¤ë¡£
+\fI\-lm\fP でリンクする。
.sp
.in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
+glibc 向けの機能検査マクロの要件
.RB ( feature_test_macros (7)
-»²¾È):
+参照):
.in
.sp
.ad l
.I cc\ -std=c99
.RE
.ad
-.SH ÀâÌÀ
+.SH 説明
.BR pow ()
-´Ø¿ô¤Ï \fIx\fP ¤Î \fIy\fP ¾è¤ÎÃͤòÊÖ¤¹¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï
+関数は \fIx\fP の \fIy\fP 乗の値を返す。
+.SH 返り値
+成功すると、これらの関数は
.I x
-¤Î
+の
.I y
-¾è¤ÎÃͤòÊÖ¤¹¡£
+乗の値を返す。
.I x
-¤¬ 0 ̤Ëþ¤Î͸ÂÃͤÇ
+が 0 未満の有限値で
.I y
-¤¬À°¿ô¤Ç¤Ê¤¤Í¸ÂÃͤξì¹ç¡¢Îΰ襨¥é¡¼ (domain error) ¤¬È¯À¸¤·¡¢
+が整数でない有限値の場合、領域エラー (domain error) が発生し、
.\" The domain error is generated at least as far back as glibc 2.4
-NaN ¤¬ÊÖ¤µ¤ì¤ë¡£
+NaN が返される。
-·ë²Ì¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë¾ì¹ç¡¢
-ÈÏ°Ï¥¨¥é¡¼ (range error) ¤¬È¯À¸¤·¡¢
+結果がオーバーフローする場合、
+範囲エラー (range error) が発生し、
.\" The range error is generated at least as far back as glibc 2.4
-³Æ´Ø¿ô¤Ï¤½¤ì¤¾¤ì
+各関数はそれぞれ
.BR HUGE_VAL ,
.BR HUGE_VALF ,
.BR HUGE_VALL
-¤òÊÖ¤¹¡£ÊÖ¤êÃͤˤϿô³ØŪ¤ËÀµ¤·¤¤Éä¹æ¤¬ÉÕÍ¿¤µ¤ì¤ë¡£
+を返す。返り値には数学的に正しい符号が付与される。
-·ë²Ì¤¬¥¢¥ó¥À¡¼¥Õ¥í¡¼¤·¡¢¤½¤ÎÃͤ¬É½¸½²Äǽ¤Ç¤Ê¤¤¾ì¹ç¡¢
-ÈÏ°Ï¥¨¥é¡¼¤¬È¯À¸¤·¡¢ 0.0 ¤¬ÊÖ¤µ¤ì¤ë¡£
+結果がアンダーフローし、その値が表現可能でない場合、
+範囲エラーが発生し、 0.0 が返される。
.\" POSIX.1 does not specify the sign of the zero,
.\" but http://sources.redhat.com/bugzilla/show_bug.cgi?id=2678
.\" points out that the zero has the wrong sign in some cases.
-°Ê²¼¤Çµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¡¢
+以下で規定されていない場合で、
.I x
-¤«
+か
.I y
-¤¬ NaN ¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï NaN ¤È¤Ê¤ë¡£
+が NaN の場合、返り値は NaN となる。
.I x
-¤¬ +1 ¤Î¾ì¹ç¡¢
+が +1 の場合、
.RI ( y
-¤¬ NaN ¤Ç¤¢¤Ã¤¿¤È¤·¤Æ¤â) ÊÖ¤êÃÍ¤Ï 1.0 ¤È¤Ê¤ë¡£
+が NaN であったとしても) 返り値は 1.0 となる。
.I y
-¤¬ 0 ¤Î¾ì¹ç¡¢
+が 0 の場合、
.RI ( x
-¤¬ NaN ¤Ç¤¢¤Ã¤¿¤È¤·¤Æ¤â) ÊÖ¤êÃÍ¤Ï 1.0 ¤È¤Ê¤ë¡£
+が NaN であったとしても) 返り値は 1.0 となる。
.I x
-¤¬ +0 (\-0) ¤Ç
+が +0 (\-0) で
.I y
-¤¬ 0 ¤è¤êÂ礤ʴñ¿ô¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 (\-0) ¤È¤Ê¤ë¡£
+が 0 より大きな奇数の場合、返り値は +0 (\-0) となる。
.I x
-¤¬ 0 ¤Ç¡¢
+が 0 で、
.I y
-¤¬ 0 ¤è¤êÂ礤¯´ñ¿ô¤Ç¤Ê¤¤¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 ¤È¤Ê¤ë¡£
+が 0 より大きく奇数でない場合、返り値は +0 となる。
.I x
-¤¬ \-1 ¤Ç¡¢
+が \-1 で、
.I y
-¤¬Àµ¤Î̵¸ÂÂ礫Éé¤Î̵¸ÂÂç¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï 1.0 ¤È¤Ê¤ë¡£
+が正の無限大か負の無限大の場合、返り値は 1.0 となる。
.I x
-¤ÎÀäÂÐÃͤ¬ 1 ̤Ëþ¤Ç¡¢
+の絶対値が 1 未満で、
.I y
-¤¬Éé¤Î̵¸ÂÂç¤Î¾ì¹ç¡¢ÊÖ¤êÃͤÏÀµ¤Î̵¸ÂÂç¤È¤Ê¤ë¡£
+が負の無限大の場合、返り値は正の無限大となる。
.I x
-ÀäÂÐÃͤ¬ 1 ¤è¤êÂ礤¯¡¢
+絶対値が 1 より大きく、
.I y
-¤¬Éé¤Î̵¸ÂÂç¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 ¤È¤Ê¤ë¡£
+が負の無限大の場合、返り値は +0 となる。
.I x
-¤ÎÀäÂÐÃͤ¬ 1 ̤Ëþ¤Ç¡¢
+の絶対値が 1 未満で、
.I y
-¤¬Àµ¤Î̵¸ÂÂç¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 ¤È¤Ê¤ë¡£
+が正の無限大の場合、返り値は +0 となる。
.I x
-¤ÎÀäÂÐÃͤ¬ 1 ¤è¤êÂ礤¯¡¢
+の絶対値が 1 より大きく、
.I y
-¤¬Àµ¤Î̵¸ÂÂç¤Î¾ì¹ç¡¢ÊÖ¤êÃͤÏÀµ¤Î̵¸ÂÂç¤È¤Ê¤ë¡£
+が正の無限大の場合、返り値は正の無限大となる。
.I x
-¤¬Éé¤Î̵¸ÂÂç¤Ç¡¢
+が負の無限大で、
.I y
-¤¬ 0 ¤è¤ê¾®¤µ¤¤´ñ¿ô¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï \-0 ¤È¤Ê¤ë¡£
+が 0 より小さい奇数の場合、返り値は \-0 となる。
.I x
-¤¬Éé¤Î̵¸ÂÂç¤Ç¡¢
+が負の無限大で、
.I y
-¤¬ 0 ¤è¤ê¾®¤µ¤¯´ñ¿ô¤Ç¤Ê¤¤¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 ¤È¤Ê¤ë¡£
+が 0 より小さく奇数でない場合、返り値は +0 となる。
.I x
-¤¬Éé¤Î̵¸ÂÂç¤Ç¡¢
+が負の無限大で、
.I y
-¤¬ 0 ¤è¤êÂ礤¤´ñ¿ô¤Î¾ì¹ç¡¢ÊÖ¤êÃͤÏÉé¤Î̵¸ÂÂç¤È¤Ê¤ë¡£
+が 0 より大きい奇数の場合、返り値は負の無限大となる。
.I x
-¤¬Éé¤Î̵¸ÂÂç¤Ç¡¢
+が負の無限大で、
.I y
-¤¬ 0 ¤è¤êÂ礤¯´ñ¿ô¤Ç¤Ê¤¤¾ì¹ç¡¢ÊÖ¤êÃͤÏÀµ¤Î̵¸ÂÂç¤È¤Ê¤ë¡£
+が 0 より大きく奇数でない場合、返り値は正の無限大となる。
.I x
-¤¬Àµ¤Î̵¸ÂÂç¤Ç¡¢
+が正の無限大で、
.I y
-¤¬ 0 ̤Ëþ¤Î¾ì¹ç¡¢ÊÖ¤êÃÍ¤Ï +0 ¤È¤Ê¤ë¡£
+が 0 未満の場合、返り値は +0 となる。
.I x
-¤¬Àµ¤Î̵¸ÂÂç¤Ç¡¢
+が正の無限大で、
.I y
-¤¬ 0 ¤è¤êÂ礤¤¾ì¹ç¡¢ÊÖ¤êÃͤÏÀµ¤Î̵¸ÂÂç¤È¤Ê¤ë¡£
+が 0 より大きい場合、返り値は正の無限大となる。
.I x
-¤¬ +0 ¤« \-0 ¤Ç¡¢
+が +0 か \-0 で、
.I y
-¤¬ 0 ¤è¤ê¾®¤µ¤¤´ñ¿ô¤Î¾ì¹ç¡¢
-¶Ë¥¨¥é¡¼ (pole error) ¤¬È¯À¸¤·¡¢ÊÖ¤êÃͤÏ
+が 0 より小さい奇数の場合、
+極エラー (pole error) が発生し、返り値は
.BR HUGE_VAL ,
.BR HUGE_VALF ,
.BR HUGE_VALL
-¤È¤Ê¤ë¡£
+となる。
.I x
-¤ÈƱ¤¸Éä¹æ¤¬ÉÕÍ¿¤µ¤ì¤ë¡£
+と同じ符号が付与される。
.I x
-¤¬ +0 ¤« \-0 ¤Ç¡¢
+が +0 か \-0 で、
.I y
-¤¬ 0 ¤è¤ê¾®¤µ¤¯´ñ¿ô¤Ç¤Ê¤¤¾ì¹ç¡¢
-¶Ë¥¨¥é¡¼¤¬È¯À¸¤·¡¢
+が 0 より小さく奇数でない場合、
+極エラーが発生し、
.\" The pole error is generated at least as far back as glibc 2.4
-ÊÖ¤êÃͤÏ
+返り値は
.BR + HUGE_VAL ,
.BR + HUGE_VALF ,
.BR + HUGE_VALL
-¤È¤Ê¤ë¡£
-.SH ¥¨¥é¡¼
+となる。
+.SH ã\82¨ã\83©ã\83¼
.\" FIXME . review status of this error
.\" longstanding bug report for glibc:
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=369
.\" pow(-1.5,DBL_MAX)=nan
.\" EDOM FE_INVALID nan; fail-errno fail-except fail-result;
.\" FAIL (expected: range-error-overflow (ERANGE, FE_OVERFLOW); +INF)
-¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤«¤ÎȽÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Ï
+これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は
.BR math_error (7)
-¤ò»²¾È¤Î¤³¤È¡£
+を参照のこと。
.PP
-°Ê²¼¤Î¥¨¥é¡¼¤¬È¯À¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡£
+以下のエラーが発生する可能性がある。
.TP
-Îΰ襨¥é¡¼: \fIx\fP ¤¬Éé¤Ç¡¢\fIy\fP ¤¬À°¿ô¤Ç¤Ê¤¤Í¸ÂÃÍ
+領域エラー: \fIx\fP が負で、\fIy\fP が整数でない有限値
.I errno
-¤Ë
+に
.B EDOM
-¤¬ÀßÄꤵ¤ì¤ë¡£
-ÉÔÀµ (invalid) ÉâÆ°¾®¿ôÅÀÎã³°
+が設定される。
+不正 (invalid) 浮動小数点例外
.RB ( FE_INVALID )
-¤¬¾å¤¬¤ë¡£
+が上がる。
.TP
-¶Ë¥¨¥é¡¼: \fIx\fP ¤¬¥¼¥í¤Ç¡¢\fIy\fP ¤¬Éé
+極エラー: \fIx\fP がゼロで、\fIy\fP が負
.I errno
-¤Ë
+に
.B ERANGE
-¤¬ÀßÄꤵ¤ì¤ë¡£
-0 ¤Ë¤è¤ë½ü»» (divide-by-zero) ÉâÆ°¾®¿ôÅÀÎã³°
+が設定される。
+0 による除算 (divide-by-zero) 浮動小数点例外
.RB ( FE_DIVBYZERO )
-¤¬¾å¤¬¤ë¡£
+が上がる。
.TP
-ÈÏ°Ï¥¨¥é¡¼: ·ë²Ì¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼
+ç¯\84å\9b²ã\82¨ã\83©ã\83¼: çµ\90æ\9e\9cã\81\8cã\82ªã\83¼ã\83\90ã\83¼ã\83\95ã\83ã\83¼
.I errno
-¤Ë
+に
.B ERANGE
-¤¬ÀßÄꤵ¤ì¤ë¡£
-¥ª¡¼¥Ð¡¼¥Õ¥í¡¼ÉâÆ°¾®¿ôÅÀÎã³°
+が設定される。
+オーバーフロー浮動小数点例外
.RB ( FE_OVERFLOW )
-¤¬¾å¤¬¤ë¡£
+が上がる。
.TP
-ÈÏ°Ï¥¨¥é¡¼: ·ë²Ì¤¬¥¢¥ó¥À¡¼¥Õ¥í¡¼
+ç¯\84å\9b²ã\82¨ã\83©ã\83¼: çµ\90æ\9e\9cã\81\8cã\82¢ã\83³ã\83\80ã\83¼ã\83\95ã\83ã\83¼
.I errno
-¤Ë
+に
.B ERANGE
-¤¬ÀßÄꤵ¤ì¤ë¡£
-¥¢¥ó¥À¡¼¥Õ¥í¡¼ÉâÆ°¾®¿ôÅÀÎã³°
+が設定される。
+アンダーフロー浮動小数点例外
.RB ( FE_UNDERFLOW )
-¤¬¾å¤¬¤ë¡£
-.SH ½àµò
+が上がる。
+.SH 準拠
C99, POSIX.1-2001.
.I double
-ÈǤδؿô¤Ï SVr4, 4.3BSD, C89 ¤Ë¤â½àµò¤·¤Æ¤¤¤ë¡£
-.SH ¥Ð¥°
+版の関数は SVr4, 4.3BSD, C89 にも準拠している。
+.SH ã\83\90ã\82°
.\"
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6776
.\" or possibly 2.9, I haven't found the source code change
.\" and I don't have a 2.9 system to test
-glibc 2.9 ¤È¤½¤ì°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢
-¶Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¡¢POSIX ¤ÇÍ׵ᤵ¤ì¤Æ¤¤¤ë
+glibc 2.9 とそれ以前のバージョンでは、
+極エラーが発生した場合、POSIX で要求されている
.B ERANGE
-¤Ç¤Ï¤Ê¤¯
+ではなく
.B EDOM
-¤¬
+が
.I errno
-¤ËÀßÄꤵ¤ì¤ë¡£
-¥Ð¡¼¥¸¥ç¥ó 2.10 °Ê¹ß¤Î glibc ¤Ç¤Ï¡¢Àµ¤·¤¤Æ°ºî¤ò¤¹¤ë¡£
+に設定される。
+バージョン 2.10 以降の glibc では、正しい動作をする。
.I x
-¤¬Éé¤Î¾ì¹ç¡¢Â礤ÊÀµÉé¤ÎÃͤÎ
+が負の場合、大きな正負の値の
.I y
-¤¬Í¿¤¨¤é¤ì¤ë¤È¡¢´Ø¿ô¤Î·ë²Ì¤¬ NaN ¤È¤Ê¤ê¡¢
+が与えられると、関数の結果が NaN となり、
.I errno
-¤Ë
+に
.B EDOM
-¤¬ÀßÄꤵ¤ì¡¢
-ÉÔÀµÉâÆ°¾®¿ôÅÀÎã³°
+が設定され、
+不正浮動小数点例外
.RB ( FE_INVALID )
-¤¬È¯À¸¤¹¤ë¡£
-Î㤨¤Ð¡¢
+が発生する。
+例えば、
.BR pow ()
-¤Ç¤Ï¡¢
+では、
.I y
-¤ÎÀäÂÐÃͤ¬Ìó 9.223373e18 ¤è¤êÂ礤¤¾ì¹ç¤Ë¤³¤Î¾õ¶·¤È¤Ê¤ë¡£
+の絶対値が約 9.223373e18 より大きい場合にこの状況となる。
.\" see bug http://sources.redhat.com/bugzilla/show_bug.cgi?id=3866
.\" and http://sources.redhat.com/bugzilla/show_bug.cgi?id=369
-glibc ¥Ð¡¼¥¸¥ç¥ó 2.3.2 °ÊÁ°¤Ç¤Ï¡¢
+glibc バージョン 2.3.2 以前では、
.\" FIXME . Actually, 2.3.2 is the earliest test result I have; so yet
.\" to confirm if this error occurs only in 2.3.2.
-¥¢¥ó¥À¡¼¥Õ¥í¡¼¤ä¥¢¥ó¥À¡¼¥Õ¥í¡¼¤Î¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¾ì¹ç¡¢
-glibc ¤Î
+アンダーフローやアンダーフローのエラーが発生する場合、
+glibc の
.BR pow ()
-¤Ï¡¢¥ª¡¼¥Ð¡¼¥Õ¥í¡¼Îã³°¤ä¥¢¥ó¥À¡¼¥Õ¥í¡¼Îã³°¤ò¾å¤²¤ë¤À¤±¤Ç¤Ê¤¯¡¢
-ÉÔÀµÉâÆ°¾®¿ôÅÀÎã³°
+は、オーバーフロー例外やアンダーフロー例外を上げるだけでなく、
+不正浮動小数点例外
.RB ( FE_INVALID )
-¤ò´Ö°ã¤Ã¤ÆȯÀ¸¤¹¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
+を間違って発生する。
+.SH 関連項目
.BR cbrt (3),
.BR cpow (3),
.BR sqrt (3)