名稱空間
變體
操作

pow, powf, powl

來自 cppreference.com
< c‎ | 數值‎ | 數學
 
 
 
常用數學函式
函式
基本操作
(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)
量子與量子指數
十進位制重新編碼函式
總序和載荷函式
分類
(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。如果至少一個引數是複數或虛數,則宏呼叫相應的複數函式(cpowfcpowcpowl)。

目錄

[編輯] 引數

base - 浮點值作為底數
exponent - 浮點值作為指數

[編輯] 返回值

如果沒有錯誤發生,返回 baseexponent 次冪(baseexponent
)。

如果發生域錯誤,則返回實現定義的值 (支援 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,即使 exponentNaN
  • pow(base, ±0) 對任何 base 返回 1,即使 baseNaN
  • 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 提供了一種常見情況,即 exponent1 / 3

[編輯] 示例

#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

[編輯] 參考資料

  • 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)
計算立方根 (3x)
(函式) [編輯]
(C99)(C99)(C99)
計算兩個給定數的平方和的平方根 (x2
+y2
)
(函式) [編輯]
(C99)(C99)(C99)
計算複數冪函式
(函式) [編輯]
C++ 文件 關於 pow