为什么1**Inf == 1
?
我认为它应该是NaN
,就像Inf-Inf
或Inf/Inf
一样。
如何在python中的浮点数上实现取幂?
exp(y*log(x))
会得到正确的结果:/
答案 0 :(得分:3)
你是对的,数学上the value of 1∞ is indeterminate。
然而,在这种情况下,Python并不完全遵循数学。 The document of math.pow
说:
'.sr-only'
将
math.pow(x, y)
提升为权力x
。特殊情况尽可能遵循C99标准的附录'F'。 特别是,y
和pow(1.0, x)
始终返回pow(x, 0.0)
,即使1.0
为零或NaN。
答案 1 :(得分:2)
浮点运算不是实数运算。通过实际分析得出的“正确”概念不一定适用于浮点数。
然而,在这种情况下,麻烦只是#define EMPTY
int main() { return 0 |EMPTY| 0; }
从根本上代表了两个相似但不同的功能:
pow
给出的双变量复函数仅限于实线。这些函数与正常值一致,但它们的边缘情况在零,无穷大和沿负实轴(传统上是第二个函数的分支切割)不同。
有时将这两个函数分开以使边缘情况更合理;完成后,第一个函数称为pow(x,y) = exp(y * log(x))
,第二个函数称为pown
;正如您所注意到的powr
是两个函数的混合,并使用来自pow
的这些值的边缘情况。
答案 2 :(得分:1)
技术上,1 ^ inf被定义为极限(1 ^ x,x-> inf)。对于任何x> 1,1 ^ x = 1,因此它应该是限制(1,x-> inf)= 1,而不是NaN