fma
, , fmaf
fmal
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 lubx = 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 = NaNnot ( 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 , , fmaf fmal |
<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
, , remainderf
remainderl
remquo
, , remquof
remquol