Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
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
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
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 ?