fma
, fmaf
, fmal
Multiplica dois valores, adiciona um terceiro valor e arredonda o resultado, perdendo apenas uma pequena quantidade de precisão devido ao arredondamento intermediário.
Sintaxe
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
Parâmetros
x
O primeiro valor a ser multiplicado.
y
O segundo valor a ser multiplicado.
z
O valor a ser adicionado.
Valor retornado
Retorna aproximadamente (x * y) + z
. O valor retornado é arredondado usando o formato de arredondamento atual, embora, em muitos casos, ele retorne resultados arredondados incorretamente e, portanto, o valor pode ser inexato em até meio ulp do valor correto.
Caso contrário, pode retornar um dos seguintes valores:
Problema | Return |
---|---|
x = INFINITY, y = 0 oux = 0, y = INFINITY |
NaN |
x ou y = exact ± INFINITY, z = INFINITY com o sinal oposto |
NaN |
x ou y = NaN |
NaN |
não (x = 0, y = indefinido) e z = NaNnão ( x =indefinido, y =0) e z = NaN |
NaN |
Erro de intervalo de estouro | ±HUGE_VAL , ±HUGE_VALF ou ±HUGE_VALL |
Erro de intervalo de estouro negativo | valor correto, após o arredondamento. |
Os erros são relatados conforme especificado em _matherr
.
Comentários
Como C++ permite sobrecargas, é possível chamar sobrecargas de fma
que usam e retornam tipos float
e long double
. Em um programa C, a menos que esteja usando a macro <tgmath.h> para chamar essa função, fma
sempre recebe e retorna um double
.
Se você usa a macro <tgmath.h>fma()
, o tipo do argumento determina qual versão da função será selecionada. Confira Matemática do tipo genérico para obter detalhes.
Esta função calcula o valor como se ele tivesse precisão infinita e arredonda o resultado final.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Função | Cabeçalho C | Cabeçalho C++ |
---|---|---|
fma , fmaf , fmal |
<math.h> | <cmath> |
Macro fma |
<tgmath.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Confira também
Referência alfabética de função
remainder
, remainderf
, remainderl
remquo
, remquof
, remquol