Accès rapide :
Types et gestion des erreurs
Macros de classification et de comparaison
Fonctions trigonométriques et hyperboliques
Fonctions exponentielles et logarithmiques
Fonctions d'erreur et gamma
Fonctions de calculs d'arrondis et de conversions
Fonctions de calcul de restes
Fonctions de manipulation des représentations flottantes
Fonctions de minimum, maximum et différence
Fonctions de puissances et racines
Autres fonctions numériques
Fonctions ISO/IEC 60559 optionnelles
Fonctions POSIX/XSI
Types, macros et constantes symboliques
Cet entête C standard permet de définir les principales fonctions mathématiques usuelles, ainsi que plusieurs macros
utiles pour classifier les valeurs flottantes et contrôler certains comportements d'arrondi.
Il est à noter que, si vous compilez avec le compilateur GCC, l'option -lm sera nécessaire
pour linker correctement les fonctions de cette librairie.
Les fonctions sont présentées par familles. Pour rester lisible, seules les variantes double, float et
long double sont regroupées sur une même page. Les fonctions POSIX/XSI et les macros disposent de leurs propres entrées.
| Nom | Depuis | Description |
|---|---|---|
| double_t | C99 | Ce type réel flottant est au moins aussi large que double et au moins aussi large que float_t. |
| float_t | C99 | Ce type réel flottant est au moins aussi large que float. Il permet à l'implémentation d'utiliser le type le plus efficace pour les évaluations flottantes. |
| FP_FAST_FMA | C99 | Macro optionnelle indiquant que fma est généralement aussi rapide qu'une multiplication suivie d'une addition. |
| FP_FAST_FMAF | C99 | Macro optionnelle indiquant que fmaf est généralement aussi rapide qu'une multiplication suivie d'une addition. |
| FP_FAST_FMAL | C99 | Macro optionnelle indiquant que fmal est généralement aussi rapide qu'une multiplication suivie d'une addition. |
| FP_ILOGB0 | C99 | Valeur entière susceptible d'être renvoyée par ilogb quand son argument vaut zéro. |
| FP_ILOGBNAN | C99 | Valeur entière susceptible d'être renvoyée par ilogb quand son argument est NaN. |
| FP_INFINITE | C99 | Classification utilisée par fpclassify pour représenter une valeur infinie. |
| FP_INT_DOWNWARD | C23 | Direction d'arrondi vers -infini pour les fonctions fromfp et ufromfp. |
| FP_INT_TONEAREST | C23 | Direction d'arrondi vers l'entier le plus proche pour les fonctions fromfp et ufromfp. |
| FP_INT_TONEARESTFROMZERO | C23 | Direction d'arrondi vers l'entier le plus proche, les demi-valeurs étant éloignées de zéro. |
| FP_INT_TOWARDZERO | C23 | Direction d'arrondi vers zéro pour les fonctions fromfp et ufromfp. |
| FP_INT_UPWARD | C23 | Direction d'arrondi vers +infini pour les fonctions fromfp et ufromfp. |
| FP_NAN | C99 | Classification utilisée par fpclassify pour représenter une valeur NaN. |
| FP_NORMAL | C99 | Classification utilisée par fpclassify pour représenter une valeur flottante normale. |
| FP_SUBNORMAL | C99 | Classification utilisée par fpclassify pour représenter une valeur flottante subnormale. |
| FP_ZERO | C99 | Classification utilisée par fpclassify pour représenter une valeur nulle. |
| MATH_ERREXCEPT | C99 | Bit indiquant que les erreurs mathématiques peuvent être signalées via les exceptions flottantes. |
| math_errhandling | C99 | Expression indiquant le ou les mécanismes de signalement d'erreur pris en charge par la librairie mathématique. |
| MATH_ERRNO | C99 | Bit indiquant que les erreurs mathématiques peuvent être signalées via errno. |
| signgam | POSIX | Cette variable POSIX/XSI permet de récupérer le signe de la fonction gamma après un appel à lgamma. |
| Nom | Depuis | Description |
|---|---|---|
| fpclassify | C99 | Cette macro classe une valeur flottante parmi les catégories FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL et FP_ZERO. |
| iscanonical | C23 | Cette macro indique si la représentation flottante de son argument est canonique. |
| iseqsig | C23 | Cette macro C23 teste l'égalité en signalant les NaN comme une erreur de domaine. |
| isfinite | C99 | Cette macro indique si son argument est une valeur finie. |
| isgreater | C99 | Cette macro teste si x est strictement supérieur à y, sans lever l'exception invalid pour les NaN silencieux. |
| isgreaterequal | C99 | Cette macro teste si x est supérieur ou égal à y, sans lever l'exception invalid pour les NaN silencieux. |
| isinf | C99 | Cette macro indique si son argument est une valeur infinie. |
| isless | C99 | Cette macro teste si x est strictement inférieur à y, sans lever l'exception invalid pour les NaN silencieux. |
| islessequal | C99 | Cette macro teste si x est inférieur ou égal à y, sans lever l'exception invalid pour les NaN silencieux. |
| islessgreater | C99 | Cette macro teste si x et y sont ordonnés et différents. |
| isnan | C99 | Cette macro indique si son argument est une valeur NaN. |
| isnormal | C99 | Cette macro indique si son argument est une valeur normale. |
| issignaling | C23 | Cette macro indique si son argument est un NaN signalant. |
| issubnormal | C23 | Cette macro indique si son argument est une valeur subnormale. |
| isunordered | C99 | Cette macro teste si au moins un argument est NaN, ce qui rend la comparaison non ordonnée. |
| iszero | C23 | Cette macro indique si son argument est une valeur zéro, positive ou négative. |
| signbit | C99 | Cette macro indique si le bit de signe de son argument est négatif. |
| Nom | Depuis | Description |
|---|---|---|
| acos acosf acosl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer l'arc cosinus d'une valeur. |
| acosh acoshf acoshl |
C99 | Ces trois fonctions permettent de calculer l'arc cosinus hyperbolique d'une valeur. |
| acospi acospif acospil |
C23 | Ces trois fonctions calculent l'arc cosinus de x et expriment le résultat en demi-tours : un résultat de 1 représente donc pi radians. |
| asin asinf asinl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer l'arc sinus d'une valeur. |
| asinh asinhf asinhl |
C99 | Ces trois fonctions permettent de calculer l'arc sinus hyperbolique d'une valeur. |
| asinpi asinpif asinpil |
C23 | Ces trois fonctions calculent l'arc sinus de x et expriment le résultat en demi-tours. |
| atan atanf atanl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer l'arc tangente d'une valeur. |
| atan2 atan2f atan2l |
C89 C99 C99 |
Ces trois fonctions permettent de calculer l'arc tangente de y/x en tenant compte du quadrant. |
| atan2pi atan2pif atan2pil |
C23 | Ces trois fonctions calculent l'arc tangente de y/x en tenant compte du quadrant, puis expriment le résultat en demi-tours. |
| atanh atanhf atanhl |
C99 | Ces trois fonctions permettent de calculer l'arc tangente hyperbolique d'une valeur. |
| atanpi atanpif atanpil |
C23 | Ces trois fonctions calculent l'arc tangente de x et expriment le résultat en demi-tours. |
| cos cosf cosl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer le cosinus d'un angle donné. |
| cosh coshf coshl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer le cosinus hyperbolique d'une valeur. |
| cospi cospif cospil |
C23 | Ces trois fonctions calculent le cosinus de pi multiplié par x. Elles sont utiles pour éviter certaines approximations inutiles sur les multiples de pi. |
| sin sinf sinl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer le sinus d'un angle donné. |
| sinh sinhf sinhl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer le sinus hyperbolique d'une valeur. |
| sinpi sinpif sinpil |
C23 | Ces trois fonctions calculent le sinus de pi multiplié par x. |
| tan tanf tanl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer la tangente d'un angle donné. |
| tanh tanhf tanhl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer la tangente hyperbolique d'une valeur. |
| tanpi tanpif tanpil |
C23 | Ces trois fonctions calculent la tangente de pi multiplié par x. |
| Nom | Depuis | Description |
|---|---|---|
| exp expf expl |
C89 C99 C99 |
Ces trois fonctions permettent de calculer la valeur de e exposant x. |
| exp10 exp10f exp10l |
C23 | Ces trois fonctions permettent de calculer une puissance de 10. |
| exp10m1 exp10m1f exp10m1l |
C23 | Ces trois fonctions permettent de calculer 10 exposant x, moins 1. |
| exp2 exp2f exp2l |
C99 | Ces trois fonctions permettent de calculer une puissance de 2. |
| exp2m1 exp2m1f exp2m1l |
C23 | Ces trois fonctions permettent de calculer 2 exposant x, moins 1. |
| expm1 expm1f expm1l |
C99 | Ces trois fonctions permettent de calculer e exposant x, moins 1. |
| frexp frexpf frexpl |
C89 C99 C99 |
Ces trois fonctions décomposent une valeur en mantisse et puissance de 2. |
| ilogb ilogbf ilogbl |
C99 | Ces trois fonctions extraient l'exposant entier d'une valeur flottante. |
| ldexp ldexpf ldexpl |
C89 C99 C99 |
Ces trois fonctions multiplient une valeur par 2 exposant exp. |
| llogb llogbf llogbl |
C23 | Ces trois fonctions extraient un exposant entier long d'une valeur flottante. |
| log logf logl |
C89 C99 C99 |
Ces trois fonctions calculent le logarithme naturel. |
| log10 log10f log10l |
C89 C99 C99 |
Ces trois fonctions calculent le logarithme décimal. |
| log10p1 log10p1f log10p1l |
C23 | Ces trois fonctions calculent le logarithme décimal de 1 plus l'argument. |
| log2 log2f log2l |
C99 | Ces trois fonctions calculent le logarithme en base 2. |
| log2p1 log2p1f log2p1l |
C23 | Ces trois fonctions calculent le logarithme en base 2 de 1 plus l'argument. |
| logb logbf logbl |
C99 | Ces trois fonctions extraient un exposant sous forme flottante. |
| log1p/logp1 log1pf/logp1f log1pl/logp1l |
C99/C23 | Ces fonctions calculent le logarithme naturel de 1 plus l'argument. |
| scalbln scalblnf scalblnl |
C99 | Ces trois fonctions multiplient une valeur par FLT_RADIX exposant exp, exp étant de type long. |
| scalbn scalbnf scalbnl |
C99 | Ces trois fonctions multiplient une valeur par FLT_RADIX exposant exp. |
| Nom | Depuis | Description |
|---|---|---|
| erf erff erfl |
C99 | Ces trois fonctions calculent la fonction d'erreur, très utilisée en probabilités, en statistiques et dans certains calculs numériques. |
| erfc erfcf erfcl |
C99 | Ces trois fonctions calculent la fonction d'erreur complémentaire. |
| lgamma lgammaf lgammal |
C99 | Ces trois fonctions calculent le logarithme naturel de la valeur absolue de la fonction gamma. |
| tgamma tgammaf tgammal |
C99 | Ces trois fonctions calculent la fonction gamma. |
| Nom | Depuis | Description |
|---|---|---|
| ceil ceilf ceill |
C89 C99 C99 |
Ces trois fonctions calculent l'arrondi supérieur. |
| floor floorf floorl |
C89 C99 C99 |
Ces trois fonctions calculent l'arrondi inférieur. |
| fromfp fromfpf fromfpl |
C23 | Ces trois fonctions arrondissent x selon une direction d'arrondi mathématique, puis vérifient que le résultat tient dans une largeur entière signée. |
| fromfpx fromfpxf fromfpxl |
C23 | Ces trois fonctions se comportent comme fromfp, mais elles lèvent l'exception flottante d'inexactitude si l'arrondi modifie la valeur. |
| llrint llrintf llrintl |
C99 | Ces trois fonctions arrondissent x selon le mode d'arrondi courant et convertissent le résultat en type long long. |
| llround llroundf llroundl |
C99 | Ces trois fonctions arrondissent x à l'entier le plus proche, les demi-valeurs étant éloignées de zéro, puis convertissent le résultat en type long long. |
| lrint lrintf lrintl |
C99 | Ces trois fonctions arrondissent x selon le mode d'arrondi courant et convertissent le résultat en type long. |
| lround lroundf lroundl |
C99 | Ces trois fonctions arrondissent x à l'entier le plus proche, les demi-valeurs étant éloignées de zéro, puis convertissent le résultat en type long. |
| nearbyint nearbyintf nearbyintl |
C99 | Ces trois fonctions arrondissent x vers un entier représenté en virgule flottante, en respectant le mode d'arrondi courant. |
| rint rintf rintl |
C99 | Ces trois fonctions arrondissent x vers un entier représenté en virgule flottante, en respectant le mode d'arrondi courant. |
| round roundf roundl |
C99 | Ces trois fonctions calculent l'arrondi au plus proche, les demi-valeurs étant éloignées de zéro. |
| roundeven roundevenf roundevenl |
C23 | Ces trois fonctions arrondissent à l'entier le plus proche en choisissant l'entier pair lorsque la valeur est exactement à mi-chemin. |
| trunc truncf truncl |
C99 | Ces trois fonctions tronquent la partie décimale. |
| ufromfp ufromfpf ufromfpl |
C23 | Ces trois fonctions arrondissent x vers une valeur entière non signée, sans effectuer de wrapping en cas de dépassement. |
| ufromfpx ufromfpxf ufromfpxl |
C23 | Ces trois fonctions se comportent comme ufromfp, mais elles lèvent l'exception flottante d'inexactitude si l'arrondi modifie la valeur. |
| Nom | Depuis | Description |
|---|---|---|
| fmod fmodf fmodl |
C89/C99/C99 | Ces trois fonctions calculent le reste flottant de la division de x par y. Le quotient utilisé est tronqué vers zéro. |
| remainder remainderf remainderl |
C99 | Ces trois fonctions calculent le reste flottant ISO/IEC 60559 de x divisé par y. |
| remquo remquof remquol |
C99 | Ces trois fonctions calculent le même reste que remainder et stockent en plus quelques bits du quotient dans un entier. |
| Nom | Depuis | Description |
|---|---|---|
| canonicalize canonicalizef canonicalizel |
C23 | Ces trois fonctions tentent de stocker une représentation canonique de la valeur flottante source. |
| copysign copysignf copysignl |
C99 | Ces trois fonctions produisent une valeur ayant la magnitude de x et le signe de y. |
| modf modff modfl |
C89 C99 C99 |
Ces trois fonctions séparent la partie entière et la partie fractionnaire. |
| nan nanf nanl |
C99 | Ces trois fonctions produisent une valeur NaN silencieuse, éventuellement annotée par une chaîne de caractères dépendante de l'implémentation. |
| nextafter nextafterf nextafterl |
C99 | Ces trois fonctions renvoient la prochaine valeur représentable après x, dans la direction de y. |
| nextdown nextdownf nextdownl |
C23 | Ces trois fonctions renvoient la prochaine valeur représentable strictement plus petite que x, sauf aux bornes du type. |
| nexttoward nexttowardf nexttowardl |
C99 | Ces trois fonctions renvoient la prochaine valeur représentable après x, dans la direction de y, y étant évalué en long double. |
| nextup nextupf nextupl |
C23 | Ces trois fonctions renvoient la prochaine valeur représentable strictement plus grande que x, sauf aux bornes du type. |
| Nom | Depuis | Description |
|---|---|---|
| fdim fdimf fdiml |
C99 | Ces trois fonctions calculent la différence positive. |
| fmax fmaxf fmaxl |
C99 | Ces trois fonctions calculent le maximum numérique de deux valeurs. |
| fmaximum fmaximumf fmaximuml |
C23 | Ces trois fonctions déterminent la valeur maximale de leurs arguments. Elles définissent notamment +0 comme supérieur à -0. |
| fmaximum_mag fmaximum_magf fmaximum_magl |
C23 | Ces trois fonctions déterminent l'argument dont la magnitude est la plus grande. |
| fmaximum_mag_num fmaximum_mag_numf fmaximum_mag_numl |
C23 | Ces trois fonctions déterminent l'argument numérique de plus grande magnitude et choisissent le nombre si l'autre argument est NaN. |
| fmaximum_num fmaximum_numf fmaximum_numl |
C23 | Ces trois fonctions déterminent le maximum numérique de leurs arguments et choisissent le nombre si l'autre argument est NaN. |
| fmin fminf fminl |
C99 | Ces trois fonctions calculent le minimum numérique de deux valeurs. |
| fminimum fminimumf fminimuml |
C23 | Ces trois fonctions déterminent la valeur minimale de leurs arguments. Elles définissent notamment -0 comme inférieur à +0. |
| fminimum_mag fminimum_magf fminimum_magl |
C23 | Ces trois fonctions déterminent l'argument dont la magnitude est la plus petite. |
| fminimum_mag_num fminimum_mag_numf fminimum_mag_numl |
C23 | Ces trois fonctions déterminent l'argument numérique de plus petite magnitude et choisissent le nombre si l'autre argument est NaN. |
| fminimum_num fminimum_numf fminimum_numl |
C23 | Ces trois fonctions déterminent le minimum numérique de leurs arguments et choisissent le nombre si l'autre argument est NaN. |
| Nom | Depuis | Description |
|---|---|---|
| cbrt cbrtf cbrtl |
C99 | Ces trois fonctions calculent la racine cubique. |
| compoundn compoundnf compoundnl |
C23 | Ces trois fonctions calculent un facteur de composition : (1 + x) élevé à la puissance n. |
| pow powf powl |
C89 C99 C99 |
Ces trois fonctions élèvent une valeur à une puissance donnée. |
| pown pownf pownl |
C23 | Ces trois fonctions élèvent x à une puissance entière. |
| powr powrf powrl |
C23 | Ces trois fonctions élèvent x à la puissance y en suivant la définition exp(y * log(x)). |
| rootn rootnf rootnl |
C23 | Ces trois fonctions calculent la racine principale n-ième de x. |
| rsqrt rsqrtf rsqrtl |
C23 | Ces trois fonctions calculent l'inverse de la racine carrée non négative de x. |
| sqrt sqrtf sqrtl |
C89 C99 C99 |
Ces trois fonctions calculent la racine carrée. |
| Nom | Depuis | Description |
|---|---|---|
| fabs fabsf fabsl |
C89/C99/C99 | Ces trois fonctions calculent la valeur absolue d'une valeur flottante. |
| fma fmaf fmal |
C99 | Ces trois fonctions calculent x * y + z comme une opération fusionnée, avec un seul arrondi final. |
| hypot hypotf hypotl |
C99 | Ces trois fonctions calculent la longueur de l'hypoténuse d'un triangle rectangle de côtés x et y. |
| Nom | Depuis | Description |
|---|---|---|
| totalorder totalorderf totalorderl |
C23 | Ces trois fonctions testent la relation d'ordre total définie par ISO/IEC 60559 pour la paire *x, *y. |
| totalordermag totalordermagf totalordermagl |
C23 | Ces trois fonctions testent la relation d'ordre total sur les magnitudes des valeurs pointées par x et y. |
| getpayload getpayloadf getpayloadl |
C23 | Ces trois fonctions extraient le payload d'une valeur NaN silencieuse ou signalante, lorsque l'implémentation expose cette information. |
| setpayload setpayloadf setpayloadl |
C23 | Ces trois fonctions créent un NaN silencieux avec le payload demandé et le stockent dans l'objet pointé par res. |
| setpayloadsig setpayloadsigf setpayloadsigl |
C23 | Ces trois fonctions créent un NaN signalant avec le payload demandé et le stockent dans l'objet pointé par res. |
| Nom | Depuis | Description |
|---|---|---|
| j0 | POSIX | Cette fonction calcule la fonction de Bessel de première espèce, d'ordre 0. |
| j1 | POSIX | Cette fonction calcule la fonction de Bessel de première espèce, d'ordre 1. |
| jn | POSIX | Cette fonction calcule la fonction de Bessel de première espèce, pour un ordre entier n. |
| y0 | POSIX | Cette fonction calcule la fonction de Bessel de seconde espèce, d'ordre 0. |
| y1 | POSIX | Cette fonction calcule la fonction de Bessel de seconde espèce, d'ordre 1. |
| yn | POSIX | Cette fonction calcule la fonction de Bessel de seconde espèce, pour un ordre entier n. |
| Nom | Depuis | Description |
|---|---|---|
| HUGE_VAL HUGE_VALF HUGE_VALL |
C89 C99 C99 |
Ces macros représentent de très grandes valeurs flottantes positives. |
| INFINITY | C99 | Cette macro représente une valeur flottante infinie. |
| M_1_PI | POSIX | Cette macro POSIX/XSI définit l'inverse de pi. La variante M_1_PIl correspond au même concept en précision long double. |
| M_1_SQRTPI | POSIX | Cette macro POSIX/XSI définit l'inverse de la racine carrée de pi. La variante M_1_SQRTPIl correspond au même concept en précision long double. |
| M_2_PI | POSIX | Cette macro POSIX/XSI définit 2 divisé par pi. La variante M_2_PIl correspond au même concept en précision long double. |
| M_2_SQRTPI | POSIX | Cette macro POSIX/XSI définit 2 divisé par la racine carrée de pi. La variante M_2_SQRTPIl correspond au même concept en précision long double. |
| M_EGAMMA | POSIX | Cette macro POSIX/XSI définit la constante d'Euler-Mascheroni. La variante M_EGAMMAl correspond au même concept en précision long double. |
| M_LN10 | POSIX | Cette macro POSIX/XSI définit le logarithme naturel de 10. La variante M_LN10l correspond au même concept en précision long double. |
| M_LN2 | POSIX | Cette macro POSIX/XSI définit le logarithme naturel de 2. La variante M_LN2l correspond au même concept en précision long double. |
| M_LOG10E | POSIX | Cette macro POSIX/XSI définit le logarithme décimal de e. La variante M_LOG10El correspond au même concept en précision long double. |
| M_LOG2E | POSIX | Cette macro POSIX/XSI définit le logarithme en base 2 de e. La variante M_LOG2El correspond au même concept en précision long double. |
| M_PHI | POSIX | Cette macro POSIX/XSI définit le nombre d'or. La variante M_PHIl correspond au même concept en précision long double. |
| M_PI_2 | POSIX | Cette macro POSIX/XSI définit pi divisé par 2. La variante M_PI_2l correspond au même concept en précision long double. |
| M_PI_4 | POSIX | Cette macro POSIX/XSI définit pi divisé par 4. La variante M_PI_4l correspond au même concept en précision long double. |
| M_SQRT1_2 | POSIX | Cette macro POSIX/XSI définit l'inverse de la racine carrée de 2. La variante M_SQRT1_2l correspond au même concept en précision long double. |
| M_SQRT1_3 | POSIX | Cette macro POSIX/XSI définit l'inverse de la racine carrée de 3. La variante M_SQRT1_3l correspond au même concept en précision long double. |
| M_SQRT2 | POSIX | Cette macro POSIX/XSI définit la racine carrée de 2. La variante M_SQRT2l correspond au même concept en précision long double. |
| M_SQRT3 | POSIX | Cette macro POSIX/XSI définit la racine carrée de 3. La variante M_SQRT3l correspond au même concept en précision long double. |
| NAN | C99 | Cette macro représente une non-valeur NaN. |
POSIX/XSI - signifie que cet élément n'est pas défini dans le standard C ISO, mais par POSIX/XSI.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :