C 单精度浮点除法的最佳精度

C 单精度浮点除法的最佳精度,c,math,assembly,floating-point,verilog,C,Math,Assembly,Floating Point,Verilog,如果仅使用单精度加法/乘法硬件(无FMA),是否可以执行除法并获得IEEE-754单精度正确值 具体来说,如果在单精度硬件上执行用于执行浮点除法的牛顿-拉斐逊方法,是否有可能获得IEEE-754正确的结果 如果仅使用单精度加法/乘法硬件(无FMA),是否可以执行除法并获得IEEE-754单精度正确值 对 通过将数字表示为几个或四个单精度浮点的和,始终可以模拟更高的精度(请参见上的QD库)。正确四舍五入的单精度除法应该只需要两个单精度数字所带来的精度,这种表示法的必要操作只能通过单精度的加法、减法

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

具体来说,如果在单精度硬件上执行用于执行浮点除法的牛顿-拉斐逊方法,是否有可能获得IEEE-754正确的结果

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


通过将数字表示为几个或四个单精度浮点的和,始终可以模拟更高的精度(请参见上的QD库)。正确四舍五入的单精度除法应该只需要两个单精度数字所带来的精度,这种表示法的必要操作只能通过单精度的加法、减法和乘法来实现。

这是最简单的方法吗?此外,您是否知道迭代算法的哪些阶段是必要的(例如,所有阶段,或仅最后一次乘以倒数和比例红利的近似值)?当实际除法结果是两个浮点之间中点的2^-20 ULP时,正确舍入除法意味着计算精度为ULP的2^-20的近似值,不管是这样还是那样。这是没有办法的。在所有表示更高精度的方法中,当只有单精度可用时,双精度可能是最简单的一种,是的。只有算法的最后一个阶段需要额外的精度。因此,基本上,当您执行算法的最终加法时,您不会舍入到单精度,而是保留额外的位,将结果存储为双精度值(使用两个单精度值),然后执行最终乘法(单精度红利乘以双精度倒数)@starbox单精度红利乘以双精度倒数应该总是产生正确的四舍五入结果。这类似于这个问题:@PascalCuoq:你能修复你的“四”链接而不是“tar.gz”下载链接吗!