Mathématiques

Écrit le 11/11/2004 par Wikibooks
Dernière mise à jour : 02/02/2006

Pour pouvoir utiliser les fonctions mathématiques, il faut non seulement utiliser le fichier d'entêtes math ainsi que errno.h. Ce dernier contient les codes d'erreurs retournés via la variable globale errno lorsqu'un des arguments passés est invalide :

#include <math.h>
#include <errno.h>

mais aussi ajouter l'option -lm lors de la compilation (ou plus précisément lors de l'édition des liens).

La gestion portable des erreurs est encore un grief à porter au casier déjà bien lourd du langage C. Dans le cas où la détection d'erreur est critique, voici la marche à suivre pour détecter qu'une fonction mathématique a échoué :

  1. Positionner la variable errno à 0.
  2. Appeler la fonction mathématique.
  3. Vérifier que errno vaut toujours 0.

En effet, dans la plupart des cas, ces fonctions ne positionnent cette variable qu'en cas d'erreur, laissant la valeur inchangée en cas de succès. Il faut donc s'assurer qu'une valeur différente de 0, est bien le résultat du dernier appel et non d'un autre antérieur. La pénibilité est surtout dû au fait que les fonctions mathématiques ne renvoient pas de code d'erreur, contrairement à la plupart des autres fonctions utilisant aussi errno, ce qui oblige à positionner explicitement sa valeur avant l'appel. Cela dit, rares sont les cas où on a besoin d'une attitude aussi paranoïaque.

Exponentiations

double exp ( double x );
double pow ( double x, double y );

exp calcule e élevé à la puissance de x (<math>e^x</math>) où e est la base des logarithmes naturels (ln(e) = 1). pow calcule la valeur de x élévé à la puissance y (<math>x^y</math>).

Erreurs

La fonction pow peut déclencher l'erreur suivante :

Logarithmes

double log ( double x );
double log10 ( double x );

log calcule le logarithme néperien de x (noté généralement ln(x) en mathématiques). log10 calcule le logarithme à base 10 de x.

Erreurs

Racine carrée

double sqrt ( double x );

Renvoie la racine carrée de x.

Erreurs

Sinus, cosinus, tangente

double sin ( double x );
double cos ( double x );
double tan ( double x );

Arc sinus, arc cosinus

double asin ( double x );
double acos ( double x );

Erreurs

Arc tangente

double atan ( double x );
double atan2 ( double y, double x );

Cet article provient de Wikibooks et est sous licence GNU Free Documentation License. Il a été écrit par plusieurs personnes et est constamment mis à jour. Cet article est la version du 14 décembre 2004 à 22:20. L'article d'origine se trouve à http://fr.wikibooks.org/wiki/Programmation_C_Mathématiques.