Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
[Actualités]
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
[Actualités]
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
[Actualités]
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tr...
[Actualités]
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélÃ...
[Actualités]
WhatsApp nous permet désormais de réagir à un message en « tirant des confet...
[Actualités]
Les pliables ne décollent pas ? Samsung réduit ses plans de production
[Actualités]
PS5, Sony bannit-il les utilisateurs qui utilisent le navigateur "caché" de la ...
[Actualités]
Test The Thing Remastered (PS5) - Une refonte du classique de 2002
[Actualités]
L'iPhone le plus fin de tous les temps sera aussi le moins cher : ce que l'on sa...
[Articles]
Legacy of Kain Soul Reaver 1&2 Remastered
[Articles]
The Thing Remastered
[Articles]
Mario & Luigi : L'épopée fraternelle
[Articles]
Deel acquiert la plateforme mondiale de gestion de la rémunération Assemble
[Articles]
Xuan Yuan Sword: The Gate of Firmament
[Articles]
Cyber-sécurité : bilan 2024 et regard vers 2025 par Andy Garth, directeur Aff...
[Articles]
Diesel Legacy: The Brazen Age
[Articles]
FANTASIAN Neo Dimension
[Articles]
Fairy Tail 2
[Articles]
Réseaux sociaux inondés d'arnaques deepfake ; Formbook, voleur d'informations ...
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, fedisableexcept, feenableexcept, fegetexcept - Gestion des exceptions C99 pour les arrondis et les erreurs en virgule flottante. [size=18] [b]Résumé[/b] [/size] .nf [b]#include
[/b] [b][i]void feclearexcept(int excepts );[/i][/b] [b][/b] [b][i]void fegetexceptflag(fexcept_t * flagp , int excepts );[/i][/b] [b][/b] [b][i]void feraiseexcept(int excepts );[/i][/b] [b][/b] [b][i]void fesetexceptflag(const fexcept_t * flagp , int excepts );[/i][/b] [b][/b] [b][i]int fetestexcept(int excepts );[/i][/b] [b]int fegetround(void);[/b] [b][/b] [b][i]int fesetround(int rounding_mode );[/i][/b] [b][i]void fegetenv(fenv_t * envp );[/i][/b] [b][/b] [b][i]int feholdexcept(fenv_t * envp );[/i][/b] [b][/b] [b][i]void fesetenv(const fenv_t * envp );[/i][/b] [b][/b] [b][i]void feupdateenv(const fenv_t * envp );[/i][/b] .fi [size=18] [b]Description[/b] [/size] Ces onze fonctions ont été définies dans le C99, et permettent de paramétrer les arrondis et les gestions d'erreurs (débordement, division par zéro, etc.) en virgule flottante. [b]Exceptions[/b] L'exception DivideByZero se produit quand une opération sur des nombres finis donne un infini comme réponse exacte. L'exception Overflow se produit quand un résultat doit être représenté par un nombre en virgule flottante, mais que sa valeur absolue est trop grande pour être représentée par un nombre fini. L'exception Underflow se produit quand un résultat doit être représenté par un nombre en virgule flottante, mais que sa valeur absolue est trop petite pour être représentée. 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-infi ou sqrt(-1). [b]Gestion des exceptions[/b] Les exceptions sont représentées de deux manières : en tant qu'un unique bit (exception présente ou absente) correspondant 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 véhiculer plus d'information concernant l'exception (éventuellement l'adresse du code déclenchant l'erreur). Chacune des macros [b]FE_DIVBYZERO ,[/b] [b]FE_INEXACT ,[/b] [b]FE_INVALID ,[/b] [b]FE_OVERFLOW ,[/b] [b]FE_UNDERFLOW[/b] est définie lorsque l'implémentation supporte la gestion de 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 [b]FE_OVERFLOW | FE_UNDERFLOW .[/b] D'autres exceptions peuvent être supportées. La macro [b]FE_ALL_EXCEPT[/b] est un masque regroupant par OU binaire tous les bits des exceptions supportées. La fonction [b]feclearexcept[/b] efface les exceptions supportées représentées par les bits présents dans son argument. La fonction [b]fegetexceptflag[/b] stocke une représentation de l'état des exceptions contenues dans son argument [i]excepts[/i] dans l'objet opaque [i]* flagp .[/i] La fonction [b]feraiseexcept[/b] déclenche les exceptions supportées représentées par les bits de l'argument [b]excepts .[/b] La fonction [b]fesetexceptflag[/b] fixe l'état des exceptions représentées par l'argument [i]excepts[/i] en employant la valeur [i]* flagp .[/i] Cette dernière doit être le résultat d'un appel préalable à [b]fegetexceptflag[/b] avec un dernier argument contenant au moins tous les bits présents dans [b]excepts .[/b] La fonction [b]fetestexcept[/b] renvoie un mot dont les bits également présents dans l'argument [i]excepts[/i] seront positionnés si l'exception correspondante est présente. [b]Arrondis[/b] Chacune des macros [b]FE_DOWNWARD ,[/b] [b]FE_TONEAREST ,[/b] [b]FE_TOWARDZERO ,[/b] [b]FE_UPWARD[/b] est définie lorsque l'implémentation supporte l'usage de la direction d'arrondi correspondante. La fonction [b]fegetround[/b] renvoie la macro correspondant au mode d'arrondi en cours. La fonction [b]fesetround[/b] fixe le mode d'arrondi tel qu'il est spécifié par son argument et renvoie zéro lorsqu'elle réussit. [b]Environnement en virgule flottante.[/b] L'environnement de travail en virgule flottante, y compris les modes de contrôle et les états peuvent être manipulés sous forme d'un objet opaque de type [b]fenv_t .[/b] L'environnement par défaut, est représenté par [b]FE_DFL_ENV[/b] (de type [b]const fenv_t * ).[/b] Il s'agit de la configuration de l'environnement au démarrage du programme et elle est définie par ISO C comme ayant un arrondi au plus proche, toutes les exceptions effacées et un mode non-stop (continuer sur exception). La fonction [b]fegetenv[/b] sauve l'environnement de travail en virgule flottante en cours dans l'objet [i]* envp .[/i] La fonction [b]feholdexcept[/b] effectue la même chose, puis efface tous les drapeaux d'exceptions, et bascule si possible sur un mode non-stop (continuer en présence d'exceptions). Elle renvoie zéro si elle réussit. La fonction [b]fesetenv[/b] recharge l'environnement de travail en virgule flottante à partir de l'objet [i]* envp .[/i] Cette objet doit être valide, c'est à dire être le résultat de [b]fegetenv ,[/b] de [b]feholdexcept[/b] ou égal à [b]FE_DFL_ENV .[/b] Cet appel ne déclenche pas les exceptions. La fonction [b]feupdateenv[/b] installe l'environnement en virgule flottante représenté par l'objet [i]* envp ,[/i] sauf que les exceptions déjà déclenchées ne sont pas effacées. Après l'appel de cette fonction, les exception déclenchées seront un OU binaire entre l'ensemble précédent, et celui contenu dans [i]* envp .[/i] Comme précédemment, l'objet pointé par [i]envp[/i] doit être valide. [size=18] [b]DÉtails gnu[/b] [/size] Si possible, la bibliothèque Gnu LibC définit une macro [b]FE_NOMASK_ENV[/b] qui représente l'environnement quand toutes les exceptions déclenchent un appel. On peut tester la présence de cette macro en utilisant [b]#ifdef .[/b] Elle n'est définie que si la constante symbolique [b]_GNU_SOURCE[/b] est définie. Le standard C99 ne définit pas de manière de fixer des bits individuels dans le masque, par exemple pour intercepter des exceptions particulières. La GLibC 2.2 supporte [i]feenableexcept[/i] et [i]fedisableexcept[/i] pour fixer individuellement des interceptions, et [i]fegetexcept[/i] pour demander l'état. .nf [b]#define _GNU_SOURCE[/b] [b][/b] [b]#include
[/b] [b][i]int feenableexcept (int excepts );[/i][/b] [b][/b] [b][i]int fedisableexcept (int excepts );[/i][/b] [b][/b] [b][i]int fegetexcept (void);[/i][/b] [b][/b] .fi Les fonctions [b]feenableexcept[/b] et [b]fedisableexcept[/b] activent (désactivent) l'interception pour chaque exception représentée par [i]excepts[/i] et renvoient l'ensemble précédent des exceptions activées lorsqu'elle réussissent, et -1 sinon. La fonction [b]fegetexcept[/b] renvoie l'ensemble des exceptions actuellement activées. [size=18] [/size] Effectuez l'édition des liens avec l'option [b]-lm .[/b] [size=18] [b]Conformité[/b] [/size] IEC 60559 (IEC 559:1989), ANSI/IEEE 854, ISO C99 (ISO/IEC 9899:1999). [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 2000-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Windows
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
Jeux Vidéos
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
Tablettes
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
Google
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tracker de Google
Consoles
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélés par un leaker ?
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?