upd*_*liu 10 c c++ floating-point ieee-754
假设t,a,b都是双(IEEE标准754)变量,而这两个值a,b都没有NaN(但可能Inf).之后t = a - b,我一定有a == b + t吗?
R..*_*R.. 25
绝对不.一个明显的例子是a=DBL_MAX,b=-DBL_MAX.那么t=INFINITY,b+t也是如此INFINITY.
更令人惊讶的是,有些情况下会发生这种情况而没有任何溢出.基本上,它们a-b都是不精确的形式.例如,如果ais DBL_EPSILON/4和bis -1,a-b则为1(假设为默认舍入模式),a-b+b然后为0.
我提到第二个例子的原因是,这是在IEEE算法中强制舍入到特定精度的规范方法.例如,如果您有一个在[0,1)范围内的数字并且想强制将其四舍五入为4位精度,那么您将添加然后减去0x1p49.
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |