[Actualités]
Sony modifie les règles du PSN. PlayStation renforce la surveillance des joueurs.
[Actualités]
GitHub confirme une cyberattaque.
[Actualités]
Intel interrompt la fourniture de ses anciens processeurs et oblige ses partenai...
[Actualités]
Gemini Omni peut créer un film à partir de quasiment n'importe quoi
[Actualités]
Google dévoile Gemini Spark. Il s'agit d'une intelligence artificielle qui effe...
[Actualités]
Vous voulez de l'IA dans Firefox ? Vous l'aurez.
[Actualités]
Transformez vos photos en mini-jeux avec Pictonico
[Actualités]
Les joueurs Xbox réclament davantage de jeux exclusifs, un mode multijoueur gra...
[Actualités]
Test Hades II (PS5) - Retour mouvementé dans la mythologie grecque
[Actualités]
Mozilla avertit le Royaume-Uni : le blocage des VPN ne fonctionnera pas.
[Articles]
ESET investit € 40 millions dans l’IA pour contrer la surface d'attaque en exp...
[Articles]
Corner Kitchen Fast Food Simulator
[Articles]
Shangri-La Frontier tome 20
[Articles]
Promenons-nous dans l'espace tome 3
[Articles]
Metropolia tome 2 : Les bordures extérieures
[Articles]
Sayonara Wild Hearts - Nintendo Switch 2 Edition
[Articles]
Emma & Amir : Dans l'ombre de la terreur
[Articles]
Me & Roboco tome 1
[Articles]
Esquisses de nos coeurs en devenir tome 1
[Articles]
Kiln
Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion
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
Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion
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
Newsletter
Recevez les dernières actualités tech directement dans votre boîte mail.
S'inscrire
Forum
-
Derniers messages
Bavardages
Séries TV, vous regardez quoi?
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Informations
Besoin d’avis sur l’UX de mon mini-projet web (et plus globalement sur ce qui vous rebute sur un site) ?
Software
problème sur windows 10
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?
Actualités
-
Archives
Consoles
20-05
Sony modifie les règles du PSN. PlayStation renforce la surveillance des joueurs.
Sécurité
20-05
GitHub confirme une cyberattaque.
Intel
20-05
Intel interrompt la fourniture de ses anciens processeurs et oblige ses partenaires à passer aux puces 18A.
Google
20-05
Gemini Omni peut créer un film à partir de quasiment n'importe quoi
Google
20-05
Google dévoile Gemini Spark. Il s'agit d'une intelligence artificielle qui effectue des tâches pour les utilisateurs.
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-2026
Akretio
SRL - Generated via
Kelare
Haut de page