c语言 - 浮点数:FLT_HAS_SUBNORM 0 =>出现次正常值 =>未指定的行为?



如果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未指定行为

由于使用未指定的值而产生的行为,或本文件提供两种或两种以上可能性的其他行为,并且在任何情况下都不会对的选择提出进一步的要求

回复我自己。

在这种情况下:

  1. 行为是而不是未指定
  2. 行为由FP操作的实现来定义。因此,行为是实现定义的
  3. 由于不存在用于检测和处理次正规数的逻辑(XXX_HAS_SUBNORM为0(,则输出结果为不确定
  4. (额外(这种情况应被视为";用户错误";(以及违反XXX_HAS_SUBNORM is 0(

相关内容

  • 没有找到相关文章

最新更新