Man page - math_error(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ja ru ro deManual
math_error
NOMSYNOPSIS
DESCRIPTION
Erreur de domaine
Erreur de pĂŽle
Erreur dâintervalle
NOTES
VOIR AUSSI
TRADUCTION
NOM
math_error - Détecter des erreurs des fonctions mathématiques
SYNOPSIS
#include
<math.h>
#include <errno.h>
#include <fenv.h>
DESCRIPTION
Quand une erreur se produit, la plupart des fonctions de bibliothĂšques lâindiquent en renvoyant une valeur spĂ©ciale (par exemple, -1 ou NULL). Parce quâelles renvoient en gĂ©nĂ©ral un nombre en virgule flottante, les fonctions mathĂ©matiques dĂ©clarĂ©es dans <math.h> indiquent une erreur en utilisant dâautres mĂ©canismes. Il y a deux mĂ©canismes dâindication dâerreur : lâancien configure errno ; le nouveau utilise le mĂ©canisme dâexception de virgule flottante (lâutilisation de feclearexcept (3) et fetestexcept (3), comme explicitĂ© ci-dessous) dĂ©crit dans fenv (3).
Un programme portable qui doit vĂ©rifier les erreurs dâune fonction mathĂ©matique devrait mettre errno Ă zĂ©ro et effectuer lâappel suivant :
feclearexcept(FE_ALL_EXCEPT);
avant dâappeler une fonction mathĂ©matique.
AprĂšs le retour dâune fonction mathĂ©matique, si errno est non nul ou si lâappel suivant (consultez fenv (3)) ne renvoie pas zĂ©ro :
fetestexcept(FE_INVALID
| FE_DIVBYZERO | FE_OVERFLOW |
FE_UNDERFLOW);
alors une erreur sâest produite dans la fonction mathĂ©matique.
Les conditions dâerreur qui peuvent se produire pour les fonctions mathĂ©matiques sont dĂ©crites ci-dessous.
Erreur de domaine
Une erreur de domaine se produit quand une fonction mathĂ©matique reçoit un paramĂštre dont la valeur se trouve en dehors du domaine de dĂ©finition de la fonction (par exemple, fournir un paramĂštre nĂ©gatif Ă log (3)). Lorsquâune erreur de domaine se produit, les fonctions renvoient gĂ©nĂ©ralement un NaN (mais certaines fonctions renvoient une valeur diffĂ©rente dans ce cas) ; errno prend la valeur EDOM et une exception de virgule flottante « incorrecte » ( FE_INVALID ) est levĂ©e.
Erreur de pĂŽle
Une erreur de pĂŽle se produit quand le rĂ©sultat mathĂ©matique dâune fonction est un infini (par exemple, le logarithme de 0 est lâinfini nĂ©gatif). Quand une erreur de pĂŽle se produit, la fonction renvoie la valeur (signĂ©e) HUGE_VAL , HUGE_VALF ou HUGE_VALL suivant que la valeur de retour de la fonction est un double , un float ou un long double . Le signe du rĂ©sultat est celui du rĂ©sultat correct de la fonction mathĂ©matique. errno prend la valeur ERANGE et une exception de virgule flottante de division par zĂ©ro ( FE_DIVBYZERO ) est levĂ©e.
Erreur dâintervalle
Une erreur dâintervalle se produit quand le module du rĂ©sultat de la fonction ne peut pas ĂȘtre reprĂ©sentĂ© par le type utilisĂ© pour le rĂ©sultat de la fonction. La valeur de retour de la fonction dĂ©pend suivant quâil sâagit dâun dĂ©passement (« overflow ») ou dâun soupassement (« underflow »).
Un dĂ©passement se produit pour le rĂ©sultat flottant si le rĂ©sultat est fini, mais trop grand pour ĂȘtre reprĂ©sentĂ© dans le type du rĂ©sultat. Quand un dĂ©passement se produit, la fonction renvoie la valeur HUGE_VAL , HUGE_VALF ou HUGE_VALL , suivant que le type de retour de la fonction est un double , un float ou un long double . errno prend la valeur ERANGE et une exception de virgule flottante de dĂ©passement ( FE_OVERFLOW ) est levĂ©e.
Un soupassement se produit pour le rĂ©sultat flottant si le rĂ©sultat est trop petit pour ĂȘtre reprĂ©sentĂ© dans le type du rĂ©sultat. Quand un soupassement se produit, une fonction mathĂ©matique renvoie gĂ©nĂ©ralement 0,0 (C99 indique quâune fonction doit renvoyer « une valeur propre Ă lâimplĂ©mentation dont le module nâest pas plus grand que la plus petite valeur normalisĂ©e positive du type donné »). errno prend la valeur ERANGE et une exception de virgule flottante de « soupassement » ( FE_UNDERFLOW ) peut ĂȘtre levĂ©e.
Certaines fonctions produisent une erreur dâintervalle si la valeur du paramĂštre fourni, ou le rĂ©sultat exact de la fonction, est dĂ©normalisĂ© (« subnormal »). Une valeur dĂ©normalisĂ©e est une valeur qui nâest pas nulle, mais dont le module est si petit quâil ne peut ĂȘtre reprĂ©sentĂ© dans la forme normalisĂ©e (câest-Ă -dire avec un 1 dans le bit de poids fort de la mantisse). La reprĂ©sentation dâun nombre dĂ©normalisĂ© contiendra un ou plusieurs zĂ©ros en tĂȘte de la mantisse.
NOTES
Lâidentifiant math_errhandling spĂ©cifiĂ© par C99 et POSIX.1 nâest pas pris en charge par la glibc. Cet identifiant est supposĂ© indiquer lequel des deux mĂ©canismes dâindication dâerreur est utilisĂ© ( errno ou des exceptions rĂ©cupĂ©rables avec fettestexcept (3)). Les normes imposent quâau moins lâun dâentre eux soit utilisĂ©, mais autorisent Ă ce que les deux soient disponibles. La situation actuelle de la glibc (version 2.8) nâest pas trĂšs propre. La plupart des fonctions (mais pas toutes) lĂšvent des exceptions en cas dâerreur. Certaines positionnent Ă©galement errno . Quelques fonctions positionnent errno , mais ne lĂšvent pas dâexception. TrĂšs peu ne font ni lâun ni lâautre. Consultez les diffĂ©rentes pages de manuel pour avoir les dĂ©tails.
Pour Ă©viter la complexitĂ© dâavoir Ă utiliser errno et fetestexcept (3) pour la dĂ©tection dâerreurs, il est souvent recommandĂ© de vĂ©rifier la validitĂ© des paramĂštres avant les appels. Par exemple, le code suivant sâassure que le paramĂštre de log (3) nâest ni un NaN, ni zĂ©ro (une erreur de pĂŽle) ou infĂ©rieur Ă zĂ©ro (une erreur de domaine) :
double x, r;
if (isnan(x) || islessequal(x, 0)) {
/* Traite un NaN / erreur de pĂŽle / erreur de domaine
*/
}
r = log(x);
La discussion sur cette page ne sâapplique pas aux fonctions mathĂ©matiques Ă variables complexes (câest-Ă -dire celles dĂ©clarĂ©es par <complex.h> ), pour lesquelles C99 et POSIX.1 nâexigent pas en gĂ©nĂ©ral de renvoyer dâerreurs.
Lâoption de gcc (1) -fno-math-errno permet dâutiliser des implĂ©mentations de certaines fonctions mathĂ©matiques plus rapides que les implĂ©mentations standard, mais qui ne positionnent pas errno (lâoption -ffast-math de gcc (1) active Ă©galement -fno-math-errno ). Une erreur peut toujours ĂȘtre testĂ©e en utilisant fetestexcept (3).
VOIR AUSSI
gcc (1), errno (3), fenv (3), fpclassify (3), INFINITY (3), isgreater (3), matherr (3), nan (3)
info libc
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .