Provided by: manpages-fr-dev_2.80.1-1_all bug

NOM

       feclearexcept,    fegetexceptflag,    feraiseexcept,   fesetexceptflag,
       fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv,
       feupdateenv, feenableexcept, fedisableexcept, fegetexcept - Gestion des
       exceptions et des arrondis des nombres flottants

SYNOPSIS

       #include <fenv.h>

       int feclearexcept(int excepts);
       int fegetexceptflag(fexcept_t *flagp, int excepts);
       int feraiseexcept(int excepts);
       int fesetexceptflag(const fexcept_t *flagp, int excepts);
       int fetestexcept(int excepts);

       int fegetround(void);
       int fesetround(int rounding_mode);

       int fegetenv(fenv_t *envp);
       int feholdexcept(fenv_t *envp);
       int fesetenv(const fenv_t *envp);
       int feupdateenv(const fenv_t *envp);

       Effectuez l’édition des liens avec l’option -lm.

DESCRIPTION

       Ces onze fonctions ont été définies dans la norme C99, et décrivent  la
       gestion   des   arrondis   des  nombres  flottants  et  des  exceptions
       (débordement, division par zéro, etc.) sur les nombres flottants.

   Exceptions
       L’exception « DivideByZero » (division par zéro) se produit  quand  une
       opération sur des nombres finis donne un résultat infini.

       L’exception  « Overflow »  (débordement)  se  produit quand un résultat
       doit être représenté par un nombre flottant, mais que sa valeur absolue
       est trop grande pour être représentée par un nombre flottant.

       L’exception  « Underflow »  se  produit  quand  un  résultat  doit être
       représenté par un nombre flottant, mais que sa valeur absolue est  trop
       petite pour être représentée en nombre flottant.

       L’exception  « Inexact  »  se  produit  quand le résultat arrondi d’une
       opération n’est pas égal au résultat en précision infinie. Elle peut se
       déclencher  quand  les  exceptions  « Overflown »  ou  « Underflow » se
       produisent.

       L’exception « Invalid » se produit quand il n’y a pas de résultat  bien
       défini  pour  une  opération,  comme  « 0/0 »  ou  « infini-infini » ou
       « sqrt(-1) ».

   Gestion des exceptions
       Les exceptions sont représentées  de  deux  manières :  en  tant  qu’un
       unique  bit (exception présente ou absente), et ces bits correspondent,
       de manière dépendante à l’implémentation, avec  une  position  au  sein
       d’un  entier,  et  aussi  en tant que structure opaque pouvant contenir
       plus d’informations concernant l’exception (éventuellement l’adresse du
       code déclenchant l’erreur).

       Chacune  des  macros FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW,
       FE_UNDERFLOW est  définie  lorsque  l’implémentation  gère  l’exception
       correspondante. Les bits sont alors définis, ainsi on peut appeler, par
       exemple, les fonctions de  gestion  des  exceptions  avec  un  argument
       entier   FE_OVERFLOW|FE_UNDERFLOW.  D’autres  exceptions  peuvent  être
       supportées. La macro FE_ALL_EXCEPT est un masque au format  OU  binaire
       correspondant à toutes les exceptions supportées.

       La   fonction   feclearexcept()   efface   les   exceptions  supportées
       représentées par les bits de son argument.

       La fonction fegetexceptflag() stocke une représentation de  l’état  des
       exceptions  contenues  dans  son  argument  excepts dans l’objet opaque
       *flagp.

       La  fonction  feraiseexcept()  déclenche  les  exceptions   supportées,
       représentées par les bits de son argument excepts.

       La  fonction  fesetexceptflag() fixe l’état des exceptions représentées
       par l’argument excepts à la valeur *flagp. Cette valeur  doit  être  le
       résultat  d’un  appel  préalable  à  fegetexceptflag()  avec un dernier
       argument contenant tous les bits dans excepts.

       La fonction fetestexcept() renvoie un mot dont les  bits  définis  sont
       également  les  bits  définis  dans l’argument excepts et pour lesquels
       l’exception correspondante est définie.

   Arrondis
       Chacune des macros FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO,  FE_UPWARD
       est  définie  lorsque l’implémentation gère la définition et la lecture
       de la direction d’arrondi correspondante.

       La  fonction  fegetround()  renvoie  la  macro  correspondant  au  mode
       d’arrondi en cours.

       La  fonction  fesetround()  définit  le  mode  d’arrondi  tel qu’il est
       spécifié par son argument et renvoie zéro en cas de succès.

   Environnement en virgule flottante
       L’environnement de travail en virgule flottante, y compris les modes de
       contrôle  et les drapeaux d’état peuvent être manipulés sous forme d’un
       objet opaque de type fenv_t. L’environnement par défaut, est représenté
       par  FE_DFL_ENV (de type const fenv_t *). Il s’agit de la configuration
       de l’environnement au démarrage d’un programme, et elle est définie par
       ISO  C  comme  ayant  un  arrondi au plus proche, toutes les exceptions
       effacées et un mode sans arrêt (continuer en présence des  exceptions).

       La  fonction  fegetenv()  sauve  l’environnement de travail en cours en
       virgule flottante dans l’objet *envp.

       La fonction feholdexcept() effectue la même chose, puis efface tous les
       drapeaux  d’exceptions,  et  bascule si possible sur un mode sans arrêt
       (continuer en présence des exceptions). Elle renvoie  zéro  en  cas  de
       succès.

       La  fonction  fesetenv() recharge l’environnement de travail en virgule
       flottante à partir de  l’objet  *envp.  Cet  objet  doit  être  valide,
       c’est-à-dire   être   le   résultat   d’un   appel   à  fegetenv(),  de
       feholdexcept() ou  égal  à  FE_DFL_ENV.  Cet  appel  ne  déclenche  pas
       d’exception.

       La fonction feupdateenv() installe l’environnement en virgule flottante
       représenté par l’objet *envp, sauf que les exceptions déjà  déclenchées
       ne  sont  pas effacées. Après l’appel de cette fonction, les exceptions
       déclenchées seront un OU binaire entre l’ensemble précédent,  et  celui
       contenu  dans  *envp.  Comme  précédemment,  l’objet   *envp  doit être
       valide.

