9.8 Fonctions mathématiques

Le fichier en-tête math.h contient des déclarations de fonctions mathématiques.

Les arguments de ces fonctions ainsi que les valeurs qu'elles retournent sont du type double.

La compilation d'un programme faisant appel à ces fonctions doit être effectuée avec l'option -lm afin que l'éditeur de liens puissent résoudre les références externes correspondantes.

Sous UNIX SYSTEM V, la fonction matherr permet de gérer une erreur qui s'est produite lors de l'utilisation d'une fonction mathématique. Le programmeur peut écrire sa propre fonction matherr, laquelle doit respecter la syntaxe suivante :

 
     int matherr(struct exception *exp)

Le type struct exception est défini dans le fichier en-tête math.h comme :

 
     struct exception {
         int    type;
         char  *name;
         double arg1, arg2, retval;
     };

Si matherr retourne 0, les messages d'erreurs standards et la valorisation d'errno interviendront, sinon ce ne sera pas le cas.

Exemple

 
#include <stdio.h>
#include <math.h>
main()
{
  double x, y;
  scanf("%lf", &x);
  y = log(x);
  printf("%f\n", y);
}
int matherr(struct exception *p)
{
  puts("erreur detectee");
  printf(" type : %d\n", p->type);
  printf(" name : %s\n", p->name);
  printf(" arg1 : %f\n", p->arg1);
  printf(" arg2 : %f\n", p->arg2);
  printf(" valeur retournee : %f\n", p->retval);
  p->retval = -1.;
  return 0;
}

language=C++,basicstyle=, stringstyle=,showstringspaces=false, keywordstyle= , commentstyle=

numbers=left,numberstyle=,numbersep=5pt,showlines=false,frame=tb


Pr. Marc BUFFAT
buffat@ufrmeca.univ-lyon1.fr
2004-12-01