« Programmation C/Mathématiques » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Alveric (discussion | contributions)
m + noinclude
Ligne 52 : Ligne 52 :
double tan ( double x );
double tan ( double x );
</pre>
</pre>

Note : les angles retournés sont en radians (intervalle -pi à pi).


==Arc sinus, arc cosinus==
==Arc sinus, arc cosinus==

Version du 16 novembre 2006 à 18:14


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 () où e est la base des logarithmes naturels (ln(e) = 1). pow calcule la valeur de x élévé à la puissance y ().

Erreurs

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

  • EDOM : x est négatif, et y n’est pas un entier.

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

  • EDOM : x est négatif ;
  • ERANGE : x est nul.

Racine carrée

double sqrt ( double x );

Renvoie la racine carrée de x.

Erreurs

  • EDOM : x est négatif.

Sinus, cosinus, tangente

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

Note : les angles retournés sont en radians (intervalle -pi à pi).

Arc sinus, arc cosinus

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

Erreurs

  • EDOM : x est inférieur à 1 ou supérieur à -1.

Arc tangente

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