Partilhar via


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 ou

x = 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 = NaN

nã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