pow, powf, powl - 累乗関数
#include <math.h>
double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);
-lm でリンクする。
glibc
向けの機能検査マクロの要件
(
feature_test_macros(7) 参照):
powf(),
powl():
_BSD_SOURCE || _SVID_SOURCE ||
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or
cc -std=c99
pow() 関数は
x の
y
乗の値を返す。
返り値¶
成功すると、これらの関数は
x の
y
乗の値を返す。
x が 0 未満の有限値で
y
が整数でない有限値の場合、領域エラー
(domain error) が発生し、 NaN
が返される。
結果がオーバーフローする場合、
範囲エラー (range error)
が発生し、
各関数はそれぞれ
HUGE_VAL,
HUGE_VALF,
HUGE_VALL
を返す。返り値には数学的に正しい符号が付与される。
結果がアンダーフローし、その値が表現可能でない場合、
範囲エラーが発生し、
0.0 が返される。
以下で規定されていない場合で、
x か
y が NaN
の場合、返り値は NaN
となる。
x が +1 の場合、 (
y が NaN
であったとしても)
返り値は 1.0 となる。
y が 0 の場合、 (
x が NaN
であったとしても)
返り値は 1.0 となる。
x が +0 (-0) で
y が 0
より大きな奇数の場合、返り値は
+0 (-0) となる。
x が 0 で、
y が 0
より大きく奇数でない場合、返り値は
+0 となる。
x が -1 で、
y
が正の無限大か負の無限大の場合、返り値は
1.0 となる。
x の絶対値が 1
未満で、
y
が負の無限大の場合、返り値は正の無限大となる。
x 絶対値が 1
より大きく、
y
が負の無限大の場合、返り値は
+0 となる。
x の絶対値が 1
未満で、
y
が正の無限大の場合、返り値は
+0 となる。
x の絶対値が 1
より大きく、
y
が正の無限大の場合、返り値は正の無限大となる。
x が負の無限大で、
y が 0
より小さい奇数の場合、返り値は
-0 となる。
x が負の無限大で、
y が 0
より小さく奇数でない場合、返り値は
+0 となる。
x が負の無限大で、
y が 0
より大きい奇数の場合、返り値は負の無限大となる。
x が負の無限大で、
y が 0
より大きく奇数でない場合、返り値は正の無限大となる。
x が正の無限大で、
y が 0
未満の場合、返り値は
+0 となる。
x が正の無限大で、
y が 0
より大きい場合、返り値は正の無限大となる。
x が +0 か -0 で、
y が 0
より小さい奇数の場合、
極エラー (pole error)
が発生し、返り値は
HUGE_VAL,
HUGE_VALF,
HUGE_VALL
となる。
x
と同じ符号が付与される。
x が +0 か -0 で、
y が 0
より小さく奇数でない場合、
極エラーが発生し、
返り値は
+HUGE_VAL
,
+HUGE_VALF
, +HUGE_VALL となる。
エラー¶
これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は
math_error(7) を参照のこと。
以下のエラーが発生する可能性がある。
- 領域エラー: x
が負で、 y
が整数でない有限値
- errno に EDOM
が設定される。 不正
(invalid) 浮動小数点例外 (
FE_INVALID) が上がる。
- 極エラー: x
がゼロで、 y が負
- errno に ERANGE
が設定される
(「バグ」の節も参照)。
0 による除算 (divide-by-zero)
浮動小数点例外 (
FE_DIVBYZERO) が上がる。
- 範囲エラー:
結果がオーバーフロー
- errno に ERANGE
が設定される。
オーバーフロー浮動小数点例外
( FE_OVERFLOW) が上がる。
- 範囲エラー:
結果がアンダーフロー
- errno に ERANGE
が設定される。
アンダーフロー浮動小数点例外
( FE_UNDERFLOW) が上がる。
C99, POSIX.1-2001.
double 版の関数は SVr4,
4.3BSD, C89
にも準拠している。
glibc 2.9
とそれ以前のバージョンでは、
極エラーが発生した場合、POSIX
で要求されている
ERANGE
ではなく
EDOM が
errno
に設定される。
バージョン 2.10 以降の glibc
では、正しい動作をする。
x
が負の場合、大きな正負の値の
y
が与えられると、関数の結果が
NaN となり、
errno に
EDOM
が設定され、
不正浮動小数点例外 (
FE_INVALID) が発生する。
例えば、
pow() では、
y の絶対値が約 9.223373e18
より大きい場合にこの状況となる。
glibc バージョン 2.3.2
以前では、
アンダーフローやアンダーフローのエラーが発生する場合、
glibc の
pow()
は、オーバーフロー例外やアンダーフロー例外を上げるだけでなく、
不正浮動小数点例外 (
FE_INVALID)
を間違って発生する。
関連項目¶
cbrt(3),
cpow(3),
sqrt(3)
この文書について¶
この man ページは Linux
man-pages
プロジェクトのリリース
3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。