C11(和更新):
7.12.13 浮点乘加
IEEE 754-2008:
融合乘加,
fusedMultiplyAdd
维基百科:
融合乘加
为什么 C11(和更新版本)使用“浮动乘加”而不是“融合乘加”?
这个“浮动”从何而来?
C11(和更新):
7.12.13 浮点乘加
IEEE 754-2008:
融合乘加,
fusedMultiplyAdd
维基百科:
融合乘加
为什么 C11(和更新版本)使用“浮动乘加”而不是“融合乘加”?
这个“浮动”从何而来?
通过一些侦探工作,我们可能会深入挖掘 C11 的“浮动乘加”的根源,并确定一个差异,这在很大程度上暗示这个命名只是一个疏忽。WG14 的 N1154(编程语言 C 的扩展以支持十进制浮点运算)从 2006 年开始惯用地将该操作描述为融合乘加算术运算:
9 算术运算
[...]
9.2 功能
在 IEEE 754R 中定义的十进制浮点运算平方根、最小值、最大值、融合乘加和余数被实现为库函数。
只是为了替换(可以说是错误的)在相关函数原型的库概要中浮动融合。可以说,在审查库概要时很容易遗漏一个疏忽,因为包含函数原型中的缩写名称很容易被误解为“浮动”,而不是其实际含义“融合”。f
fmad
10 图书馆
10.1 十进制数学 <math.h>
数学库中指定的基本函数列表已扩展为处理十进制浮点类型。其中包括 7.12.4、7.12.5、7.12.6、7.12.7、7.12.8、7.12.9、7.12.10、7.12.11、7.12.12 和 7.12.13 中指定的功能
[...]
对 C99 的建议更改:
将以下函数原型列表添加到相应子条款的概要中:
[...]
7.12.13 浮点乘加
_Decimal64 fmad64(_Decimal64 x, _Decimal64 y, _Decimal64 z); _Decimal32 fmad32(_Decimal32 x, _Decimal32 y, _Decimal32 z); _Decimal128 fmad128(_Decimal128 x, _Decimal128 y, _Decimal128 z);