Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 later
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