[Actualités]
YouTube affiche de plus en plus de publicités sur la plateforme.
[Actualités]
Google a payé des milliards d'euros d'amendes ... 2 % du budget de l'Union euro...
[Actualités]
Trump veut monétiser ses propres publications. Jusqu'à 100 000 dollars par moi...
[Actualités]
Google travaille d'urgence à la correction des problèmes de Chrome.
[Actualités]
Un test révèle la vérité sur Windows 11 : L'OS demanderait 16 Go pour une ut...
[Actualités]
L'iPad mini deviendra plus cher, mais sera doté d'un écran OLED.
[Actualités]
Apple va augmenter le prix de l'iPhone 18 Pro
[Actualités]
Test Stray (Nintendo Switch 2) - Chat pristi !
[Actualités]
Une PS5 avec un système alternatif ? La récompense pour cette solution est de ...
[Actualités]
Piles amovibles : l’UE exempte les montres connectées et les traqueurs d’ac...
[Articles]
Railroad Corporation 2
[Articles]
Magic Exposure - Yuri Visual Novel
[Articles]
Renforcer la cybersécurité et la résilience énergétique Européenne : ESET ...
[Articles]
Pick a Papa tome 1
[Articles]
Berserk tome 43
[Articles]
The Strange Pictures tome 2
[Articles]
The Strange Pictures tome 1
[Articles]
Unit4 lance « AI for Your World », une initiative sans engagement destinée au...
[Articles]
ESET Research découvre des vulnérabilités dans les shims UEFI compromettant l...
[Articles]
Secret Paws - Cozy Appartements
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
Réseaux et Télécom
Edpnet
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
Actualités
-
Archives
Vidéo
20-07
YouTube affiche de plus en plus de publicités sur la plateforme.
Droit
20-07
Google a payé des milliards d'euros d'amendes ... 2 % du budget de l'Union européenne pour 2026 !
Social
20-07
Trump veut monétiser ses propres publications. Jusqu'à 100 000 dollars par mois pour un accès anticipé.
Navigateurs
20-07
Google travaille d'urgence à la correction des problèmes de Chrome.
Windows
20-07
Un test révèle la vérité sur Windows 11 : L'OS demanderait 16 Go pour une utilisation optimale
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