如果FLT_HAS_SUBNORM is 0
并且在执行FP运算(add、mul、div等(期间出现了一个亚正常值(或者如果将一个亚异常值作为这些FP运算的输入(,则FP引擎的实现(即HW实现[FPU]、SW实现[SW FP库]、混合HW-SW实现[SW FP-库使用HW指令,然后进行额外的SW后处理](可以:
- 检测这些亚正常值并将其设置为零(即
flash-to-zero
策略/逻辑( - 什么都不做[特殊](导致不可预测的输出结果值(
问题:有人能提供一个正确的论证(如果通过参考C
/IEEE 754
标准来加强,会更好(,让人相信本案的行为确实属于unspecified behavior
类吗?
注:ISO/IEC 9899:202x(E(工作草案——2020年2月5日N2479:
3.4.4未指定行为
由于使用未指定的值而产生的行为,或本文件提供两种或两种以上可能性的其他行为,并且在任何情况下都不会对的选择提出进一步的要求
回复我自己。
在这种情况下:
- 行为是而不是未指定
- 行为由FP操作的实现来定义。因此,行为是实现定义的
- 由于不存在用于检测和处理次正规数的逻辑(
XXX_HAS_SUBNORM
为0(,则输出结果为不确定 - (额外(这种情况应被视为";用户错误";(以及违反
XXX_HAS_SUBNORM is 0
(