POW - Linux手册页

时间:2019-08-20 18:01:00  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2020-06-09

名称

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():

_ISOC99_SOURCE || _POSIX_C_SOURCE>= 200112L || / *自glibc 2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本

说明

这些函数将x的值返回到y的幂。

返回值

成功执行后,这些函数会将x的值返回到y的幂。

如果x是小于0的有限值,并且y是有限的非整数,则发生域错误,并返回NaN。

如果结果溢出,则会发生范围错误,并且函数将分别返回带有数学正确符号的HUGE_VAL,HUGE_VALF或HUGE_VALL。

如果结果下溢,并且无法表示,则发生范围错误,并返回0.0。

除以下指定的内容外,如果x或y为NaN,则结果为NaN。

如果x为+1,则结果为1.0(即使y是NaN)。

如果y为0,则结果为1.0(即使x是NaN)。

如果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的奇数整数,则会发生极点错误,并返回HUGE_VAL,HUGE_VALF或HUGE_VALL,其符号与x相同。

如果x为+0或-0,并且y小于0且不是奇数整数,则发生极点错误,并返回+ HUGE_VAL,+ HUGE_VALF或+ HUGE_VALL。

错误说明

有关如何确定调用这些函数时是否发生错误的信息,请参见math_error(7)。

可能会发生以下错误:

Domain error: xis negative, and yis a finite noninteger
errno设置为EDOM。引发了无效的浮点异常(FE_INVALID)。
Pole error: xis zero, and yis negative
errno设置为ERANGE(但请参阅BUGS)。产生了除零浮点异常(FE_DIVBYZERO)。
Range error: the result overflows
errno设置为ERANGE。引发了一个溢出浮点异常(FE_OVERFLOW)。
Range error: the result underflows
errno设置为ERANGE。下溢浮点异常(FE_UNDERFLOW)被引发。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
pow(),powf(),powl()Thread safetyMT-Safe

遵循规范

C99,POSIX.1-2001,POSIX.1-2008。

返回double的变体还符合SVr4、4.3BSD,C89。

BUGS

Historical bugs (now fixed)

在glibc 2.28之前,在某些架构(例如x86-64)上,某些输入的pow()可能比附近的其他输入慢10,000倍。这仅影响pow(),而不影响powf()或powl()。此问题已在glibc 2.28中修复。

glibc 2.16版中修复了pow()的glibc实现中的许多错误。

在glibc 2.9和更早版本中,当发生极点错误时,errno设置为EDOM而不是POSIX要求的ERANGE。从2.10版开始,glibc做正确的事情。

在2.3.2版和更早版本中,当发生上溢或下溢错误时,glibc的pow()会生成一个虚假的无效浮点异常(FE_INVALID),除了上溢或下溢异常。

另外参见

cbrt(3),cpow(3),sqrt(3)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/