Sdílet prostřednictvím


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 Vrácení
x = NEKONEČNO, y = 0 nebo

x = 0, y = NEKONEČNO
NaN
x nebo y = přesná ± NEKONEČNO, z = NEKONEČNO s opačným znaménkem NaN
x or y = NaN NaN
not (x = 0, y= neurčené) a z = NaN

not (x=neurčené, y=0) a z = NaN
NaN
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