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 | Renvoie |
---|---|
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 un 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
Informations de référence sur les fonctions alphabétiques
remainder
, remainderf
, remainderl
remquo
, remquof
, remquol
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour