Udostępnij za pośrednictwem


fma, , fmaffmal

Mnoży dwie wartości razem, dodaje trzecią wartość, a następnie zaokrągla wynik, jednocześnie tracąc tylko niewielką dokładność ze względu na zaokrąglanie pośrednie.

Składnia

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
Pierwsza wartość do pomnożenia.

y
Druga wartość do pomnożenia.

z
Wartość do dodania.

Wartość zwracana

Zwraca około (x * y) + z. Wartość zwracana jest następnie zaokrąglona przy użyciu bieżącego formatu zaokrąglania, chociaż w wielu przypadkach zwraca niepoprawnie zaokrąglone wyniki, a tym samym wartość może być niewykonany przez maksymalnie połowę jednostki z poprawnej wartości.

W przeciwnym razie może zwrócić jedną z następujących wartości:

Problem Powrót
x = NIESKOŃCZONOŚĆ, y = 0 lub

x = 0, y = NIESKOŃCZONOŚĆ
NaN
x lub y = dokładna ± NIESKOŃCZONOŚĆ, z = NIESKOŃCZONOŚĆ z przeciwległym znakiem NaN
x or y = NaN NaN
not (x = 0, y= nieokreślony) i z = NaN

not (x=nieokreślony, y=0) i z = NaN
NaN
Błąd zakresu przepełnienia HUGE_VAL±, ±HUGE_VALF lub ±HUGE_VALL
Błąd zakresu podpełnienia poprawna wartość po zaokrągleniu.

Błędy są zgłaszane zgodnie z określonymi w pliku _matherr.

Uwagi

Ponieważ język C++ umożliwia przeciążenie, można wywołać przeciążenia tych operacji fma , które przyjmują i zwracają float i long double typy. W programie języka C, chyba że używasz makra <tgmath.h> do wywołania tej funkcji, fma zawsze przyjmuje i zwraca wartość double.

Jeśli używasz makra <tgmath.h>fma() , typ argumentu określa, która wersja funkcji jest zaznaczona. Aby uzyskać szczegółowe informacje, zobacz Typy ogólne matematyczne .

Ta funkcja oblicza wartość tak, jakby została pobrana do nieskończonej precyzji, a następnie zaokrągla wynik końcowy.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Function Nagłówek języka C Nagłówek języka C++
fma, , fmaffmal <math.h> <cmath>
fma Makro <tgmath.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Zobacz też

Odwołanie do funkcji alfabetycznej
remainder, , remainderfremainderl
remquo, , remquofremquol