Provided by: manpages-fr-dev_2.64.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).

       Each  of  the macros FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW,
       FE_UNDERFLOW is defined when the implementation  supports  handling  of
       the  corresponding  exception, and if so then defines the corresponding
       bit(s), so that one can call exception handling functions, for example,
       using  the integer argument FE_OVERFLOW|FE_UNDERFLOW.  Other exceptions
       may be supported.  The macro FE_ALL_EXCEPT is the  bitwise  OR  of  all
       bits corresponding to supported exceptions.

       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.

       The  fesetenv()   function restores the floating point environment from
       the object *envp.  This object must be known to be valid, for  example,
       the  result  of  a  call  to fegetenv()  or feholdexcept()  or equal to
       FE_DFL_ENV.  This call does not raise exceptions.

       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 pointé  par  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 à propos de la glibc
       If possible, the GNU C Library  defines  a  macro  FE_NOMASK_ENV  which
       represents an environment where every exception raised causes a trap to
       occur.  You can test for this macro using #ifdef.  It is  only  defined
       if  _GNU_SOURCE  is defined.  The C99 standard does not define a way to
       set individual bits in the floating point mask, for example, to trap on
       specific flags.  glibc 2.2 supports the functions feenableexcept()  and
       fedisableexcept()   to  set  individual  floating  point   traps,   and
       fegetexcept()  to query the state.

       #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)

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> ».