Namespaces
Variants

Floating-point environment (since C++11)

From cppreference.net
Floating-point environment
Functions
(C++11) (C++11)
(C++11) (C++11)
Macro constants
(C++11)

L'environnement en virgule flottante est l'ensemble des indicateurs d'état et des modes de contrôle en virgule flottante pris en charge par l'implémentation. Il est local au thread. Chaque thread hérite de l'état initial de son environnement en virgule flottante depuis le thread parent. Les opérations en virgule flottante modifient les indicateurs d'état en virgule flottante pour indiquer des résultats anormaux ou des informations auxiliaires. L'état des modes de contrôle en virgule flottante affecte les résultats de certaines opérations en virgule flottante.

L'accès et la modification de l'environnement en virgule flottante n'ont de sens que lorsque #pragma STDC FENV_ACCESS est pris en charge et défini sur ON . Sinon, l'implémentation est libre de supposer que les modes de contrôle en virgule flottante sont toujours ceux par défaut et que les indicateurs d'état en virgule flottante ne sont jamais testés ou modifiés. En pratique, peu de compilateurs actuels, tels que HP aCC, Oracle Studio ou IBM XL, prennent en charge explicitement le #pragma , mais la plupart des compilateurs permettent néanmoins un accès significatif à l'environnement en virgule flottante.

Table des matières

Types

Défini dans l'en-tête <cfenv>
fenv_t
(C++11)
le type représentant l'environnement complet en virgule flottante
(typedef)
fexcept_t
(C++11)
le type représentant collectivement tous les indicateurs d'état en virgule flottante
(typedef)

Fonctions

efface les indicateurs d'état en virgule flottante spécifiés
(fonction)
détermine quels indicateurs d'état en virgule flottante spécifiés sont activés
(fonction)
déclenche les exceptions en virgule flottante spécifiées
(fonction)
copie l'état des indicateurs d'état en virgule flottante spécifiés depuis ou vers l'environnement en virgule flottante
(fonction)
(C++11) (C++11)
obtient ou définit la direction d'arrondi
(fonction)
sauvegarde ou restaure l'environnement en virgule flottante actuel
(fonction)
sauvegarde l'environnement, efface tous les indicateurs d'état et ignore toutes les erreurs futures
(fonction)
restaure l'environnement en virgule flottante et déclenche les exceptions précédemment levées
(fonction)

Macros

exceptions en virgule flottante
(constante macro)
direction d'arrondi en virgule flottante
(constante macro)
(C++11)
environnement par défaut en virgule flottante
(constante macro)

Notes

Les exceptions en virgule flottante ne sont pas liées aux exceptions C++. Lorsqu'une opération en virgule flottante déclenche une exception en virgule flottante, l'état de l'environnement de virgule flottante change, ce qui peut être vérifié avec std::fetestexcept , mais l'exécution d'un programme C++ sur la plupart des implémentations se poursuit sans interruption.

Il existe des extensions de compilateur qui peuvent être utilisées pour générer automatiquement des exceptions C++ chaque fois qu'une exception de virgule flottante est déclenchée :

  • Fonction GNU libc feenableexcept() active le piégeage des exceptions en virgule flottante, ce qui génère le signal SIGFPE . Si l'option du compilateur -fnon-call-exceptions a été utilisée, le gestionnaire de ce signal peut lever une exception C++ définie par l'utilisateur.
  • Fonction MSVC _control87() active le piégeage des exceptions en virgule flottante, ce qui génère une exception matérielle, qui peut être convertie en exceptions C++ avec _set_se_translator .

Voir aussi

Documentation C pour Environnement de virgule flottante