【问题标题】:Best possible accuracy for single precision floating point division单精度浮点除法的最佳精度
【发布时间】:2014-07-18 14:06:22
【问题描述】:

如果仅使用单精度加/减和乘法硬件(无 FMA),是否可以执行除法并获得 IEEE-754 单精度正确值?

具体来说,如果在单精度硬件上进行浮点除法的Newton-Raphson方法,是否有可能达到IEEE-754正确的结果?

【问题讨论】:

    标签: c math assembly floating-point verilog


    【解决方案1】:

    如果仅使用单精度加/减和乘法硬件(无 FMA),是否可以执行除法并获得 IEEE-754 单精度正确值?

    是的。

    总是可以通过将数字表示为几个单精度浮点数的总和来模拟更高的精度,twothree 或四个(请参阅this page 上的 QD 库)。对于正确舍入的单精度除法,您应该只需要两个单精度数带来的精度,并且这种表示的必要运算可以通过单精度加减乘法来实现。

    【讨论】:

    • 这是最简单的方法吗?另外,您是否知道迭代算法的哪些阶段是必要的(例如,所有阶段,或者只是最后一个乘以倒数和比例除数的近似值)?
    • 当实际除法结果是从两个浮点数之间的中点算起 2^-20 ULP 时,正确舍入除法意味着以一种或另一种方式计算精度为 2^-20 的 ULP 的近似值.没有其他办法了。在只有单精度可用时表示更高精度的所有方法中,双单可能是最简单的一种,是的。只有算法的最后阶段才需要额外的精度。
    • 所以基本上当你执行算法的最终添加时,你不会四舍五入到单精度,你会保留额外的位,将结果存储为双精度值(使用两个单精度值),然后进行最后的乘法(单精度被除数乘以双精度倒数)?
    • @starbox 单精度除数乘以双精度倒数应该总是产生正确的舍入结果。这类似于这个问题:stackoverflow.com/questions/19589973/…
    • @PascalCuoq:请您修复您的“四个”链接以链接到该站点而不是“tar.gz”下载!
    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2021-10-06
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多