fma
, , fmaf
fmal
Multiplie deux valeurs ensemble, ajoute une troisième valeur, puis arrondit le résultat, tout en ne perdant qu’une petite quantité de précision en raison de l’arrondi intermédiaire.
Syntaxe
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
Paramètres
x
Première valeur à multiplier.
y
Seconde valeur à multiplier.
z
Valeur à ajouter.
Valeur retournée
Retourne approximativement (x * y) + z
. La valeur de retour est ensuite arrondie à l’aide du format d’arrondi actuel, bien que dans de nombreux cas, elle retourne des résultats arrondis de manière incorrecte et, par conséquent, la valeur peut être inexacte jusqu’à la moitié d’ulp de la valeur correcte.
Sinon, peut retourner l’une des valeurs suivantes :
Problème | Retour |
---|---|
x = INFINITY, y = 0 oux = 0, y = INFINITY |
NaN |
x or y = exact ± INFINITY, z = INFINITY avec le signe opposé |
NaN |
x ou y = NaN |
NaN |
Pas (x = 0, y = indéfini) et z = NaNPas ( x = indéfini, y = 0) et z = NaN |
NaN |
Erreur de plage avec dépassement | HUGE_VAL ±, ±HUGE_VALF ou ±HUGE_VALL |
Erreur de plage avec soupassement | valeur correcte, après arrondi. |
Les erreurs sont signalées comme spécifié dans _matherr
.
Notes
C++ autorisant la surcharge, vous pouvez appeler des surcharges de fma
qui acceptent et retournent des types float
et long double
. Dans un programme C, sauf si vous utilisez la macro <tgmath.h> pour appeler cette fonction, fma
prend toujours et retourne double
.
Si vous utilisez la macro <tgmath.h>fma()
, le type de l’argument détermine la version de la fonction sélectionnée. Pour plus d’informations, consultez les mathématiques génériques de type.
Cette fonction calcule la valeur avec une précision infinie, puis arrondit le résultat final.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Fonction | En-tête C | En-tête C++ |
---|---|---|
fma , , fmaf fmal |
<math.h> | <cmath> |
Macro fma |
<tgmath.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Référence de fonction alphabétique
remainder
, , remainderf
remainderl
remquo
, , remquof
remquol