pow, powf, powl
|
ヘッダーで定義
<math.h>
|
||
|
float
powf
(
float
base,
float
exponent
)
;
|
(1) | (C99以降) |
|
double
pow
(
double
base,
double
exponent
)
;
|
(2) | |
|
long
double
powl
(
long
double
base,
long
double
exponent
)
;
|
(3) | (C99以降) |
|
ヘッダーで定義
<tgmath.h>
|
||
|
#define pow( base, exponent )
|
(4) | (C99以降) |
powl
が呼び出される。そうでない場合、いずれかの引数が整数型または型
double
を持つ場合、
pow
が呼び出される。それ以外の場合、
powf
が呼び出される。少なくとも1つの引数が複素数または虚数の場合、マクロは対応する複素数関数(
cpowf
、
cpow
、
cpowl
)を呼び出す。
目次 |
パラメータ
| base | - | 浮動小数点値としての基数 |
| exponent | - | 浮動小数点値としての指数 |
戻り値
エラーが発生しない場合、
base
の
exponent
乗(
base
exponent
)が返されます。
定義域エラーが発生した場合、実装定義の値が返されます(NaNがサポートされている場合はNaN)。
極エラーまたはオーバーフローによる範囲エラーが発生した場合、
±
HUGE_VAL
、
±HUGE_VALF
または
±HUGE_VALL
が返されます。
アンダーフローによる範囲エラーが発生した場合、正しい結果(丸め後)が返されます。
エラー処理
エラーは
math_errhandling
で指定された通りに報告されます。
base が有限かつ負の値であり、かつ exponent が有限かつ非整数の場合、定義域エラーが発生し、値域エラーが発生する可能性があります。
base がゼロかつ exponent がゼロの場合、定義域エラーが発生する可能性があります。
base がゼロで、 exponent が負の場合、定義域エラーまたは極エラーが発生する可能性があります。
IEEE浮動小数点演算(IEC 60559)を実装がサポートしている場合、
-
pow
(
+
0
, exponent
)
、ただし
exponent
が負の奇数の場合、
+∞を返し、 FE_DIVBYZERO を発生させる -
pow
(
-
0
, exponent
)
、ここで
exponent
が負の奇数の場合、
-∞を返し、 FE_DIVBYZERO を発生させる - pow ( ± 0 , exponent ) 、ただし exponent が負の有限値で、かつ偶数整数または非整数の場合、+∞を返し FE_DIVBYZERO を発生させる
- pow ( ± 0 , - ∞ ) +∞を返す および FE_DIVBYZERO を発生させる可能性がある (C23まで)
- pow ( + 0 , exponent ) 、ただし exponent が正の奇数の整数の場合、+0を返す
- pow ( - 0 , exponent ) 、ここで exponent が正の奇数の場合、-0を返します
- pow ( ± 0 , exponent ) 、ただし exponent が正の非整数または正の偶数の整数の場合、+0を返す
- pow ( - 1 , ±∞ ) は 1 を返します
-
pow
(
+
1
, exponent
)
は任意の
exponent
に対して
1
を返します。
exponent
が
NaNの場合でも同様です。 -
pow
(
base, ±
0
)
は、あらゆる
base
に対して
1
を返します。
base
が
NaNの場合でも同様です。 -
pow
(
base, exponent
)
は
NaNを返し、 FE_INVALID を発生させる。ただし、 base が有限値かつ負の値であり、かつ exponent が有限値かつ非整数の場合に限る。 -
pow
(
base,
-
∞
)
は、任意の
|base|<1に対して +∞ を返します -
pow
(
base,
-
∞
)
は、任意の
|base|>1に対して +0 を返します -
pow
(
base,
+
∞
)
は任意の
|base|<1に対して+0を返す -
pow
(
base,
+
∞
)
は任意の
|base|>1に対して+∞を返します - pow ( - ∞, exponent ) exponentが負の奇数の場合、-0を返す
-
pow
(
-
∞, exponent
)
exponentが負の非整数または負の偶数の場合、+0を返す - pow ( - ∞, exponent ) exponentが正の奇数の場合、-∞を返す
- pow ( - ∞, exponent ) は、 exponent が正の非整数または正の偶数の整数である場合に+∞を返します
- pow ( + ∞, exponent ) は、任意の負の exponent に対して +0 を返します
- pow ( + ∞, exponent ) は任意の正の exponent に対して +∞ を返します
- 上記で指定されている場合を除き、いずれかの引数がNaNの場合、NaNが返されます。
注記
負の数の根を得るために
pow
を使用することはできませんが、
cbrt
は
exponent
が
1
/
3
という一般的なケースに対して提供されています。
例
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // 典型的な使用例 printf("pow(2, 10) = %f\n", pow(2, 10)); printf("pow(2, 0.5) = %f\n", pow(2, 0.5)); printf("pow(-2, -3) = %f\n", pow(-2, -3)); // 特殊な値 printf("pow(-1, NAN) = %f\n", pow(-1, NAN)); printf("pow(+1, NAN) = %f\n", pow(+1, NAN)); printf("pow(INFINITY, 2) = %f\n", pow(INFINITY, 2)); printf("pow(INFINITY, -1) = %f\n", pow(INFINITY, -1)); // エラー処理 errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("pow(-1, 1/3) = %f\n", pow(-1, 1.0 / 3)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); feclearexcept(FE_ALL_EXCEPT); printf("pow(-0, -3) = %f\n", pow(-0.0, -3)); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
出力例:
pow(2, 10) = 1024.000000
pow(2, 0.5) = 1.414214
pow(-2, -3) = -0.125000
pow(-1, NAN) = nan
pow(+1, NAN) = 1.000000
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0.000000
pow(-1, 1/3) = -nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised
pow(-0, -3) = -inf
FE_DIVBYZERO raised
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.12.7.5 pow関数群
-
- 7.27 型総称数学 <tgmath.h>
-
- F.10.4.5 pow関数群 (p: 524-525)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.12.7.4 pow関数群 (p: 248-249)
-
- 7.25 総称数学 <tgmath.h> (p: 373-375)
-
- F.10.4.4 pow関数群 (p: 524-525)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.12.7.4 pow関数群 (p: 248-249)
-
- 7.25 総称型数学 <tgmath.h> (p: 373-375)
-
- F.10.4.4 pow関数群 (p: 524-525)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.12.7.4 pow関数群 (p: 229)
-
- 7.22 総称数学 <tgmath.h> (p: 335-337)
-
- F.9.4.4 pow関数群 (p: 461)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.5.5.1 pow関数
関連項目
|
(C99)
(C99)
|
平方根を計算する (
√
x
)
(関数) |
|
(C99)
(C99)
(C99)
|
立方根を計算する (
3
√
x
)
(関数) |
|
(C99)
(C99)
(C99)
|
与えられた2つの数の二乗和の平方根を計算する (
√
x
2
+y 2 ) (関数) |
|
(C99)
(C99)
(C99)
|
複素数の累乗関数を計算する
(関数) |
|
C++ documentation
for
pow
|
|