考虑1.1754944E-38f - 1.1754945E-38f
(两者都是正常的)。
如果HAS_SUBNORM is 1
,那么答案是-1E-45f
(次正常的)并且不会引发异常。
如果HAS_SUBNORM is 0
,那么答案是-0.0f
(次正常-1E-45f
被刷新为零)。问题:应Underflow and Inexact
提高?
IEEE 754-2008, 7.5 下溢:
当检测到微小的非零结果时,应发出下溢异常信号。
检测到微小:
- 四舍五入后,或
- 舍入前。
但是,应在哪一步执行 FTZ(清零)逻辑:
- 在微小检测之前,或
- 细小检测后?
问题的原因:某些硬件不支持次正规数,但在上面的示例中确实增加了。 Underflow and Inexact
这意味着此类硬件在微小检测后会执行 FTZ。我想知道这是否是正确的行为。