Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag,
fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv,
feupdateenv - zaokrglanie zmiennoprzecinkowe i obsluga wyjtkow w C99
SK/LADNIA
#include <fenv.h>
void feclearexcept(int excepts);
void fegetexceptflag(fexcept_t *flagp, int excepts);
void feraiseexcept(int excepts);
void fesetexceptflag(const fexcept_t *flagp, int excepts);
int fetestexcept(int excepts);
int fegetround(void);
int fesetround(int rounding_mode);
void fegetenv(fenv_t *envp);
int feholdexcept(fenv_t *envp);
void fesetenv(const fenv_t *envp);
void feupdateenv(const fenv_t *envp);
OPIS
Tych jedenacie funkcji zdefiniowano w C99. Realizuj one obslug
zmiennoprzecinkowego zaokrglania i wyjtkow (nadmiar, dzielenie przez
zero, itp.).
Wyjtki
Wyjtek DivideByZero (dzielenie przez zero) wystpuje gdy dokladnym
wynikiem operacji na liczbach skoczonych jest nieskoczono.
Wyjtek Overflow (nadmiar) wystpuje gdy wynik musi by przedstawiony jako
liczba zmiennoprzecinkowa, ale ma on (duo) wiksz warto bezwzgldn ni
najwiksza (skoczona) liczba zmiennoprzecinkowa posiadajca
przedstawienie.
Wyjtek Underflow (niedomiar) wystpuje gdy wynik musi by przedstawiony
jako liczba zmiennoprzecinkowa, ale ma on mniejsz warto bezwzgldn ni
najmniejsza dodatnia znormalizowana iczba zmiennoprzecinkowa (i
nastpilaby dua utrata precyzji, gdyby przedstawi go jako liczb
nieznormalizowan).
Wyjtek Inexact (niedokladny) wystpuje gdy wynik operacji zaokrglenia
nie jest rowny wynikowi o nieskoczonej precyzji. Moe on towarzyszy
wystpieniu Overflow lub Underflow.
Wyjtek Invalid (nieprawidlowy) wystpuje gdy operacja nie ma dobrze
zdefiniowanego wyniku, jak dla 0/0, nieskoczono - nieskoczono lub
sqrt(-1).
Obs/luga wyjtk'ow
Wyjtki s reprezentowane na dwa sposoby: jako pojedyncze bity (wyjtek
obecny/nieobecny), ktore to bity odpowiadaj w pewien zaleny od
implementacji sposob pozycjom bitowym w liczbie calkowitej, i jako
nieprzezroczysta struktura, ktora moe zawiera wicej informacji o
wyjtkach (zapewne adres kodu, gdzie wyjtek wystpil).
Kade z makr FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW,
FE_UNDERFLOW jest zdefiniowane, gdy implementacja wspiera obslug
odpowiedniego wyjtku, i wowczas definiuje ono odpowiedni(e) bit(y),
umoliwiajc wywolywanie funkcji obslugi wyjtkow, np. podajc argument
calkowity FE_OVERFLOW|FE_UNDERFLOW. Dla innych wyjtkow moe nie by
wsparcia. Makro FE_ALL_EXCEPT jest bitowym OR wszystkich bitow
odpowiadajcym wspieranym wyjtkom.
Funkcja feclearexcept zeruje wspierane wyjtki reprezentowane przez bity
jej argumentu.
Funkcja fegetexceptflag umieszcza odwzorowanie stanu znacznikow
przypisanych wyjtkom reprezentowanym przez argument excepts w
nieprzezroczystym obiekcie *flagp.
Funkcja feraiseexcept zglasza wspierane wyjtki reprezentowane przez
bity excepts.
Funkcja fesetexceptflag ustawia pelny stan o wartoci *flagp dla wyjtkow
reprezentowanych przez excepts. Warto ta musi by otrzymana jako wynik
wczeniejszego wywolania fegetexceptflag z ostatnim argumentem
zawierajcym wszystkie bity excepts.
Funkcja fetestexcept zwraca slowo z ustawionymi tymi bitami, ktore s
ustawione w argumencie excepts, i dla ktorych jest aktualnie ustawiony
odpowiedni wyjtek.
Rounding
Kade z makr FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD jest
zdefiniowane, gdy implementacja wspiera pobieranie i ustawianie
odpowiedniego kierunku zaokrglania.
Funkcja fegetround zwraca makro odpowiedajce aktualnemu trybowi
zaokrglania.
Funkcja fesetround ustawia tryb zaokrglania podany jako jej argument i
zwraca zero gdy si powiedzie.
rodowisko zmiennoprzecinkowe
Cale rodowisko zmiennoprzecinkowe, wlczajc w to tryby sterowania i
znaczniki stanu, moe by obslugiwane jako jeden nieprzezroczysty obiekt
typu fenv_t. rodowisko domylne jest okrelone przez FE_DFL_ENV (typu
const fenv_t *). S to ustawienia rodowiska przy uruchomieniu programu
i s one zdefiniowane przez ISO C jako: zaokrglanie do najbliszej,
wszystkie wyjtki wyzerowane i tryb nieprzerywany (kontynuacja w
przypadku wystpienia wyjtku).
Funkcja fegetenv zachowuje aktualne rodowisko zmiennoprzecinkowe w
obiekcie *envp.
Funkcja feholdexcept robi to samo, a nastpnie zeruje wszystkie
znaczniki wyjtkow i ustawia tryb nieprzerywany (kontynuacja w przypadku
wystpienia wyjtku), o ile to moliwe. Zwraca zero, gdy si powiedzie.
Funkcja fesetenv odtwarza rodowisko zmiennoprzecinkowe z obiektu *envp.
Obiekt ten musi by znany jako poprawny, np. jako wynik wywolania
fegetenv lub feholdexcept lub jako rowny FE_DFL_ENV. To wywolanie nie
zglasza wyjtkow.
Funkcja feupdateenv instaluje rodowisko zmiennoprzecinkowe odwzorowane
w obiekcie *envp, poza tym, e aktualnie zgloszone wyjtki nie s
zerowane. Po jej wywolaniu, zgloszone wyjtki bd bitowym OR tych
zgloszonych wczeniej oraz zawartych w *envp. Jak poprzednio, obiekt
*envp musi by znany jako poprawny.
SZCZEG'O/LY GNU
O ile to moliwe, biblioteka GNU C definiuje makro FE_NOMASK_ENV
odwzorowujce rodowisko, w ktorym kade zgloszenie wyjtku powoduje
wystpienie pulapki. Mona sprawdza warto tego makra za pomoc #ifdef.
Jest ono zdefiniowane jedynie, gdy zdefiniowane jest _GNU_SOURCE.
Standard C99 nie okrela sposobu ustawiania poszczegolnych bitow w masce
zmiennoprzecinkowej, np. aby przechwytywa tylko wybrane znaczniki.
glibc 2.2 bdzie obslugiwa funkcje feenableexcept i fedisableexcept
ustawiajce wybrane znaczniki zmiennoprzecinkowe oraz fegetexcept
odpytujc o stan.
int feenableexcept (int excepts);
int fedisableexcept (int excepts);
int fegetexcept (void);
Funkcje feenableexcept i fedisableexcept wlczaj (wylczaj) pulapkowanie
poszczegolnych wyjtkow odwzorowanych w przez excepts i zwracaj
poprzednie ustawienie pulapkowania wyjtkow, jeli si powiod, a -1 w
pozostalych przypadkach. Funkcja fegetexcept zwraca aktualne
ustawienie pulapkowania wyjtkow.
ZGODNE Z
IEC 60559 (IEC 559:1989), ANSI/IEEE 854, ISO C99 (ISO/IEC 9899:1999).
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.