微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浮点数:FLT_HAS_SUBNORM为0 =>出现异常值=>未指定行为?

如何解决浮点数:FLT_HAS_SUBNORM为0 =>出现异常值=>未指定行为?

如果@Embedded并且在执行FP操作(加,乘,除等)期间出现次标准值(或者如果将这些次标准值作为这些FP操作的输入给出),则FP引擎的实现(即HW实现[FPU],SW实现[SW FP库],HW-SW混合实现[使用HW指令并进行附加SW后处理的SW FP库])可以:

  • 检测此类次标准值并将其设置为零(即@Embedded策略/逻辑);
  • 不执行任何特殊操作(导致无法预测的输出结果值)。

问题:有人可以提供正确的论据(如果通过引用FLT_HAS_SUBnorM is 0 / flash-to-zero标准来更好地证明这种情况的行为确实属于C类? >

注意:ISO / IEC 9899:202x(E)工作草案-2020年2月5日N2479:

3.4.4 未指明的行为

行为,这是由于使用了未指定的值或本文档提供两种或两种以上可能性的其他行为所致,并且在任何情况下都不会对所选择的行为施加任何其他要求

解决方法

回复自己。

在这种情况下:

  1. 行为未明确
  2. 该行为由FP操作的实现定义。因此,行为是实现定义的
  3. 由于缺少用于检测和处理次正规数的逻辑(Itr为0),因此输出结果为不确定
  4. (额外)这种情况应被视为“用户错误”(并且违反了XXX_HAS_SUBNORM)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。