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
| Fonction | Fonctionnalités | Exemple |
|---|---|---|
abs(x) | Calculer un entierxla valeur absolue de | abs(-5) // 5 |
fabs(x) | Calcule un nombre à virgule flottantexla valeur absolue de | fabs(-5.5) // 5.5 |
fmod(x, y) | Calculerxdivisé paryle reste | fmod(5.3, 2) // 1.3 |
remainder(x, y) | Calculerxdivisé paryle reste | remainder(5.5, 2) // 1.5 |
fmax(x, y) | returnxetyla valeur la plus grande | fmax(3.5, 4.2) // 4.2 |
fmin(x, y) | returnxetyla valeur la plus petite | fmin(3.5, 4.2) // 3.5 |
hypot(x, y) | Calculersqrt(x*x + y*y) | hypot(3, 4) // 5 |
2. Fonctions exponentielles et logarithmiques
| Fonction | Fonctionnalités | Exemple |
|---|---|---|
exp(x) | Calculere^x,ebase du logarithme népérien | exp(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) | Calculerxdeypuissance | pow(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 - 1 | expm1(1) // 1.71828... |
log1p(x) | Calculerlog(1 + x), adapté aux cas où x est proche de 0 | log1p(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 <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 <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 que
powetlog, 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.