std::numeric_limits::infinity() 的倒数是否为零?
Is the inverse of std::numeric_limits::infinity() zero?
C++ 标准(或 IEEE 754 浮点标准)中是否有任何内容可以保证 1./std::numeric_limits<double>::infinity()
为零(或至少是一个小数)?
在 IEEE 754 下,任何有限数除以无穷大的结果为零(因此在大多数典型的 C++ 实现中也是如此)。
如果分子和分母的符号不同,则结果为负零,即等于零。
是的,根据 GNU C 库参考手册(假设 IEEE 754):
Infinities propagate through calculations
as one would expect: for example, 2 + ∞ = ∞, 4/∞ =
0
https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
您可能需要检查您的 C++ 编译器是否使用 IEEE 754:
How to check if C++ compiler uses IEEE 754 floating point standard
if(std::numeric_limits<double>::is_iec559)
yes();
else
no();
(见 18.3.2.4)
IEC 559 与 IEEE 754 相同,保证是这种情况。但是,C++ 不以任何方式保证 IEC 559 已到位(尽管 99.99% 的时间恰好是这种情况,您仍然需要验证以确定) .
IEEE 754-2008 6.1 说:
The behavior of infinity in floating-point arithmetic is derived from the limiting cases of real arithmetic with operands of arbitrarily large magnitude, when such a limit exists. Infinities shall be interpreted in the affine sense, that is: −∞ < {every finite number} < +∞.
Operations on infinite operands are usually exact and therefore signal no exceptions,…
由于 1/x 的极限随着 x 无限制地增加而为零,该子句的结果是 1/∞为零。
6.3条告诉我们结果的符号是+:
When neither the inputs nor result are NaN, the sign of a product or quotient is the exclusive OR of the operands’ signs;…
C++ 标准(或 IEEE 754 浮点标准)中是否有任何内容可以保证 1./std::numeric_limits<double>::infinity()
为零(或至少是一个小数)?
在 IEEE 754 下,任何有限数除以无穷大的结果为零(因此在大多数典型的 C++ 实现中也是如此)。
如果分子和分母的符号不同,则结果为负零,即等于零。
是的,根据 GNU C 库参考手册(假设 IEEE 754):
Infinities propagate through calculations as one would expect: for example, 2 + ∞ = ∞, 4/∞ = 0
https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
您可能需要检查您的 C++ 编译器是否使用 IEEE 754:
How to check if C++ compiler uses IEEE 754 floating point standard
if(std::numeric_limits<double>::is_iec559)
yes();
else
no();
(见 18.3.2.4)
IEC 559 与 IEEE 754 相同,保证是这种情况。但是,C++ 不以任何方式保证 IEC 559 已到位(尽管 99.99% 的时间恰好是这种情况,您仍然需要验证以确定) .
IEEE 754-2008 6.1 说:
The behavior of infinity in floating-point arithmetic is derived from the limiting cases of real arithmetic with operands of arbitrarily large magnitude, when such a limit exists. Infinities shall be interpreted in the affine sense, that is: −∞ < {every finite number} < +∞.
Operations on infinite operands are usually exact and therefore signal no exceptions,…
由于 1/x 的极限随着 x 无限制地增加而为零,该子句的结果是 1/∞为零。
6.3条告诉我们结果的符号是+:
When neither the inputs nor result are NaN, the sign of a product or quotient is the exclusive OR of the operands’ signs;…