为什么math.h的pow函数返回无穷大值?

时间:2016-05-17 07:03:06

标签: c++ pow math.h

我想计算x ^ y。

x是-0.726354,y是0.954。

所以,我使用pow功能。但是返回无限值。

如何计算x值为负值时。

请回答我。

感谢。

2 个答案:

答案 0 :(得分:5)

具有非整数指数的负数的幂通常是复数。 pow函数返回double,它是实数的近似值。因此,这不起作用。

如果您只对绝对值感兴趣,可以将其重写为:

x ^ y =( - x)^ y *( - 1)^ y

您可以使用pow计算左项,因为-x是正数。正确的术语的绝对值为1.

顺便说一下,pow函数不返回"无穷大"值,但是表示域错误的值。

答案 1 :(得分:3)

浮点参数的

pow可能实现为exp (y log x)(顺便说一句,这是非常聪明的log,特别是exp可以非常快速地进行评估在现代芯片组上)。显然,这对非正面x不起作用,因此也就是你的输出。

该标准指定pow仅为x xy的浮点for定义。 http://en.cppreference.com/w/cpp/numeric/math/pow是一个很好的参考。