2016-05-17 62 views

回答

3

pow用于浮点参数可能是实现为exp (y log x)(这,顺便说一句,因为特别logexp非常聪明,可以非常快速地评估对现代芯片组)。很明显,这不适用于非积极的x,因此您的输出。

该标准规定如果xy是浮点,pow仅定义为正值xhttp://en.cppreference.com/w/cpp/numeric/math/pow是一个很好的参考。

+0

谢谢。我试图exp(y ln x)但失败了。因为ln(-0.7)返回表示域错误。根据pow(-1,±∞)所写的参考文献。 ±∞表示任何数字?即使小数? – user1320165

+0

你知道-0.726354提高到0.954并没有真正的解决方案吗? (而不是一个复数的家庭)? – Bathsheba

+0

我解决了它参考上面的答案。谢谢。 – user1320165

5

具有非整数指数的负数的幂通常是复数。 pow函数返回一个double,它近似于一个实数。因此这是行不通的。

如果你只在绝对值兴趣,你可以把它改写为:

X^Y =(-x)^ Y *(-1)^Ÿ

可以计算左因为-x是正数,所以使用pow。右边的项的绝对值为1.

顺便说一句,pow函数不会返回“无穷大”值,而是指示域错误的值。

+0

首先。感谢Corret对我。我会找到关于表示域错误。并且这个方程((-1)^ y)总是返回1吗? – user1320165

+0

@ user1320165:(-1)^ y的值不是1,而是绝对值为1的复数。在复平面中,这些是单位圆上的值。 –

+0

根据你的答案。 1是近似值。我明白。谢谢。 – user1320165