Bibliothèque standard C++<cmath>

La bibliothèque standard C++ offre une multitude de fonctionnalités, parmi lesquelles<cmath>est un fichier d'en-tête contenant des fonctions mathématiques, fournissant de nombreuses opérations et constantes mathématiques de base.

<cmath>est un fichier d'en-tête de la bibliothèque standard C++ qui définit un ensemble de fonctions mathématiques capables d'effectuer des opérations mathématiques de base telles que l'exponentiation, les fonctions trigonométriques, les logarithmes, les valeurs absolues, etc.

Pour utiliser<cmath>Pour les fonctions qu'il contient, vous devez inclure ce fichier d'en-tête dans votre programme C++ :

#include <cmath>

Fonctions courantes

<cmath>fournit de nombreuses fonctions mathématiques ; en voici quelques-unes couramment utilisées.

1. Fonctions mathématiques de base

FonctionFonctionnalitésExemple
abs(x)Calculer un entierxla valeur absolue deabs(-5) // 5
fabs(x)Calcule un nombre à virgule flottantexla valeur absolue defabs(-5.5) // 5.5
fmod(x, y)Calculerxdivisé paryle restefmod(5.3, 2) // 1.3
remainder(x, y)Calculerxdivisé paryle resteremainder(5.5, 2) // 1.5
fmax(x, y)returnxetyla valeur la plus grandefmax(3.5, 4.2) // 4.2
fmin(x, y)returnxetyla valeur la plus petitefmin(3.5, 4.2) // 3.5
hypot(x, y)Calculersqrt(x*x + y*y)hypot(3, 4) // 5

2. Fonctions exponentielles et logarithmiques

FonctionFonctionnalitésExemple
exp(x)Calculere^x,ebase du logarithme népérienexp(1) // 2.71828...
log(x)Calculerxlogarithme népérien de ⟦0⟧log(2.71828) // 1
log10(x)Calculerxlogarithme en base 10 de ⟦0⟧log10(100) // 2
pow(x, y)Calculerxdeypuissancepow(2, 3) // 8
sqrt(x)Calculerxracine carrée de ⟦0⟧sqrt(16) // 4
cbrt(x)Calculerxracine cubique de ⟦0⟧cbrt(27) // 3
expm1(x)Calculere^x - 1expm1(1) // 1.71828...
log1p(x)Calculerlog(1 + x), adapté aux cas où x est proche de 0log1p(0.00001) // 0.00001

3. Fonctions trigonométriques

Fonction Fonctionnalités Exemple
sin(x) Calculerxsinus de,xEn radians sin(3.14159 / 2) // 1
cos(x) Calculerxcosinus de,xEn radians cos(3.14159) // -1
tan(x) Calculerxtangente de,xEn radians tan(0) // 0
asin(x) Calculerxarcsinus de, renvoie des radians asin(1) // 3.14159/2
acos(x) Calculerxarccosinus de, renvoie des radians acos(-1) // 3.14159
atan(x) Calculerxarctangente de, renvoie des radians atan(1) // 3.14159/4
atan2(y, x) Calculery/xarctangente de, renvoie des radians atan2(1, 1) // 3.14159/4

4. Fonctions hyperboliques

Fonction Fonctionnalités Exemple
sinh(x) Calculerxsinus hyperbolique de sinh(0) // 0
cosh(x) Calculerxcosinus hyperbolique de cosh(0) // 1
tanh(x) Calculerxtangente hyperbolique de tanh(1) // 0.7616
asinh(x) Calculerxsinus hyperbolique inverse de asinh(1) // 0.8814
acosh(x) Calculerxcosinus hyperbolique inverse de,x ≥ 1 acosh(1) // 0
atanh(x) Calculerxtangente hyperbolique inverse de,xsur (-1, 1) atanh(0.5) // 0.5493

5. Arrondi et opérations en virgule flottante