VALEUR RENVOYÉE

       Ces fonctions renvoient 0 en cas de succès et une valeur non  nulle  en
       cas d’erreur.

CONFORMITÉ

       IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99.

NOTES

   Notes sur la glibc
       Si  possible, la bibliothèque GNU C définit une macro FE_NOMASK_ENV qui
       représente un environnement lorsque toutes les  exceptions  déclenchées
       entraîne  une interception. La présence de cette macro peut être testée
       en utilisant #ifdef. Elle n’est définie que si la constante  symbolique
       _GNU_SOURCE  est  définie.  Le  standard  C99  ne  définit  pas comment
       positionner les bits individuels dans le masque de  virgule  flottante,
       par  exemple  pour  intercepter des drapeaux particuliers. La glibc 2.2
       gère    feenableexcept()    et    fedisableexcept()    pour     définir
       individuellement  des  interceptions,  et  fegetexcept()  pour demander
       l’état.

       #define _GNU_SOURCE
       #include <fenv.h>

       int feenableexcept(int excepts);
       int fedisableexcept(int excepts);
       int fegetexcept(void);

       Les   fonctions   feenableexcept()   et   fedisableexcept()    activent
       (désactivent)  les  interceptions pour chaque exception représentée par
       excepts et  renvoient  l’ensemble  précédent  des  exceptions  activées
       lorsqu’elles  réussissent,  et  -1  sinon.  La  fonction  fegetexcept()
       renvoie l’ensemble des exceptions actuellement activées.

VOIR AUSSI

       feature_test_macros(7)

COLOPHON

       Cette page fait partie de  la  publication  2.80  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».