Categories
跨服战场

C

编译器支持

语言

头文件

类型支持

程序工具

变参函数支持

错误处理

动态内存管理

字符串库

算法

数值

日期和时间工具

输入/输出支持

本地化支持

并发支持 (C11)

技术规范

符号索引

[编辑] 数值

常用数学函数

浮点环境 (C99)

伪随机数生成

复数运算 (C99)

类型通用数学 (C99)

位操作 (C23)

检查整数运算 (C23)

[编辑] 常用数学函数

函数

基本操作

abslabsllabsimaxabs(C99)(C99)

fabs

divldivlldivimaxdiv(C99)(C99)

fmod

remainder(C99)

remquo(C99)

fma(C99)

fdim(C99)

nannanfnanlnandN(C99)(C99)(C99)(C23)

最大值/最小值操作

fmax(C99)

fmin(C99)

fmaximum(C23)

fminimum(C23)

fmaximum_mag(C23)

fmaximum_num(C23)

fminimum_mag(C23)

fminimum_num(C23)

fmaximum_mag_num(C23)

fminimum_mag_num(C23)

指数函数

exp

exp10(C23)

exp2(C99)

expm1(C99)

exp10m1(C23)

exp2m1(C23)

log

log10

log2(C99)

log1plogp1(C99)(C23)

log10p1(C23)

log2p1(C23)

幂函数

sqrt

cbrt(C99)

rootn(C23)

rsqrt(C23)

hypot(C99)

compound(C23)

pow

pown(C23)

powr(C23)

三角函数和双曲函数

sin

cos

tan

asin

acos

atan

atan2

sinpi(C23)

cospi(C23)

tanpi(C23)

asinpi(C23)

acospi(C23)

atanpi(C23)

atan2pi(C23)

sinh

cosh

tanh

asinh(C99)

acosh(C99)

atanh(C99)

最近整数浮点数

ceil

floor

roundlroundllround(C99)(C99)(C99)

roundeven(C23)

trunc(C99)

nearbyint(C99)

rintlrintllrint(C99)(C99)(C99)

fromfpfromfpxufromfpufromfpx(C23)(C23)(C23)(C23)

浮点数操作

ldexp

frexp

scalbnscalbln(C99)(C99)

ilogbllogb(C99)(C23)

logb(C99)

modf

nextafternexttoward(C99)(C99)

nextupnextdown(C23)(C23)

copysign(C99)

canonicalize(C23)

窄化操作

fadd(C23)

fsub(C23)

fmul(C23)

fdiv(C23)

ffma(C23)

fsqrt(C23)

量子与量子指数

quantizedN(C23)

quantumdN(C23)

samequantumdN(C23)

llquantexpdN(C23)

十进制重新编码函数

encodedecdN(C23)

decodedecdN(C23)

encodebindN(C23)

decodebindN(C23)

总序和载荷函数

totalorder(C23)

getpayload(C23)

setpayload(C23)

setpayloadsig(C23)

分类

fpclassify(C99)

iscanonical(C23)

isfinite(C99)

isinf(C99)

isnan(C99)

isnormal(C99)

signbit(C99)

issubnormal(C23)

iszero(C23)

isgreater(C99)

isgreaterequal(C99)

isless(C99)

islessequal(C99)

islessgreater(C99)

isunordered(C99)

issignaling(C23)

iseqsig(C23)

误差函数和伽马函数

erf(C99)

erfc(C99)

lgamma(C99)

tgamma(C99)

类型

div_tldiv_tlldiv_timaxdiv_t(C99)(C99)

float_tdouble_t(C99)(C99)

_Decimal32_t_Decimal64_t(C23)(C23)

宏常量

特殊浮点值

HUGE_VALHUGE_VALFHUGE_VALLHUGE_VALDN(C99)(C99)(C23)

INFINITYDEC_INFINITY(C99)(C23)

NANDEC_NAN(C99)(C23)

参数和返回值

FP_ILOGB0FP_ILOGBNAN(C99)(C99)

FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN(C99)(C99)(C99)(C99)(C99)

FP_LLOGB0FP_LLOGBNAN(C23)(C23)

FP_INT_UPWARDFP_INT_DOWNWARDFP_INT_TOWARDZEROFP_INT_TONEARESTFROMZEROFP_INT_TONEAREST(C23)(C23)(C23)(C23)(C23)

错误处理

MATH_ERRNOMATH_ERRNOEXCEPT(C99)(C99)

math_errhandling(C99)

快速操作指示符

FP_FAST_FMAFFP_FAST_FMA(C99)(C99)

FP_FAST_FADDFP_FAST_FADDLFP_FAST_DADDLFP_FAST_DMADDDN(C23)(C23)(C23)(C23)

FP_FAST_FMULFP_FAST_FMULLFP_FAST_DMULLFP_FAST_DMMULDN(C23)(C23)(C23)(C23)

FP_FAST_FFMAFP_FAST_FFMALFP_FAST_DFMALFP_FAST_DMFMADN(C23)(C23)(C23)(C23)

FP_FAST_FMALFP_FAST_FMADN(C99)(C23)

FP_FAST_FSUBFP_FAST_FSUBLFP_FAST_DSUBLFP_FAST_DMSUBDN(C23)(C23)(C23)(C23)

FP_FAST_FDIVFP_FAST_FDIVLFP_FAST_DDIVLFP_FAST_DMDIVDN(C23)(C23)(C23)(C23)

FP_FAST_FSQRTFP_FAST_FSQRTLFP_FAST_DSQRTLFP_FAST_DMSQRTDN(C23)(C23)(C23)(C23)

[编辑]

定义于头文件

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 起)

定义于头文件

#define pow( base, exponent )

(4)

(C99 起)

1-3) 计算 base 的 exponent 次幂。

4) 类型泛型宏:如果任何参数类型为 long double,则调用 powl。否则,如果任何参数具有整数类型或类型为 double,则调用 pow。否则,调用 powf。如果至少一个参数是复数或虚数,则宏调用相应的复数函数(cpowf、cpow、cpowl)。

目录

1 参数

2 返回值

3 错误处理

4 注意

5 示例

6 引用

7 参阅

[编辑] 参数

base

-

浮点值作为底数

exponent

-

浮点值作为指数

[编辑] 返回值

如果没有错误发生,返回 base 的 exponent 次幂(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,即使 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

#include

#include

#include

// #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 类型泛型数学

F.10.4.5 pow 函数 (p: 524-525)

C17 标准 (ISO/IEC 9899:2018)

7.12.7.4 pow 函数 (p: 248-249)

7.25 类型通用数学 (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 类型通用数学 (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 类型通用数学 (p: 335-337)

F.9.4.4 pow 函数 (p: 461)

C89/C90 标准 (ISO/IEC 9899:1990)

4.5.5.1 pow 函数

[编辑] 另请参阅

sqrtsqrtfsqrtl(C99)(C99)

计算平方根 (\(\small{\sqrt{x} }\)√x) (函数) [编辑]

cbrtcbrtfcbrtl(C99)(C99)(C99)

计算立方根 (\(\small{\sqrt[3]{x} }\)3√x) (函数) [编辑]

hypothypotfhypotl(C99)(C99)(C99)

计算两个给定数的平方和的平方根 (\(\scriptsize{\sqrt{x^2+y^2} }\)√x2+y2) (函数) [编辑]

cpowcpowfcpowl(C99)(C99)(C99)

计算复数幂函数 (函数) [编辑]

C++ 文档 关于 pow