_MATHERR |
Erreur mathématique |
---|---|
Turbo C | math.h |
Syntaxe
double _matherr(_mexcep why, char *fun, double *arglp, double *arg2p, double retval); |
Description
Cette fonction permet d'effectuer la gestion des erreurs en virgule flottante.
Remarques
- La fonction _matherr sert de point focal pour la gestion des erreurs dans toutes les fonctions de la bibliothèque mathématique; il appelle la fonction matherr et traite la valeur de retour de matherr.
- La fonction _matherr ne doit jamais être appelé directement par les programmes utilisateur. Au lieu de cela, la gestion des erreurs de la bibliothèque mathématique peut être personnalisée en remplaçant la bibliothèque matherr.
- Chaque fois qu'une erreur se produit dans l'une des routines de la bibliothèque mathématique, la fonction _matherr est appelé avec plusieurs paramètres. La fonction _matherr fait quatre choses : elle utilise ses paramètres pour remplir une structure d'exception, elle appelle la fonction matherr avec e, un pointeur vers la structure d'exception, pour voir si la fonction matherr peut résoudre l'erreur, elle examine la valeur de retour de la fonction matherr comme suit : Si matherr renvoie 0 (indiquant que matherr n'a pas pu résoudre l'erreur), la fonction _matherr définit errno et affiche un message d'erreur. Si la fonction matherr renvoie une valeur différente de zéro (indiquant que matherr a pu résoudre l'erreur), la fonction _matherr est silencieux; il ne définit pas errno et n'affiche aucun message.
- Elle renvoie e -> retval à l'appelant d'origine. Notez que matherr peut modifier e -> retval pour spécifier la valeur qu'il veut propager à l'appelant d'origine.
- Lorsque la fonction _matherr définit errno (basé sur un retour 0 de la fonction matherr), il cartographie le type d'erreur s'étant produit (à partir du champ type dans la structure d'exception) sur une valeur errno de EDOM ou ERANGE.
- La fonction _matherr renvoie la valeur e -> retval. Cette valeur est initialement la valeur du paramètre d'entrée retval passé à _matherr et peut être modifiée par matherr.
- Pour les résultats de fonction mathématique d'une magnitude supérieure à MAXDOUBLE, le paramètre retval utilise par défaut la macro HUGE_VAL du signe approprié avant d'être passé à _matherr.
- Pour les résultats de fonction mathématique d'une magnitude inférieure à MINDOUBLE, le paramètre retval est défini sur 0, puis transmis à _matherr. Dans ces deux extrêmes, si matherr ne modifie pas e -> retval, la fonction _matherr définit errno sur ERANGE (Result out of range).
Dernière mise à jour : Vendredi, le 26 Février 2021