Fonction Fonctionnalités Exemple
ceil(x) Renvoie une valeur non inférieure àxle plus petit entier ceil(2.3) // 3
floor(x) Renvoie une valeur non supérieure àxle plus grand entier floor(2.3) // 2
trunc(x) Renvoie la valeur entière avec la partie fractionnaire supprimée trunc(2.8) // 2
round(x) Renvoie l'entier le plus proche après arrondi round(2.5) // 3
lround(x) Renvoie arrondi àlongType lround(2.5) // 3
llround(x) Renvoie arrondi àlong longType llround(2.5) // 3
nearbyint(x) renvoie l'arrondi à l'entier le plus proche (mais ne déclenche pas d'exceptions de virgule flottante) nearbyint(2.5) // 2
rint(x) renvoie l'arrondi à un entier selon le mode d'arrondi actuel rint(2.5) // 3
modf(x, &intpart) vaxSépare les parties entière et fractionnaire de modf(2.3, &intpart)

6. Vérifications des nombres à virgule flottante

Fonction Fonctionnalités Exemple
isfinite(x) Vérifiexs'il s'agit d'une valeur finie (pas l'infini ni NaN) isfinite(3.0) // true
isinf(x) Vérifiexs'il s'agit de l'infini isinf(1.0 / 0.0) // true
isnan(x) Vérifiexs'il s'agit de NaN isnan(0.0 / 0.0) // true
isnormal(x) VérifiexS'il s'agit d'un nombre à virgule flottante normal non nul isnormal(1.0) // true
signbit(x) Vérifiexsi le signe est négatif signbit(-5.3) // true

Exemple

Voici un exemple utilisant<cmath>Un exemple simple de , montrant comment calculer la racine carrée, le sinus et la valeur absolue d'un nombre.

Exemple 1

#include <iostream>
#include <cmath> // inclure le fichier d'en-tête <cmath>

int main() {
    double num = 9.0;
    double root = sqrt(num); // calculer la racine carrée
    double sinValue = sin(M_PI / 2); // Calculer la valeur du sinus, M_PI est une approximation de π
    double absValue = abs(-5.0); // Calculer la valeur absolue

    std::cout << "La racine carrée de " << num << " est " << root << std::endl;
    std::cout << "Le sinus de " << M_PI / 2 << " est " << sinValue << std::endl;
    std::cout << "La valeur absolue de -5.0 est " << absValue << std::endl;

    return 0;
}

Sortie :

The square root of 9 is 3
The sine of 1.570796 is 1
The absolute value of -5 is 5

Exemple 2

#include <iostream>
#include <cmath>

int main() {
    // Opérations mathématiques de base
    std::cout << "abs(-5) = " << abs(-5) << std::endl;
    std::cout << "fmod(5.3, 2) = " << fmod(5.3, 2) << std::endl;

    // Fonctions exponentielles et logarithmiques
    std::cout << "exp(1) = " << exp(1) << std::endl;
    std::cout << "log(2.71828) = " << log(2.71828) << std::endl;
    std::cout << "pow(2, 3) = " << pow(2, 3) << std::endl;

    // Fonctions trigonométriques
    std::cout << "sin(3.14159 / 2) = " << sin(3.14159 / 2) << std::endl;
    std::cout << "cos(3.14159) = " << cos(3.14159) << std::endl;

    // Fonctions d'arrondi
    std::cout << "ceil(2.3) = " << ceil(2.3) << std::endl;
    std::cout << "floor(2.3) = " << floor(2.3) << std::endl;

    // Vérifications des nombres à virgule flottante
    double x = 1.0 / 0.0;
    if (isinf(x)) {
        std::cout << "x est infini" << std::endl;
    }

    return 0;
}

Notes

  • <cmath>Les fonctions acceptent généralementfloatoudoublearguments de type et résultats de retour du type correspondant. Pourlong doubletype, vous pouvez utiliser<cmath>fonctions dans , mais vous devez ajouter après le nom de la fonctionlsuffixe, par exemplesqrtl。
  • Certaines fonctions, telles quepowetlog, vous pouvez passer des entiers comme arguments, mais le résultat reste un nombre à virgule flottante.
  • <cmath>fonctions dans peuvent lever des exceptions, par exemple lorsquesqrtLorsque l'argument de la fonction est négatif, elle lèvestd::domain_errorune exception.
  • <cmath>est un fichier d'en-tête très utile dans la bibliothèque standard C++. Il fournit de nombreuses fonctions mathématiques de base qui peuvent aider les développeurs à effectuer des opérations mathématiques lors de l'écriture de programmes.

    autres extensions