Swift中Float.addProduct的目的是什么?

时间:2018-01-28 17:31:54

标签: swift math floating-point

Swift中Float.addProduct的目的是什么?运算符Float + FloatFloat * Float是否实际使用此作为基本函数实现,如

let zero:Float = 0
func + (a:inout Float, b:Float) {
    a.addProduct(1,b)
}
func * (a:inout Float, b:Float) {
    0.addProduct(a,b)
}

使用+调用的相同处理器指令实际实现了*addProduct吗?

1 个答案:

答案 0 :(得分:3)

Float.addProduct执行称为" Fused Multiply和Add"或FMA的操作。这会计算a*b + c。但重要的是,它不会将a*b的结果舍入到可表示的浮点数。因此,正确使用时,FMA可以比直接计算a*b+c导致明显更低的错误。当你需要的时候,你就会知道它。

不,通常不会通过此函数执行的操作实现常规加法和乘法;常规加法和乘法已经可用,并且在某些平台上FMA可能明显慢于常规乘法和加法。