.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 2000-08-14 added GNU additions from Andreas Jaeger .\" 2000-12-05 some changes inspired by acahalan's remarks .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fenv 3 "20 lipca 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- zaokrąglanie zmiennoprzecinkowe i obsługa wyjątków .SH BIBLIOTEKA Biblioteka matematyczna (\fIlibm\fP, \fI\-lm\fP) .SH SKŁADNIA .nf \fB#include \fP .PP \fBint feclearexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexceptflag(fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint feraiseexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fesetexceptflag(const fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint fetestexcept(int \fP\fIexcepts\fP\fB);\fP .PP \fBint fegetround(void);\fP \fBint fesetround(int \fP\fIrounding_mode\fP\fB);\fP .PP \fBint fegetenv(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feholdexcept(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint fesetenv(const fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feupdateenv(const fenv_t *\fP\fIenvp\fP\fB);\fP .fi .SH OPIS Tych jedenaście funkcji zdefiniowanych w C99 realizuje obsługę zmiennoprzecinkowego zaokrąglania i wyjątków (nadmiar, dzielenie przez zero, itp.). .SS Wyjątki Wyjątek \fIdivide\-by\-zero\fP (dzielenie przez zero) występuje, gdy dokładnym wynikiem operacji na liczbach skończonych jest nieskończoność. .PP Wyjątek \fIoverflow\fP (nadmiar) występuje, gdy wynik musi być przedstawiony jako liczba zmiennoprzecinkowa, ale ma on (dużo) większą wartość bezwzględną niż największa (skończona) liczba zmiennoprzecinkowa mająca przedstawienie. .PP Wyjątek \fIunderflow\fP (niedomiar) występuje, gdy wynik musi być przedstawiony jako liczba zmiennoprzecinkowa, ale ma mniejszą wartość bezwzględną niż najmniejsza dodatnia znormalizowana liczba zmiennoprzecinkowa (i nastąpiłaby duża utrata precyzji, gdyby przedstawić go jako liczbę nieznormalizowaną). .PP Wyjątek \fIinexact\fP (niedokładny) występuje, gdy wynik operacji zaokrąglenia nie jest równy wynikowi o nieskończonej precyzji. Może on towarzyszyć wystąpieniu \fIoverflow\fP lub \fIunderflow\fP. .PP Wyjątek \fIinvalid\fP (nieprawidłowy) występuje, gdy operacja nie ma dobrze zdefiniowanego wyniku, przykłady: 0/0, nieskończoność \- nieskończoność lub sqrt(\-1). .SS "Obsługa wyjątków" Wyjątki są reprezentowane na dwa sposoby: jako pojedyncze bity (wyjątek obecny/nieobecny), które to bity odpowiadają w pewien zależny od implementacji sposób pozycjom bitowym w liczbie całkowitej, i jako nieprzezroczysta struktura, która może zawierać więcej informacji o wyjątkach (zapewne adres kodu, gdzie wyjątek wystąpił). .PP Każde z makr \fBFE_DIVBYZERO\fP, \fBFE_INEXACT\fP, \fBFE_INVALID\fP, \fBFE_OVERFLOW\fP, \fBFE_UNDERFLOW\fP jest zdefiniowane, gdy implementacja wspiera obsługę odpowiedniego wyjątku, i wówczas definiuje odpowiedni(e) bit(y), umożliwiając wywoływanie funkcji obsługi wyjątków, na przykład podając argument całkowity \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP. Dla innych wyjątków może nie być wsparcia. Makro \fBFE_ALL_EXCEPT\fP jest bitowym OR wszystkich bitów odpowiadającym wspieranym wyjątkom. .PP Funkcja \fBfeclearexcept\fP() zeruje wspierane wyjątki reprezentowane przez bity jej argumentu. .PP Funkcja \fBfegetexceptflag\fP() umieszcza odwzorowanie stanu znaczników przypisanych wyjątkom reprezentowanym przez argument \fIexcepts\fP w nieprzezroczystym obiekcie \fI*flagp\fP. .PP Funkcja \fBferaiseexcept\fP() zgłasza wspierane wyjątki reprezentowane przez bity \fIexcepts\fP. .PP Funkcja \fBfesetexceptflag\fP() ustawia pełny stan o wartości \fI*flagp\fP dla wyjątków reprezentowanych przez \fIexcepts\fP. Wartość ta musi być otrzymana jako wynik wcześniejszego wywołania \fBfegetexceptflag\fP() z ostatnim argumentem zawierającym wszystkie bity \fIexcepts\fP. .PP Funkcja \fBfetestexcept\fP() zwraca słowo z ustawionymi tymi bitami, które są ustawione w argumencie \fIexcepts\fP i dla których jest obecnie ustawiony odpowiedni wyjątek. .SS "Tryb zaokrąglania" Tryb zaokrąglania określa w jaki sposób traktuje się wynik operacji zmiennoprzecinkowej, jeśli nie może być on dokładnie reprezentowany w mantysie. Mogą być dostarczane różne tryby zaokrągleń: zaokrąglanie do najbliższej liczby (domyślnie), zaokrąglanie w górę (w kierunku dodatniej nieskończoności), zaokrąglanie w dół (w kierunku ujemnej nieskończoności) i zaokrąglanie w kierunku zera. .PP Każde z makr \fBFE_TONEAREST\fP, \fBFE_UPWARD\fP, \fBFE_DOWNWARD\fP oraz \fBFE_TOWARDZERO\fP jest zdefiniowane, gdy implementacja wspiera pobieranie i ustawianie odpowiedniego kierunku zaokrąglania. .PP Funkcja \fBfegetround\fP() zwraca makro odpowiadające bieżącemu trybowi zaokrąglania. .PP Funkcja \fBfesetround\fP() ustawia tryb zaokrąglania podany jako jej argument i zwraca zero, gdy się powiedzie. .PP C99 i POSIX.1\-2008 określają identyfikator \fBFLT_ROUNDS\fP definiowany w \fI\fP wskazujący na zależny od implementacji sposób zaokrąglania podczas dodawania zmiennoprzecinkowego. Identyfikator ten może przyjmować jedną z poniższych wartości: .TP \fB\-1\fP Nie można określić tryb zaokrąglania. .TP \fB0\fP Zaokrąglanie w kierunku 0. .TP \fB1\fP Zaokrąglanie w kierunku najbliższej liczby. .TP \fB2\fP Zaokrąglanie w kierunku dodatniej nieskończoności. .TP \fB3\fP Zaokrąglanie w kierunku ujemnej nieskończoności. .PP Inne wartości oznaczają tryby zaokrąglania niestandardowe, zależne od architektury komputera. .PP Wartość \fBFLT_ROUNDS\fP powinna odzwierciedlać bieżący tryb zaokrąglania ustawiony przez \fBfesetround\fP() (patrz także USTERKI). .SS "Środowisko zmiennoprzecinkowe" Całe środowisko zmiennoprzecinkowe, włączając w to tryby sterowania i znaczniki stanu, może być obsługiwane jako jeden nieprzezroczysty obiekt typu \fIfenv_t\fP. Środowisko domyślne jest określone przez \fBFE_DFL_ENV\fP (typu \fIconst fenv_t\ *\fP). Są to ustawienia środowiska przy uruchomieniu programu i są one zdefiniowane przez ISO C jako: zaokrąglanie do najbliższej, wszystkie wyjątki wyzerowane i tryb nieprzerywany (kontynuacja w przypadku wystąpienia wyjątku). .PP Funkcja \fBfegetenv\fP() zachowuje bieżące środowisko zmiennoprzecinkowe w obiekcie \fI*envp\fP. .PP Funkcja \fBfeholdexcept\fP() robi to samo, a następnie zeruje wszystkie znaczniki wyjątków i ustawia tryb nieprzerywany (kontynuacja w przypadku wystąpienia wyjątku), o ile to możliwe. Zwraca zero, gdy się powiedzie. .PP Funkcja \fBfesetenv\fP() odtwarza środowisko zmiennoprzecinkowe z obiektu \fI*envp\fP. Obiekt ten musi być znany jako poprawny, na przykład jako wynik wywołania \fBfegetenv\fP() lub \fBfeholdexcept\fP() lub jako równy \fBFE_DFL_ENV\fP. To wywołanie nie zgłasza wyjątków. .PP Funkcja \fBfeupdateenv\fP() instaluje środowisko zmiennoprzecinkowe odwzorowane w obiekcie \fI*envp\fP, poza tym, że obecnie zgłoszone wyjątki nie są zerowane. Po jej wywołaniu, zgłoszone wyjątki będą bitowym OR tych zgłoszonych wcześniej oraz zawartych w \fI*envp\fP. Jak poprzednio, obiekt \fI*envp\fP musi być znany jako poprawny. .SH "WARTOŚĆ ZWRACANA" .\" Earlier seven of these functions were listed as returning void. .\" This was corrected in Corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E)) .\" of the C99 Standard. Funkcje te zwracają zero, gdy się powiodą, lub wartość niezerową, gdy wystąpi błąd. .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .nh .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBfeclearexcept\fP(), \fBfegetexceptflag\fP(), \fBferaiseexcept\fP(), \fBfesetexceptflag\fP(), \fBfetestexcept\fP(), \fBfegetround\fP(), \fBfesetround\fP(), \fBfegetenv\fP(), \fBfeholdexcept\fP(), \fBfesetenv\fP(), \fBfeupdateenv\fP(), \fBfeenableexcept\fP(), \fBfedisableexcept\fP(), \fBfegetexcept\fP() T} Bezpieczeństwo wątkowe T{ .na .nh MT\-bezpieczne T} .TE .sp 1 .hy .SH STANDARDY C11, POSIX.1\-2008, IEC 60559 (IEC 559:1989), ANSI/IEEE 854. .SH HISTORIA C99, POSIX.1\-2001. glibc 2.1. .SH UWAGI .SS "Uwagi dla glibc" If possible, the GNU C Library defines a macro \fBFE_NOMASK_ENV\fP which represents an environment where every exception raised causes a trap to occur. You can test for this macro using \fB#ifdef\fP. It is defined only if \fB_GNU_SOURCE\fP is defined. The C99 standard does not define a way to set individual bits in the floating\-point mask, for example, to trap on specific flags. Since glibc 2.2, glibc supports the functions \fBfeenableexcept\fP() and \fBfedisableexcept\fP() to set individual floating\-point traps, and \fBfegetexcept\fP() to query the state. .PP .nf \fB#define _GNU_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include \fP .PP \fBint feenableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fedisableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexcept(void);\fP .fi .PP Funkcje \fBfeenableexcept\fP() i \fBfedisableexcept\fP() włączają (wyłączają) pułapkowanie poszczególnych wyjątków odwzorowanych w przez \fIexcepts\fP i zwracają poprzednie ustawienie pułapkowania wyjątków, jeśli się powiodą, a \-1 w pozostałych przypadkach. Funkcja \fBfegetexcept\fP() zwraca bieżące ustawienie pułapkowania wyjątków. .SH USTERKI .\" Aug 08, glibc 2.8 .\" See http://gcc.gnu.org/ml/gcc/2002-02/msg01535.html C99 określa, że wartość \fBFLT_ROUNDS\fP powinna odzwierciedlać zmiany bieżącego trybu zaokrąglania ustawiane przez \fBfesetround\fP(). Obecnie to nie działa: \fBFLT_ROUNDS\fP ma zawsze wartość 1. .SH "ZOBACZ TAKŻE" \fBmath_error\fP(7) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz , Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .