.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl)
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" 2000-08-14 added GNU additions from Andreas Jaeger
.\" 2000-12-05 some changes inspired by acahalan's remarks
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH fenv 3 "5 février 2023" "Pages du manuel de Linux 6.03" 
.SH NOM
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag,
fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv,
feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- Gestion des
exceptions et des arrondis des nombres flottants
.SH BIBLIOTHÈQUE
Bibliothèque de math (\fIlibm\fP, \fI\-lm\fP)
.SH SYNOPSIS
.nf
\fB#include <fenv.h>\fP
.PP
\fBint feclearexcept(int \fP\fIexcepts\fP\fB);\fP
\fBint fegetexceptflag(fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP
\fBint feraiseexcept(int \fP\fIexcepts\fP\fB);\fP
\fBint fesetexceptflag(const fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP
\fBint fetestexcept(int \fP\fIexcepts\fP\fB);\fP
.PP
\fBint fegetround(void);\fP
\fBint fesetround(int \fP\fIrounding_mode\fP\fB);\fP
.PP
\fBint fegetenv(fenv_t *\fP\fIenvp\fP\fB);\fP
\fBint feholdexcept(fenv_t *\fP\fIenvp\fP\fB);\fP
\fBint fesetenv(const fenv_t *\fP\fIenvp\fP\fB);\fP
\fBint feupdateenv(const fenv_t *\fP\fIenvp\fP\fB);\fP
.fi
.SH 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épassement,
division par zéro,\ etc.) sur les nombres flottants.
.SS Exceptions
L'exception \fIdivide\-by\-zero\fP (division par zéro) se produit quand une
opération sur des nombres finis donne un résultat infini.
.PP
L'exception \fIoverflow\fP (dépassement) 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.
.PP
L'exception \fIunderflow\fP (soupassement) 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.
.PP
L'exception \fIinexact\fP 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 \fIoverflow\fP ou \fIunderflow\fP se produisent.
.PP
L'exception \fIinvalid\fP 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)\ ».
.SS "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épendant de 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).
.PP
Chacune des macros \fBFE_DIVBYZERO\fP, \fBFE_INEXACT\fP, \fBFE_INVALID\fP,
\fBFE_OVERFLOW\fP, \fBFE_UNDERFLOW\fP 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 \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP. D'autres exceptions peuvent
être supportées. La macro \fBFE_ALL_EXCEPT\fP est un masque au format OU
binaire correspondant à toutes les exceptions supportées.
.PP
La fonction \fBfeclearexcept\fP() efface les exceptions supportées représentées
par les bits de son argument.
.PP
La fonction \fBfegetexceptflag\fP() stocke une représentation de l'état des
exceptions contenues dans son argument \fIexcepts\fP dans l'objet opaque
\fI*flagp\fP.
.PP
La fonction \fBferaiseexcept\fP() déclenche les exceptions supportées,
représentées par les bits de son argument \fIexcepts\fP.
.PP
La fonction \fBfesetexceptflag\fP() définit l'état des exceptions représentées
par l'argument \fIexcepts\fP à la valeur \fI*flagp\fP. Cette valeur doit être le
résultat d'un appel préalable à \fBfegetexceptflag\fP() avec un dernier
argument contenant tous les bits dans \fIexcepts\fP.
.PP
La fonction \fBfetestexcept\fP() renvoie un mot dont les bits définis sont
également les bits définis dans l'argument \fIexcepts\fP et pour lesquels
l'exception correspondante est définie.
.SS "Mode d'arrondis"
Le mode d'arrondi détermine comment le résultat des opérations en virgule
flottante doit être traité quand le résultat ne peut pas être représenté
exactement dans la mantisse. Plusieurs modes d'arrondis peuvent être
fournis\ : arrondi au plus proche (le mode par défaut), arrondi vers le haut
(vers l'infini positif), arrondi vers le bas (vers l'infini négatif) et
l'arrondi vers zéro.
.PP
Chacune des macros \fBFE_TONEAREST\fP, \fBFE_UPWARD\fP, \fBFE_DOWNWARD\fP et
\fBFE_TOWARDZERO\fP est définie lorsque l'implémentation gère la définition et
la lecture de la direction d'arrondi correspondante.
.PP
La fonction \fBfegetround\fP() renvoie la macro correspondant au mode d'arrondi
en cours.
.PP
La fonction \fBfesetround\fP() définit le mode d'arrondi tel qu'il est spécifié
par son argument et renvoie zéro en cas de succès.
.PP
C99 et POSIX.1\-2008 spécifient un identifiant, \fBFLT_ROUNDS\fP, défini dans
\fI<float.h>\fP, qui indique le mode d'arrondi de l'implémentation pour
les additions en virgule flottante. Cet identifiant peut prendre une des
valeurs suivantes\ :
.TP 
\fB\-1\fP
Le mode d'arrondi est indéterminé.
.TP 
\fB0\fP
L'arrondi se fait vers 0.
.TP 
\fB1\fP
L'arrondi se fait vers le nombre le plus proche.
.TP 
\fB2\fP
L'arrondi se fait vers l'infini positif.
.TP 
\fB3\fP
L'arrondi se fait vers l'infini négatif.
.PP
Les autres valeurs sont dépendantes des machines, et ne sont pas des modes
d'arrondi standard.
.PP
La valeur de \fBFLT_ROUNDS\fP devrait refléter le mode d'arrondi en cours tel
qu'il est configuré par \fBfesetround\fP() (mais consultez la section des
BOGUES).
.SS "Environnement de virgule flottante"
L'environnement de 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
\fIfenv_t\fP. L'environnement par défaut est représenté par \fBFE_DFL_ENV\fP (de
type \fIconst fenv_t\ *\fP). 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).
.PP
La fonction \fBfegetenv\fP() sauve l'environnement de travail en cours en
virgule flottante dans l'objet \fI*envp\fP.
.PP
La fonction \fBfeholdexcept\fP() 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.
.PP
La fonction \fBfesetenv\fP() recharge l'environnement de travail en virgule
flottante à partir de l'objet \fI*envp\fP. Cet objet doit être valide,
c'est\-à\-dire être le résultat d'un appel à \fBfegetenv\fP() ou
\fBfeholdexcept\fP(), ou égal à \fBFE_DFL_ENV\fP. Cet appel ne déclenche pas
d'exception.
.PP
La fonction \fBfeupdateenv\fP() installe l'environnement de virgule flottante
représenté par l'objet \fI*envp\fP, 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 \fI*envp\fP. Comme précédemment, l'objet  \fI*envp\fP doit être
valide.
.SH "VALEUR RENVOYÉE"
.\" Earlier seven of these functions were listed as returning void.
.\" This was corrected in Corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E))
.\" of the C99 Standard.
Ces fonctions renvoient 0 en cas de succès et une valeur non nulle en cas
d'erreur.
.SH VERSIONS
Ces fonctions ont été ajoutées dans la glibc\ 2.1.
.SH ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
\fBattributes\fP(7).
.nh
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribut	Valeur
T{
\fBfeclearexcept\fP(),
\fBfegetexceptflag\fP(),
\fBferaiseexcept\fP(),
\fBfesetexceptflag\fP(),
\fBfetestexcept\fP(),
\fBfegetround\fP(),
\fBfesetround\fP(),
\fBfegetenv\fP(),
\fBfeholdexcept\fP(),
\fBfesetenv\fP(),
\fBfeupdateenv\fP(),
\fBfeenableexcept\fP(),
\fBfedisableexcept\fP(),
\fBfegetexcept\fP()
T}	Sécurité des threads	T{
MT\-Safe
T}
.TE
.hy
.ad
.sp 1
.hy
.SH STANDARDS
IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1\-2001.
.SH NOTES
.SS "Notes de la glibc"
Si possible, la bibliothèque GNU C définit une macro \fBFE_NOMASK_ENV\fP qui
représente un environnement où toutes les exceptions déclenchées entraînent
une interception. La présence de cette macro peut être testée en utilisant
\fB#ifdef\fP. Elle n'est définie que si \fB_GNU_SOURCE\fP est définie. Le standard
C99 ne définit pas de méthode pour positionner les bits individuels dans le
masque de virgule flottante, par exemple pour intercepter des drapeaux
particuliers. Depuis la glibc\ 2.2, la glibc gère \fBfeenableexcept\fP() et
\fBfedisableexcept\fP() pour définir individuellement des interceptions de
virgules flottantes, et \fBfegetexcept\fP() pour demander l'état.
.PP
.nf
\fB#define _GNU_SOURCE\fP         /* Voir feature_test_macros(7) */
\fB#include <fenv.h>\fP
.PP
\fBint feenableexcept(int \fP\fIexcepts\fP\fB);\fP
\fBint fedisableexcept(int \fP\fIexcepts\fP\fB);\fP
\fBint fegetexcept(void);\fP
.fi
.PP
Les fonctions \fBfeenableexcept\fP() et \fBfedisableexcept\fP() activent
(désactivent) les interceptions pour chaque exception représentée par
\fIexcepts\fP et renvoient l'ensemble précédent des exceptions activées
lorsqu'elles réussissent, et \-1 sinon. La fonction \fBfegetexcept\fP() renvoie
l'ensemble des exceptions actuellement activées.
.SH BOGUES
.\" Aug 08, glibc 2.8
.\" See http://gcc.gnu.org/ml/gcc/2002-02/msg01535.html
C99 spécifie que la valeur de \fBFLT_ROUNDS\fP devrait refléter les changements
du mode d'arrondi en cours, tels qu'il est configuré par
\fBfesetround\fP(). Actuellement, ce n'est pas le cas\ : \fBFLT_ROUNDS\fP prend
toujours la valeur 1.
.SH "VOIR AUSSI"
\fBmath_error\fP(7)
.PP
.SH TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Cédric Boutillier <cedric.boutillier@gmail.com>
.
.PP
Cette traduction est une documentation libre ; veuillez vous reporter à la
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License version 3
.UE
concernant les conditions de copie et 
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
.PP
Si vous découvrez un bogue dans la traduction de cette page de manuel, 
veuillez envoyer un message à
.MT debian-l10n-french@lists.debian.org
.ME .