Le terme fenv signifie « Floating point ENVironment ». Cette librairie, introduite par le standard C99,
donne accès à l'environnement de calcul en virgule flottante : indicateurs d'exception, directions d'arrondi et
sauvegarde/restauration de l'environnement courant.
Les fonctions de cette librairie sont surtout utiles pour du code numérique sensible : vérification d'un débordement, contrôle d'une division par zéro, changement temporaire de mode d'arrondi ou conservation des indicateurs d'erreur autour d'un calcul.
<fenv.h>,
de fonction POSIX supplémentaire comparable à ce que l'on trouve dans d'autres entêtes.
#include <fenv.h> // <cfenv> en C++
La table suivante récapitule les principaux éléments proposés par <fenv.h>. Les nouveautés C23 sont
indiquées explicitement, car elles ne sont pas encore disponibles partout.
| Nom | Type | Description | Depuis |
|---|---|---|---|
__STDC_VERSION_FENV_H__ |
macro | Indique la version de l'entête <fenv.h>. |
C23 |
fexcept_t |
type | Représente un état sauvegardé d'indicateurs d'exception. | C99 |
fenv_t |
type | Représente l'environnement dynamique complet en virgule flottante. | C99 |
femode_t |
type | Représente les modes de contrôle dynamiques de l'environnement flottant. | C23 |
FE_* |
macros | Décrivent les indicateurs d'exception flottante. | C99/C23 |
FE_* |
macros | Décrivent les directions d'arrondi. | C99/C23 |
FE_DEC_* |
macros | Décrivent les directions d'arrondi pour les flottants décimaux. | C23 |
FE_DFL_ENV |
macro | Représente l'environnement flottant installé au démarrage du programme. | C99 |
FE_DFL_MODE |
macro | Représente l'état par défaut des modes de contrôle dynamiques. | C23 |
FENV_ACCESS |
pragma | Informe le compilateur que le code manipule l'environnement flottant. | C99 |
FENV_ROUND |
pragma | Permet de fixer une direction d'arrondi constante pendant la traduction. | C23 |
FENV_DEC_ROUND |
pragma | Equivalent décimal du pragma FENV_ROUND. |
C23 |
feclearexcept, fegetexceptflag, feraiseexcept, fesetexcept, fesetexceptflag, fetestexcept, fetestexceptflag |
fonctions | Permettent de gérer les indicateurs d'exception. | C99/C23 |
fegetround, fesetround |
fonctions | Permettent de consulter ou modifier la direction d'arrondi dynamique. | C99 |
fegetenv, fegetmode, feholdexcept, fesetenv, fesetmode, feupdateenv |
fonctions | Permettent de sauvegarder, restaurer ou mettre à jour l'environnement flottant. | C99/C23 |
fe_dec_getround, fe_dec_setround |
fonctions | Permettent de gérer la direction d'arrondi des flottants décimaux. | C23 |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :