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é). 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. 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++). 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.