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

浮点运算中的齐平零行为

尽管如此,据我所知,IEEE 754并没有提到以零对齐的方式更快地处理 denormalized numbers,但一些架构提供了这种模式(例如 http://docs.sun.com/source/806-3568/ncg_lib.html).

在本技术文档的特定情况下,非正规化数字的标准处理是认值,必须明确激活flush-to-zero.在认模式下,软件中也处理非规范化数字,这是较慢的.

我在嵌入式C的静态分析器上工作,它试图预测运行时可能发生的值的正确(如果有时不精确)的范围.它旨在是正确的,因为它旨在可用于排除运行时出现问题的可能性(例如关键的嵌入式代码).这需要在分析期间捕获所有可能的行为,因此在浮点计算期间产生所有可能的值.

在这方面,我的问题有两方面:

>在嵌入式架构中,是否只提供齐平零的架构?他们可能不必将自己的广告宣传为“IEEE 754”,但可以提供足够接近的IEEE 754风格的浮点运算.
>对于在嵌入式环境中提供两者的体系结构,可能不会被系统激活,以使反应时间更可预测(这些嵌入式系统的常见约束)?

在我用于浮点值的间隔算术中处理flush-to-zero是简单的,如果我知道我必须这样做,我的问题是否更多是否我必须这样做.

解决方法

对这两个问题都是有一些平台只支持flush-to-zero,而且有许多平台是flush-to-zero是认的.

您还应该注意到,许多嵌入式和dsp平台都使用“Denormals Are Zero”模式,这是浮点语义的另一个皱纹.

编辑FTZ与DAZ的进一步说明:

在FTZ中,当一个操作在通常的算术下产生一个异常结果时,返回零.请注意,一些实现总是刷新到正零,而其他实现可能会刷新到正零或负零.最好不要依赖于任何行为.

在DAZ中,当一个操作的输入是一个非正常的时候,一个零代替它的位置.再一次,没有一个通用的保证将被替换为零.

支持这些模式的一些实现允许它们独立设置(并且一些仅支持两者之一),所以可能需要独立地和一起模拟任一模式.

还要注意,一些实现将这两种模式组合成“冲洗到零”.例如,ARM VFP“flush to zero”模式是FTZ和DAZ.

原文地址:https://www.jb51.cc/c/112832.html

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

相关推荐