4

C11(和更新):

7.12.13 浮点乘加

IEEE 754-2008:

融合乘加, fusedMultiplyAdd

维基百科

融合乘加

为什么 C11(和更新版本)使用“浮动乘加”而不是“融合乘加”?

这个“浮动”从何而来?

4

1 回答 1

3

这很可能是技术报告中的一个错误,该报告将这些算术运算引入了语言

通过一些侦探工作,我们可能会深入挖掘 C11 的“浮动乘加”的根源,并确定一个差异,这在很大程度上暗示这个命名只是一个疏忽。WG14 的 N1154编程语言 C 的扩展以支持十进制浮点运算)从 2006 年开始惯用地将该操作描述为融合乘加算术运算:

9 算术运算

[...]

9.2 功能

在 IEEE 754R 中定义的十进制浮点运算平方根、最小值、最大值、融合乘加和余数被实现为函数。

只是为了替换(可以说是错误的)在相关函数原型的库概要中浮动融合可以说,在审查库概要时很容易遗漏一个疏忽,因为包含函数原型中的缩写名称很容易被误解为“浮动”,而不是其实际含义“融合”。ffmad

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);
于 2022-02-02T22:30:43.487 回答