Funcția fma () ia trei argumente x, y și z și returnează x * y + z fără a pierde precizia
Această funcție este definită în fișierul antet.
prototip fma () (începând cu standardul C ++ 11)
dublu fma (dublu x, dublu y, dublu z); float fma (float x, float y, float z); lung dublu fma (lung dublu x, lung dublu y, lung dublu z); FMA promovat (Type1 x, Type2 y, Type z); // Pentru combinații de tipuri aritmetice
Din moment ce C ++ 11, dacă vreun argument trecut la fma () este long double
, tipul de returnare Promovat este long double
. Dacă nu, tipul de returnare Promovat este double
.
(Matematică) x * y + z = fma (x, y, z) (Programare C ++)
fma () Parametri
Fma () ia trei argumente.
- x - Primul argument care trebuie înmulțit.
- y - Al doilea argument care trebuie înmulțit cu x.
- z - Al treilea argument care trebuie adăugat produsului lui x și y.
fma () Valoare returnată
Funcția fma () revine x*y+z
ca și cum ar fi calculată la o precizie infinită și rotunjită o dată pentru a se potrivi tipului de rezultat.
Exemplu: Cum funcționează fma ()?
#include using namespace std; int main() ( double x = 2.0, y = 3.1, z = 3.0, result; result = fma(x, y, z); cout << "fma(x, y, z) = " << result << endl; long double xLD = 3.4, resultLD; resultLD = fma(xLD, y, z); cout << "fma(xLD, y, z) = " << resultLD << endl; return 0; )
Când rulați programul, ieșirea va fi:
fma (x, y, z) = 9,2 fma (xLD, y, z) = 13,54