fma
, , fmaf
, fmal
Multiplica dos valores juntos, agrega un tercer valor y, a continuación, redondea el resultado, mientras que solo pierde una pequeña cantidad de precisión debido al redondeo intermedio.
Sintaxis
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
Primer valor que se va a multiplicar.
y
Segundo valor que se va a multiplicar.
z
El valor que se va a agregar.
Valor devuelto
Devuelve aproximadamente (x * y) + z
. A continuación, el valor devuelto se redondea mediante el formato de redondeo actual, aunque en muchos casos devuelve resultados redondeados incorrectamente y, por tanto, el valor puede ser inexacto hasta la mitad de un ulp del valor correcto.
De lo contrario, es posible que devuelva uno de los siguientes valores:
Problema | Return |
---|---|
x = INFINITY, y = 0 ox = 0, y = INFINITY |
NaN |
x o y = exacto ± INFINITY, z = INFINITY con el signo opuesto |
NaN |
x o y = NaN |
NaN |
no (x = 0, y = indefinido) y z = NaNno ( x = indefinido, y =0) y z = NaN |
NaN |
Error de intervalo de desbordamiento | HUGE_VAL ±, ±HUGE_VALF o ±HUGE_VALL |
Error de intervalo de subdesbordamiento | valor correcto después del redondeo. |
Los errores se notifican como se especifica en _matherr
.
Comentarios
Como C++ permite las sobrecargas, puede llamar a las sobrecargas de fma
que toman y devuelven los tipos float
y long double
. En un programa de C, a menos que use la macro de <tgmath.h> para llamar a esta función, fma
siempre toma y devuelve un double
.
Si usa la macro <tgmath.h>fma()
, el tipo del argumento determina qué versión de la función se selecciona. Consulte Matemáticas de tipo genérico para obtener más información.
Esta función calcula el valor como si fuera de precisión infinita y luego redondea el resultado final.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Función | Encabezado C | Encabezado C++ |
---|---|---|
fma , , fmaf , fmal |
<math.h> | <cmath> |
fma Macro |
<tgmath.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Consulte también
referencia de función alfabética
remainder
, , remainderf
, remainderl
remquo
, , remquof
, remquol