math.h est un groupe de fonctions de la bibliothèque standard du C qui permet d'utiliser un ensemble de fonctions mathématiques de base.., utilisant des nombres à virgule flottante. Les différents standards du C les implémentent différemment, mais en restant toujours rétrocompatibles. La plupart de ces fonctions sont également disponibles dans la bibliothèque standard de C++, bien que dans un autre en-tête (les en-têtes du C sont inclus, mais uniquement pour assurer la compatibilité).
Aperçu des fonctions La plupart des fonctions sont contenues dans l'en-tête math.h (ou dans l'en-tête cmath en C++). Les fonctions qui opèrent sur les entiers, telles que abs, labs, div, ou ldiv sont par contre spécifiées dans stdlib.h (cstdlib en C++).
Toutes les fonctions qui font intervenir des angles utilisent le radian comme unité.
Toutes les fonctions ne sont pas présentes dans la version C89 du standard du C. Pour celles qui le sont, les fonctions n'acceptent que le type double pour les opérations sur des nombres à virgule flottante. Dans la norme C99, cette limitation a été levée en introduisant une nouvelle série de fonctions fonctionnant avec des paramètres de type float ou long double. Ces fonctions sont identifiables respectivement par le suffixe f ou l.. Fonction Description abslabsllabs calcule la valeur absolue d'un nombre entier fabs calcule la valeur absolue d'un nombre de type float divldivlldiv calcule le quotient et le reste de la division euclidienne fmodreste de la division de nombres à virgule flottante remainder reste signé de l'opération de division remquo reste signé ainsi que les trois derniers bits de l'opération de division fma Multiplication puis addition (Multiply-accumulate) fmax maximum des deux valeurs à virgule flottante fmin minimum des deux valeurs à virgule flottante fdim différence positive de deux valeurs à virgule flottante nannanfnanl Retourne un not-a-number (NaN) Fonctions exponentielles exp retourne e élevé à la puissance demandée exp2 retourne 2 élevé à la puissance demandée expm1 retourne e élevé à la puissance demandée moins 1 log calcule le logarithme naturel (en base e) log2 calcule le logarithme binaire (en base 2) log10 calcule le logarithme décimal (en base 10) log1p calcule le logarithme naturel (en base e) de 1 plus le nombre donné ilogb extrait l'exposant d'un nombre logb extrait l'exposant d'un nombre Fonctions puissance sqrt calcule la racine carrée cbrt calcule la racine cubique hypot calcule la racine carrée de la somme des carrés des deux nombres donnés pow élève un nombre à la puissance donnée Fonctions trigonométriques sin calcule le sinus cos calcule le cosinus tan calcule la tangente asin calcule l'arc sinus acos calcule l'arc cosinus atan calcule l'arc tangente atan2 calcule l'arc tangente, en utilisant le signe pour déterminer le quadrant Fonctions hyperboliques sinh calcule le sinus hyperbolique cosh calcule le cosinus hyperbolique tanh calcule la tangente hyperbolique asinh calcule l'arc sinus hyperbolique acosh calcule l'arc cosinus hyperbolique atanh calcule l'arc tangente hyperbolique Fonction d'erreur et fonction gamma erf calcule la fonction d'erreur erfc calcule la fonction d'erreur complémentaire lgamma calcule le logarithme naturel de la valeur absolue de la fonction gamma tgamma calcule la fonction gammaOpérations d'arrondi ceil renvoie le nombre entier supérieur le plus proche floor renvoie le nombre entier inférieur le plus proche trunc retourne l'entier le plus proche dont la valeur absolue est inférieure roundlroundllround retourne l'entier le plus proche, suivant les règles d'arrondi nearbyint retourne l'entier le plus proche en utilisant la méthode d'arrondi courante rintlrintllrint retourne l'entier le plus proche en utilisant la méthode d'arrondi courante avec exception si le résultat diffère Fonctions de manipulation de nombres à virgule flottante frexp décompose le paramètre en un nombre et une puissance de 2 ldexp multiplie un nombre par un nombre élevé à une puissance de 2 modf décompose un nombre en un entier et sa partie fractionnelle. scalbnscalbln multiplie un nombre par FLT_RADIX élevé à une puissance donnée nextafternexttoward retourne la prochaine valeur représentable en virgule flottante copysign copie le signe d'un nombre à virgule flottante Classification fpclassify catégorise une valeur en virgule flottante isfinite vérifie si le nombre donné a une valeur finie isinf vérifie si le nombre donné a une valeur infinie isnan vérifie si le nombre donné est NaN isnormal vérifie si le nombre donné est normal signbit vérifie si le nombre donné est négatif Environnement en virgule flottante C99 ajoute plusieurs fonctions et types pour contrôler plus finement l’environnement en virgule flottante.. Ces fonctions peuvent être utilisées pour contrôler un certain nombre de paramètres qui affectent le calcul avec des nombres à virgule flottante, par exemple le mode d'arrondi, quand les nombres doivent être remis à zéro, etc. Ces fonctions sont définies dans l'en-tête fenv.h (cfenv en C++). Fonction Description feclearexcept retire les exceptions (C99) fegetenv enregistre l'environnement actuel (C99) fegetexceptflag enregistre les flags de statut (C99) fegetround récupère la direction actuelle de l'arrondi (C99) feholdexcept enregistre l'environnement actuel et nettoie les exceptions (C99) feraiseexcept soulève une exception (C99) fesetenv met en place un environnement (C99) fesetexceptflag met en place un flag de statut (C99) fesetround choisi la direction de l'arrondi (C99) fetestexcept test si certaines exceptions ont été soulevées (C99) feupdateenv restaure un environnement en conservant les exceptions soulevées (C99) Nombres complexes C99 ajoute le nouveau mot-clé _Complex (et la macro complex pour plus de commodité) qui permet de gérer des nombres complexes. Ceux-ci se présentent sous la forme de deux nombres à virgule flottante.
C++ ne propose pas de rétro-compatibilité concernant les nombres complexes, mais fournit la classe std::complex.
Toutes les opérations sur des nombres complexes sont définies dans l'en-tête complex.h. Comme pour les fonctions sur les entiers, les suffixes f et l sont les variantes de la fonction utilisant respectivement les types float complex et long double complex. Fonction Description Opérations de base cabs calcule la valeur absolue (C99) carg calcule l'argument(C99) cimag renvoie la partie imaginaire d'un nombre complexe (C99) creal renvoie la partie réelle d'un nombre complexe (C99) conj renvoie le conjugué d'un nombre complexe (C99) cproj calcule la projection du nombre complexe sur la sphère de Riemann (C99) Opérations exponentielles cexp calcule l'exponentiel d'un nombre complexe (C99) clog calcule le logarithme d'un nombre complexe (C99) csqrt calcule la racine carrée d'un nombre complexe (C99) cpow calcule la puissance d'un nombre complexe (C99) Opérations trigonométriques csin calcule le sinus d'un nombre complexe (C99) ccos calcule le cosinus d'un nombre complexe (C99) ctan calcule la tangente d'un nombre complexe (C99) casin calcule l'arc sinus d'un nombre complexe (C99) cacos calcule l'arc cosinus d'un nombre complexe (C99) catan calcule l'arc tangente d'un nombre complexe (C99) Opérations hyperboliques csinh calcule le sinus hyperbolique d'un nombre complexe (C99) ccosh calcule le cosinus hyperbolique d'un nombre complexe (C99) ctanh calcule la tangente hyperbolique d'un nombre complexe (C99) casinh calcule l'arc sinus hyperbolique d'un nombre complexe (C99) cacosh calcule l'arc cosinus hyperbolique d'un nombre complexe (C99) catanh calcule l'arc tangente hyperbolique d'un nombre complexe (C99)
Génération de nombres aléatoires L'en-tête stdlib.h (cstdlib en C++) définit plusieurs fonctions qui peuvent être utilisées pour de la génération statique de nombres aléatoires.. Fonction Description rand génère un nombre pseudo-aléatoire srand initialise un générateur de nombres pseudo-aléatoires
libm Sous Linux et FreeBSD, les fonctions mathématiques (telles que déclarées dans math.h) sont regroupées séparément dans la bibliothèque mathématique libm. Donc si l'une de ces fonctions est utilisée, la directive -lm doit être ajoutée à l'éditeur de liens.
Notes et références
Liens externes math.h : , The Single UNIX® Specification, Issue 7 from The Open Group C reference for math functions
Catégorie:Bibliothèque standard du C