fma
, , fmaf
fmal
Vynásobí dvě hodnoty dohromady, přičte třetí hodnotu a výsledek se zaokrouhlí, zatímco z důvodu zprostředkujícího zaokrouhlení se ztratí jen malá přesnost.
Syntaxe
double fma(
double x,
double y,
double z
);
float fma(
float x,
float y,
float z
); //C++ only
long double fma(
long double x,
long double y,
long double z
); //C++ only
float fmaf(
float x,
float y,
float z
);
long double fmal(
long double x,
long double y,
long double z
);
#define fma(X, Y, Z) // Requires C11 or higher
Parametry
x
První hodnota, která se má násobit.
y
Druhá hodnota, která se má násobit.
z
Hodnota, kterou chcete přidat.
Vrácená hodnota
Vrátí přibližně (x * y) + z
. Vrácená hodnota se pak zaokrouhlí pomocí aktuálního formátu zaokrouhlování, i když v mnoha případech vrátí nesprávně zaokrouhlené výsledky, a proto může být hodnota neaktuální až o polovinu lpu ze správné hodnoty.
V opačném případě může vrátit jednu z následujících hodnot:
Problém | Zpět |
---|---|
x = NEKONEČNO, y = 0 nebox = 0, y = NEKONEČNO |
Není číslo |
x nebo y = přesná ± NEKONEČNO, z = NEKONEČNO s opačným znaménkem |
Není číslo |
x or y = NaN |
Není číslo |
not (x = 0, y = neurčené) a z = NaNnot ( x =neurčené, y =0) a z = NaN |
Není číslo |
Chyba rozsahu přetečení | HUGE_VAL ±, ±HUGE_VALF nebo ±HUGE_VALL |
Chyba oblasti podtečení | správná hodnota po zaokrouhlení. |
Chyby jsou hlášeny, jak je uvedeno v _matherr
.
Poznámky
Vzhledem k tomu, že jazyk C++ umožňuje přetížení, můžete volat přetížení fma
, která přebírají a vracejí float
a long double
typy. Pokud v programu jazyka C nepoužíváte <makro tgmath.h> k volání této funkce, fma
vždy přebírá a vrací hodnotu double
.
Pokud použijete <makro tgmath.h>fma()
, typ argumentu určuje, která verze funkce je vybrána. Podrobnosti najdete v tématu Matematika pro obecné typy.
Tato funkce vypočítá hodnotu, jako kdyby byla převezměna do nekonečné přesnosti, a pak zaokrouhlí konečný výsledek.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Function | Záhlaví jazyka C | Hlavička jazyka C++ |
---|---|---|
fma , , fmaf fmal |
<math.h> | <cmath> |
fma makro |
<tgmath.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Abecední odkaz na funkci
remainder
, , remainderf
remainderl
remquo
, , remquof
remquol