C11 (y más reciente):
7.12.13 Multiplicación-suma flotante
IEEE 754-2008:
suma de multiplicación fusionada, suma de multiplicación
fusedMultiplyAdd
fusionado multiplicar-sumar
¿Por qué C11 (y más reciente) usa "multiplicación-suma flotante" en lugar de "multiplicación-suma fusionada"?
¿De dónde viene este "flotar"?
Con un poco de trabajo de detective, podemos profundizar en la fuente raíz de la "multiplicación-suma flotante" de C11 e identificar una discrepancia que sugiere que este nombre es solo un descuido. El N1154 de WG14 ( Extensión para el lenguaje de programación C para admitir aritmética de coma flotante decimal ) de 2006 describe idiomáticamente la operación como una operación aritmética fusionada de multiplicación y suma :
9 Operaciones Aritméticas
[...]
9.2 Funciones
Las operaciones de coma flotante decimal raíz cuadrada, mín., máx., multiplicación fusionada, suma y resto, que se definen en IEEE 754R, se implementan como funciones de biblioteca .
Solo para reemplazar (posiblemente por error) fusionado flotando en la sinopsis de la biblioteca para los prototipos de funciones asociadas. Podría decirse que un descuido fácilmente pasado por alto en la revisión de la sinopsis de la biblioteca como f en los nombres fmad abreviados en los prototipos de funciones que contienen podría malinterpretarse fácilmente como "flotante" en lugar de su significado real "fusionado".
10 biblioteca
10.1 Matemáticas decimales <math.h>
La lista de funciones elementales especificadas en la biblioteca de matemáticas se amplía para manejar tipos de punto flotante decimal. Estas incluyen funciones especificadas en 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 y 7.12.13
[...]
Cambios sugeridos a C99:
Agregue la siguiente lista de prototipos de funciones a la sinopsis de las subcláusulas respectivas:
[...]
7.12.13 Multiplicación-suma flotante
_Decimal64 fmad64(_Decimal64 x, _Decimal64 y, _Decimal64 z); _Decimal32 fmad32(_Decimal32 x, _Decimal32 y, _Decimal32 z); _Decimal128 fmad128(_Decimal128 x, _Decimal128 y, _Decimal128 z);