名前空間
変種
操作

pow, powf, powl

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
pow
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <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以降)
1-3) baseexponent 乗した値を計算します。
4) 型汎用マクロ: いずれかの引数が long double 型の場合、powl が呼び出されます。それ以外の場合で、いずれかの引数が整数型または double 型の場合、pow が呼び出されます。それ以外の場合、powf が呼び出されます。少なくとも1つの引数が複素数または虚数である場合、マクロは対応する複素数関数(cpowfcpowcpowl)を呼び出します。

目次

[edit] パラメータ

base - 浮動小数点値としての基数
指数 - 浮動小数点値としての指数

[edit] 戻り値

エラーが発生しない場合、baseexponent 乗した値(baseexponent
)を返します。

領域エラーが発生した場合、実装定義の値が返される (サポートされている場合はNaN)。

極限エラーまたはオーバーフローによる範囲エラーが発生した場合、±HUGE_VAL±HUGE_VALF、または ±HUGE_VALL を返します。

アンダーフローによる範囲エラーが発生した場合、正確な結果 (丸め後) が返される。

[edit] エラー処理

エラーは 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) は、exponentNaN の場合でも、あらゆる exponent に対して 1 を返します。
  • pow(base, ±0) は、baseNaN の場合でも、あらゆる base に対して 1 を返します。
  • pow(base, exponent) は、base が有限で負であり、かつ exponent が有限で非整数である場合、NaN を返し、FE_INVALID を発生させます。
  • 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 を返します。

[edit] 注釈

pow では負の数の平方根を得ることはできませんが、1 / 3exponent である一般的なケースには cbrt が提供されています。

[edit]

#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
 
int main(void)
{
    // typical usage
    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));
 
    // special values
    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));
 
    // error handling
    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

[edit] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.12.7.5 The pow functions
  • 7.27 Type-generic math <tgmath.h>
  • F.10.4.5 The pow functions (p: 524-525)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.12.7.4 The pow functions (p: 248-249)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.4.4 The pow functions (p: 524-525)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.12.7.4 The pow functions (p: 248-249)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.4.4 The pow functions (p: 524-525)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.12.7.4 The pow functions (p: 229)
  • 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
  • F.9.4.4 The pow functions (p: 461)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.5.5.1 The pow function

[edit] 関連項目

(C99)(C99)
平方根を計算する (x)
(関数) [編集]
(C99)(C99)(C99)
立方根を計算する (3x)
(関数) [編集]
(C99)(C99)(C99)
2つの与えられた数の平方の和の平方根を計算する (x2
+y2
)
(関数) [編集]
(C99)(C99)(C99)
複素冪関数を計算する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)