Floating point 最小浮点数X s.t.1/X不是无穷大
根据IEEE 754,最小的单精度和双精度浮点是什么,使得其倒数仍然不等于无穷大Floating point 最小浮点数X s.t.1/X不是无穷大,floating-point,ieee-754,Floating Point,Ieee 754,根据IEEE 754,最小的单精度和双精度浮点是什么,使得其倒数仍然不等于无穷大 编辑:我之所以问这个问题,是因为我只想了解它是如何工作的让我们以IEEE 754双精度为例。我们假设它在我们的C编译平台中被映射到double。这很方便,所以我们将充分利用它。我们还假设long double比double至少有一个额外的精度位,例如,long double是Intel的80位“扩展双精度” double操作1.0/x循环到+inf当且仅当除法的数学结果高于数字1.fffffffffff8p1023
编辑:我之所以问这个问题,是因为我只想了解它是如何工作的让我们以IEEE 754双精度为例。我们假设它在我们的C编译平台中被映射到
double
。这很方便,所以我们将充分利用它。我们还假设long double
比double
至少有一个额外的精度位,例如,long double
是Intel的80位“扩展双精度”
double
操作1.0/x
循环到+inf
当且仅当除法的数学结果高于数字1.fffffffffff8p1023l
。此数字不能表示为double
,但它正好是DBL_MAX
和下一个之间的中点>如果
double指数具有更大的范围,则DBL_MAX后的double值。IEEE 754就是这样定义诸如/之类的基本运算是否应舍入到无穷大
因此,可通过以下步骤计算往复时四舍五入到+inf
的最高值double
值:
- 将舍入模式设置为向下<代码>FE_
- 计算
1.0L/1.fffffffffffff8p1023L
- (仍处于向下四舍五入模式)将结果四舍五入到
double
nextafter
计算,例如
将这四个步骤转换为C应该很简单(不要忘记在上访问pragma STDC FENV_)。或者,正如Thomas Weller所建议的那样,强制执行。通过二分法进行搜索只需要不到64个步骤
注:通过使用
FE_up
舍入模式和三个步骤,可以计算到有限结果的最小值,但这取决于附加属性1.0L/1.fffffffffffffff8p1023l
不能是精确的操作。四步方法在概念上更清晰。Brute force it.T这个问题是关于C浮点的理论问题