SQRT |
Racine carré |
---|---|
Langage C++ | cmath (math.h) |
Syntaxe
float sqrt(float a); |
double sqrt(double a); |
long double sqrt(long double a); |
Paramètres
Nom | Description |
---|---|
a | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter |
Description
Cette fonction retourne la racine carré du nombre «a».
Remarques
- La fonction sqrt() renvoie la racine carrée de a. S'il est appelé avec un paramètre négatif, une erreur de domaine se produit.
- Retourne NaN pour les nombres négatifs : sqrt(x) ne peut pas calculer la racine carrée d'un nombre négatif dans les nombres réels. Elle retourne NaN (Not-a-Number) si x < 0. Exemple :
- Fonction optimisée pour le matériel : Sur la plupart des processeurs modernes, sqrt utilise des instructions matérielles dédiées, ce qui la rend très rapide. Elle est souvent plus efficace qu'une approche par itérations manuelles (exemple : Méthode de Newton). Exemple d'optimisation en assembleur sur certaines architectures :
- #include <immintrin.h> // Pour AVX/SSE
- float res = _mm_sqrt_ss(x);
- Utilisation avec les nombres entiers : Si on passe un entier à sqrt, il est converti en double automatiquement. Cependant, la troncature peut
poser problème si on stocke le résultat dans un entier. Exemple incorrect :
Mieux vaut stocker le résultat dans un double.
- Utilisation avec constexpr pour les constantes : Depuis C++26, sqrt peut être utilisé avec constexpr, permettant son évaluation à la compilation. Exemple :
- Alternative pour les grandes précisions : sqrt fonctionne bien pour les calculs classiques, mais pour les très grandes précisions, il vaut mieux utiliser des bibliothèques comme MPFR ou Boost.Multiprecision. Exemple avec Boost :
- boost::multiprecision::cpp_dec_float_50 res = sqrt(boost::multiprecision::cpp_dec_float_50("2.0"));
- Lié aux algorithmes numériques : sqrt est utilisé dans de nombreux algorithmes mathématiques, comme : Le calcul de la norme d'un vecteur en
géométrie :
La distance euclidienne entre deux points :
C'est une fonction essentielle en physique, statistique, et vision par ordinateur.
- Utilisation avec les types complexes : Pour calculer la racine carrée d'un nombre négatif, on doit utiliser <complex>. Exemple :
Pour gérer les nombres négatifs, utiliser des nombres complexes avec <complex>.
Cela permet d'optimiser le calcul à l'exécution sans surcoût de performance.
Cela permet d'avoir des résultats plus précis que le double standard.
Cela renvoie 2i au lieu de NaN.
Algorithme
MODULE SQRT(X) SI X = 0.0 ALORS RETOURNE 0.0 SINON M ← 1.0 XN ← X BOUCLE FAIRE TANT QUE XN >= 2.0 XN ← 0.25 x XN M ← 2.0 x M FIN BOUCLE FAIRE TANT QUE BOUCLE FAIRE TANT QUE XN < 0.5 XN ← 4.0 x XN M ← 0.5 x M FIN BOUCLE FAIRE TANT QUE A ← XN B ← 1.0 - XN BOUCLE REPETER A ← A x (1.0 + 0.5 x B) B ← 0.25 x (3.0 + B) x B x B FIN BOUCLE JUSQU'A B ← 1.0E - 15 RETOURNE A x M FIN SI |
Exemple
Voici un exemple permet d'afficher les racines carrés inférieurs à 1000 :

on obtiendra le résultat suivant :
Sqrt(2)=1.4142135623730951Sqrt(4)=2
Sqrt(16)=4
Sqrt(256)=16
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - exp
Langage de programmation - C++ - Référence de procédures et fonctions - log
Langage de programmation - C++ - Référence de procédures et fonctions - pow
Langage de programmation - C - Référence de procédures et fonctions - sqrt
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 249.