Fonctions de base en langage C/math.h

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
math.h
Icône de la faculté
Chapitre no 4
Leçon : Fonctions de base en langage C
Chap. préc. :errno.h
Chap. suiv. :stdio.h
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Fonctions de base en langage C : math.h
Fonctions de base en langage C/math.h
 », n'a pu être restituée correctement ci-dessus.

Description[modifier | modifier le wikicode]

Le fichier d'en-tête <math.h> déclare des fonctions mathématiques. Ces fonctions respectent la norme IEEE 754.

Tous leurs paramètres et résultats sont du type double. Les angles sont indiqués en radians.

Les fonctions[modifier | modifier le wikicode]

Pour une description détaillée des fonctions mathématiques, voir le WikiLivre Programmation C, chapitre Mathématiques.

Limitations et problèmes[modifier | modifier le wikicode]

Les nombres flottants sont représentés en machine par une mantisse et un exposant signés codés sur un nombre d'octets limités, par exemple sur ma machine : 4 octets pour un float et 8 pour un double (voir IEEE 754). Les nombre utilisables sont donc un sous-ensemble de l’ensemble mathématique des décimaux .

  • limitations dues au codage de l'exposant (valeurs données à titre d'exemple sur un Mac Mini) :
    • impossible de représenter des grands nombres négatifs et positifs, exemple DBL_MAX = 1.797693e+308.
    • limitations pour les valeurs trop proches de 0 en négatif et positif, exemple DBL_MIN = 2.225074e-308.
  • limitations dues au codage de la mantisse : l'écart entre deux doubles successifs ne peut pas être plus petit que DBL_EPSILON = 2.220446e-16.
  • Les résultats d'opérations ou fonctions peuvent provoquer des dépassements de capacité.

Les erreurs signalées par les fonctions[modifier | modifier le wikicode]

En cas de problème, les fonctions rangent dans errno (voir errno.h et man de la fonction) :

  • EDOM : Erreur de domaine pour les paramètres : sqrt(-1.0).
  • ERANGE : Erreur si le résultat ne peut pas être représenté sur un double.