gpt4 book ai didi

c - 为什么 pow(-infinity, positive non-integer) +infinity?

转载 作者:太空狗 更新时间:2023-10-29 16:35:52 29 4
gpt4 key购买 nike

C99 附件 F(IEEE 浮点支持)是这样说的:

pow(−∞, y) returns +∞ for y > 0 and not an odd integer.

但是,比方说,(−∞)0.5 实际上有虚数值 ±∞i,而不是 +∞。 C99 自己的 sqrt(−∞) 返回 NaN 并按预期生成域错误。为什么pow需要返回+∞?

(大多数其他语言直接使用 C 库,或者像本例中的 Python 一样,复制标准要求的行为,因此在实践中,这不仅仅影响 C99。)

最佳答案

对于奇数y,定义是有意义的

pow(±0, y) = ±0

毕竟,提升到奇数次方总是保留符号。如果我们可以保留零的符号,我们不妨这样做。对于正-整数y,我们应该定义

pow(±0, y) = +0.

符号未定义。但是对于 -0,我们没有将其设置为 NaN,原因与我们没有将 sqrt(-0) 设置为 NaN:它只是没有意义。 (FWIW,这也是 IEEE-754-2008 标准第 9.2.1 节中的定义方式。)

因为 1/±0 = ±∞,并且在数学上

pow(x,y) = 1/pow(1/x,y)

然后在上面设置x=±∞,导致:

pow(±∞,y) = 1/pow(±0,y) = 1/+0 = +∞

y 为非正整数。

关于c - 为什么 pow(-infinity, positive non-integer) +infinity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com