Mar*_*tin 10 c c++ floating-point ieee-754
我总是假设以下测试将始终成功获得有限值(无INF,无NAN)somefloat
:
assert(somefloat*0.0==0.0);
Run Code Online (Sandbox Code Playgroud)
在Multiply by 0优化中,它表明double a=0.0
并且double a=-0.0
严格来说并不是相同的事情.
所以我想知道这是否会导致某些平台出现问题,例如上述测试的结果是否取决于a
正面还是负面.
如果您的实现使用IEEE 754算法(大多数情况下),那么正负零将比较相等.由于表达式的左侧只能是有限的正零或负零a
,因此断言将始终为真.
如果它使用其他类型的算法,那么只有实现者,并希望特定于实现的文档,可以告诉你.可以说(参见评论)标准的措辞可以暗示它们必须在任何情况下都是平等的,当然也没有理智的实施.
归档时间: |
|
查看次数: |
580 次 |
最近记录: |