Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do zajęć Podstawy informatyki pracownia specjalistyczna Tytuł ćwiczenia STANDARD IEEE 754 PRZETWARZANIE LICZB ZMIENNOPRZECINKOWYCH Numer ćwiczenia PI05 Autor: Bogusław Butryło Spis treści 1. Wstęp.............................................................................................................3 2. Ogólna postać zapisu liczb zmiennoprzecinkowych .................................3 2.1. Dwójkowy zapis zmiennoprzecinkowy.....................................................5 2.2. Dziesiętny zapis zmiennoprzecinkowy ....................................................6 3. Dostępne formaty reprezentacji liczb..........................................................7 4. Informacje o binarnym kodowaniu liczb.....................................................8 5. Zakres reprezentowanych wartości...........................................................11 5.1. Zakres i precyzja reprezentacji liczb......................................................11 5.2. Sygnalizowane błędy.............................................................................13 6. Błędy obliczeń zmiennoprzecinkowych....................................................13 6.1. Błąd obliczania sumy i róŜnicy...............................................................14 6.2. Błąd obliczania iloczynu i ilorazu ...........................................................15 7. Zadania do wykonania................................................................................16 7.1. Liczby rzeczywiste i liczby maszynowe .................................................16 7.2. Określenie sposobu kodowania danych ................................................19 7.3. Obliczenia przebiegu funkcji..................................................................20 7.4. Operacje na liczbach małych i duŜych...................................................21 7.5. Obliczenia wielomianów ........................................................................23 7.6. Obliczenia iloczynu skalarnego .............................................................25 8. Informacje o dostępnych programach ......................................................27 9. Przykładowe zagadnienia na zaliczenie ....................................................28 10. Literatura .....................................................................................................29 11. Wymagania BHP .........................................................................................30 _____________ Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. © Wydział Elektryczny, Politechnika Białostocka, 2012 Białystok 2012 Wszelkie prawa zastrzeŜone. śadna część tej publikacji nie moŜe być kopiowana i odtwarzana w jakiejkolwiek formie i przy uŜyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. 2 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych • dwójkowej reprezentacji zmiennoprzecinkowej (BFP, ang. binary floating-point), w której wpisana liczba jest przetwarzana na zapis dwójkowy (baza systemu B=2) 1. Wstęp Zasady komputerowej reprezentacji i przetwarzania liczb zmiennoprzecinkowych zostały sprecyzowane w standardzie IEEE 754. Jego pierwsza wersja (IEEE 754-1985) została opublikowana w roku 1985. Modyfikację i rozszerzenie standardu przedstawiono w roku 2008. Standard IEEE 754.2008, opracowany przez IEEE (ang. Institute of Electrical and Electronics Engineers) został potwierdzony w specyfikacji standardu ISO 60559:2011 podanej przez International Standard Organization. W ramach standardu IEEE 754-2008 określone są m.in.: • zasady zapisu liczb zmiennoprzecinkowych przy uwzględnieniu, Ŝe tworzony zapis bazuje na reprezentacji dwójkowej lub dziesiętnej; • zasady zapisu liczb w postaci znormalizowanej oraz zdenormalizowanej; • dostępne formaty reprezentacji danych zmiennoprzecinkowych; • zasady reprezentacji binarnej (niskopoziomowej) liczb; • sposoby zapisu / sygnalizacji podstawowych obliczeniami zmiennoprzecinkowymi; błędów związanych z • zasady realizacji podstawowych operacji matematycznych na liczbach zmiennoprzecinkowych, w tym reguły zaokrąglania liczb maszynowych. 2. Ogólna postać zapisu liczb zmiennoprzecinkowych Liczby rzeczywiste, wprowadzane do komputera w zapisie dziesiętnym, podlegają automatycznemu przetworzeniu do jednej z postaci przewidzianych w standardzie IEEE 754-2008. Ogólna postać zapisu liczb zmiennoprzecinkowych to wpisana liczba X 10 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych − 754 IEEE → fl ( X B ) = (− 1) ⋅ M B ⋅ BWB , S (1) gdzie B to baza systemu (ang. radix), zaś fl(XB) oznacza wartość liczby w zapisie zmiennoprzecinkowym, która wynika z ograniczeń zapisu komputerowego. W ramach standardu podano specyfikacje dwóch form zapisu: 3 wpisana liczba X 10 − 754 IEEE → fl ( X 2 ) = (− 1) ⋅ M 2 ⋅ 2W2 , S (2) • dziesiętnej reprezentacji zmiennoprzecinkowej (DFP, ang. decimal floating point) w której bazą B systemu jest liczba 10 wpisana liczba X 10 − 754 IEEE → fl ( X 10 ) = (− 1) ⋅ M 10 ⋅10W10 . S (3) Obecnie podstawowym sposobem wewnętrznej reprezentacji liczb zmiennoprzecinkowych w komputerach jest zapis BFP, z bazą B=2. Dominująca liczba programów wykorzystuje zmiennoprzecinkową arytmetykę binarną. Dziesiętny zapis zmiennoprzecinkowy (DFP) został wprowadzony do standardu w roku 2008. Pozwala on rozszerzyć zakres reprezentowanych liczb. Precyzja reprezentacji, podobnie jak w zapisie dwójkowym, jest ograniczona. Wynika ona z dostępnej liczby cyfr znaczących mantysy, czyli z długości reprezentacji komputerowej liczb (liczby bajtów potrzebnych na zapis całej liczby). Zapis dziesiętny eliminuje błędy związane z transformacją liczb dziesiętnych na system dwójkowy. W dalszej kolejności moŜliwe jest w ten sposób ograniczenie błędów powstających przy późniejszych obliczeniach. Nie przekłada się to jednak na przyspieszenie obliczeń. Zgodnie z wzorami (2) i (3), niezaleŜnie od bazy systemu, liczby zmiennoprzecinkowe są pamiętane w postaci 3 liczb całkowitych: • S - znak liczby (ang. sign bit); • M - mantysa liczby (ang. significand), w zapisie dwójkowym M2 lub dziesiętnym M10; • W - wykładnik liczby (ang. exponent) określany przy uwzględnieniu dwójkowej (W2) lub dziesiętnej (W10) bazy systemu. 4 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 2.1. Dwójkowy zapis zmiennoprzecinkowy Zasadnicza część standardu, określona w wersji z roku 1985, dotyczy dwójkowej reprezentacji liczb zmiennoprzecinkowych (BFP). W tej formie reprezentacji, zarówno mantysa jak teŜ wykładnik są najpierw przetwarzane na liczby w zapisie binarnym (B=2) i następnie kodowane. WyróŜnia się przy tym: • postać znormalizowaną, stosowaną dla zdecydowanej większości liczb, • postać zdenormalizowaną, przewidzianą do zapisu bardzo małych liczb, dla których wykładnik W2 osiągnął najmniejszą dopuszczalną wartość. W dalszym opisie pominięto dyskusję tego przypadku. Normalizacji podlega binarna postać liczby. Polega to na przesunięciu przecinka tak, aby przed nim znalazła się jedna (wiodąca) jedynka. Efektem tej operacji jest równieŜ obliczenie wykładnika, który wskazuje rzeczywiste połoŜenie przecinka w dwójkowym zapisie liczby. Przykłady liczb przed i po normalizacji przedstawiono w tabeli 1. Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Po wykonaniu normalizacji, na bitach mantysy jest pamiętana jedynie część, która znalazła się za przecinkiem (ułamek). Ewentualne wolne bity części ułamkowej po prawej stronie są uzupełniane zerami. Wiodąca jedynka (przed przecinkiem) i przecinek są pomijane (tzw. zapis z pominiętą / zapomnianą jedynką). W tabeli 1 kolorem Ŝółtym zaznaczono „usuwane” elementy zapisu liczb. Zapomniana jedynka i przecinek są oczywiście „odtwarzane” w rejestrach jednostki zmiennoprzecinkowej, przed wykonaniem obliczeń. 2.2. Dziesiętny zapis zmiennoprzecinkowy Przy stosowaniu DFP normalizacji podlega liczba w zapisie dziesiętnym. Jej postać jest modyfikowana tak, aby znaczące cyfry zajęły wszystkie dostępne pola mantysy M10 (bez wiodących zer z lewej strony). Rzeczywiste połoŜenie przecinka jest odzwierciedlone w wartości wykładnika W10. W tabeli 2 przedstawiono przykłady zapisu liczb z bazą B=10. Tabela 2. Przykłady dziesiętnego zapisu liczb zmiennoprzecinkowych (B=10), przy załoŜeniu Ŝe mantysa M10 składa się z siedmiu cyfr znaczących. Wartości kolejnych pól (1) Wpisana liczba Zapis DFP X10 fl(X10) S M10 W10 Tabela 1. Przykłady binarnego zapisu liczb zmiennoprzecinkowych. ZałoŜono, Ŝe mantysa M2 składa się z co najwyŜej 7 bitów. Zapis binarny Wartości kolejnych pól (1) Wpisana liczba przed normalizacją po normalizacji X10 S M2 W2 X2 fl(X2) 9,0 25,125 -5,25 -103,5 0,625 -0,078125 -11,3 1001,0 11001,001 -101,01 -1100111,1 0,101 -0,000101 +1,0010000·2 3 +1,1001001·2 4 -1,0101000·2 2 -1,1001111·2 6 +1,0100000·2 -1 -1,0100000·2 -4 -1011,010011 -1,0110101·23 0 0 1 1 0 1 1 0010000 1001001 0101000 1001111 0100000 0100000 0110101 9,0 +9000000·10-6 0 9000000 -6 3 9,0 -1 0 0000090 -1 4 25,125 +2512500·10-5 0 2512500 -5 2 25,125 -3 0 0025125 -3 6 -5,123456 -5123456·10-6 1 5123456 -6 -1 -100043,5 -1 1 1000435 -1 -4 0,015625475 +1562548·10-8 0 1562548 -8 123456789,4 +1234568·10 +2 0 1234568 +2 -5978990·10 +1 1 5978990 +1 3 W celu uproszczenia zapisu wartości W2 podano w zapisie dziesiętnym. W rzeczywistości pola wykładnika W2 podlegają kodowaniu binarnemu, z uŜyciem kodu Excess o dobranym przesunięciu. Pola binarne mantysy ograniczono do 7 bitów. W dostępnych formatach zapis mantysy składa się z większej liczby bitów (tabela 6). -59789904 (1) 5 +0000090·10 +0025125·10 -1000435·10 W celu uproszczenia zapisu wartości M10 i W10 podano w zapisie dziesiętnym. W rzeczywistości pola mantysy M10 i wykładnika W10 podlegają kodowaniu binarnemu, z uŜyciem wybranych kodów. (1) 6 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych W przypadku liczb ułamkowych i małych co do modułu, normalizacja wiąŜe się z przesuwaniem przecinka w prawo, tak aby zapis liczby przyjął postać liczby całkowitej. Oczywiście ulega przy tym zmianie wartość wykładnika. Liczby, w których jest mało cyfr znaczących nie podlegają normalizacji. Zgodnie ze standardem mogą one mieć róŜne formy zapisu (np. liczby 9 oraz 25,125 w tabeli 2). 3. Dostępne formaty reprezentacji liczb W ramach standardu określono podstawowe, dostępne formaty zapisu BFP (dwójkowego) i DFP (dziesiętnego) (tabela 3). Tabela 4. Dodatkowe, połówkowe formaty reprezentacji zmiennoprzecinkowej. Nazwa binary16 Typowa nazwa Baza zapisu B Wielkość zapisu liczby NL połówkowa precyzja ang. half precision 2 2B 10 4B decimal32 Ze względów historycznych występuje jeszcze tzw. precyzja rozszerzona (tabela 5). W ramach standardu dopuszczono jej stosowanie. Rozszerzona reprezentacja liczb zmiennoprzecinkowych jest dostępna jedynie na wybranych platformach sprzętowych i przy stosowaniu wybranych kompilatorów. Tabela 5. Inne dopuszczone formaty reprezentacji zmiennoprzecinkowej. Tabela 3. Podstawowe formaty reprezentacji zmiennoprzecinkowej. Typowa nazwa Baza zapisu B Wielkość zapisu liczby NL binary32 pojedyncza precyzja ang. single precision 2 4B binary64 podwójna precyzja ang. double precision 2 8B poczwórna precyzja ang. quadruple precision 2 16 B Nazwa binary128 decimal64 10 8B decimal128 10 16 B Nazwa extended Typowa nazwa Baza zapisu B Wielkość zapisu liczby NL rozszerzona precyzja ang. extended precision 2 10 B 4. Informacje o binarnym kodowaniu liczb Dopuszczono równieŜ dwa formaty skrócone, połówkowe (tabela 4). Nie są to formaty podstawowe, do powszechnego uŜycia. Mogą być stosowane do zapisu (przechowania) wartości liczbowych. Ich przyjęcie pozwala wprowadzić skróconą reprezentację w wybranych aplikacjach (np. ekonomicznych, bankowych), w których wystarcza zapamiętanie 2-4 cyfr po przecinku. Dwójkowy format połówkowy (tzw. binary16) jest stosowany przy przetwarzaniu w niektórych procesorach graficznych. 7 Specyfikacja standardu określa równieŜ techniczne szczegóły kodowania pól mantysy i wykładnika w zapisie BFP (M2 i W2) oraz DFP (M10, W10). Wskazany opis jest istotny dla zrozumienia pojęcia liczba maszynowa, określenia precyzji i zakresu reprezentowanych liczb. Szczegóły binarnego zapisu liczb nie mają znaczenia przy programowaniu w językach wysokiego poziomu, czy teŜ korzystaniu ze standardowych bibliotek zawierających procedury do obliczeń zmiennoprzecinkowych (np. dla układów FPGA, procesorów sygnałowych). W tabeli 6 zestawiono główne parametry charakteryzujące omawiane formaty zapisu zmiennoprzecinkowego. Przyjęto następujące oznaczenia: NL liczba bajtów, na których jest zapisywana liczba w danej reprezentacji; NS liczba bitów na zapis znaku liczby (S); 8 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych NW NM max W10 P10 liczba bitów na zapis wykładnika (W); liczba bitów na zapis mantysy (M); maksymalny wykładnik w systemie dziesiętnym, który moŜna zapisać; precyzja zapisu, wyraŜona jako liczba cyfr w dziesiętnym zapisie liczby, które zostaną zachowane bez błędu. JeŜeli liczba dziesiętna złoŜona z P10 znaczących cyfr zostanie zamieniona z zapisu „rzeczywistego” na numeryczny zmiennoprzecinkowy i następnie z powrotem na „rzeczywisty”, to co najmniej P10 cyfr pozostanie niezmienionych. Tabela 6. Wybrane parametry zmiennoprzecinkowych reprezentacji liczb. Nazwa NL NS NW NM binary16 max W10 P10 2B 1b 5b 10 b +5 3 binary32 4B 1b 8b 23 b +38 7 binary64 8B 1b 11 b 52 b +308 15 binary128 16 B 1b 15 b 112 b +4932 34 extended 10 B 1b 15 b 64 b +4932 18 decimal32(1) 4B 1b 6b 20 b +96 7 decimal64(1) 8B 1b 8b 50 b +384 16 decimal128(1) 16 B 1b 12 b 110 b +6144 34 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Wewnętrzna reprezentacja liczby w formatach DFP nie ma wpływu na zakres i precyzję zapisu. Oczywiście, w końcowej formie, zarówno przy dwójkowym jak teŜ dziesiętnym zapisie zmiennoprzecinkowym, wszystkie pola są kodowane binarnie. W ramach zmiennoprzecinkowego zapisu liczb nie ma Ŝadnych metod kontroli i weryfikacji poprawności zapisu / odczytu danych. Nie jest to powaŜny problem przy przetwarzaniu w ramach danego urządzenia. Ze względu na moŜliwe zakłócenia przy przesyłaniu tego typu danych na znaczne odległości, do kontroli poprawności moŜliwe, a czasami niezbędne, jest stosowanie róŜnych zewnętrznych metod kontroli, m.in. wprowadzenie słowa kontrolnego, sygnatury pakietu danych, itp. Techniczne zasady kodowania liczb w formacie BFP oraz zapisach dostępnych dla DFP przedstawiono na rys. 1. (a) S W2 M2 bez wiodącej jedynki i przecinka 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 NS=1 NW (b) S W10 NM M10 w formacie binary integer significand lub formacie densely packed decimal significand 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 W zapisie wyróŜniono jeszcze 5 bitów kodujących róŜne formy reprezentacji wykładnika i mantysy. (1) NS=1 NW NM Ze względu na sposób kodowania liczb wyróŜnia się: Dodatkowe bity kodujące postać W10 i M10 • format dla reprezentacji BFP, uwzględniający zapis liczb znormalizowanych i bez normalizacji (bardzo małych); • formaty dla reprezentacji DFP, w tym: o zapis binarny mantysy M10 jako liczby całkowitej (ang. binary integer significand field), czyli zapis mantysy w typowym kodzie wagowym BCN; o zapis binarny, w którym poszczególne cyfry mantysy M10 są kodowane osobno. W kodowaniu cyfr mantysy wykorzystuje się kod DPD (ang. densely packed decimal significand field), który jest skompresowaną formą kodu BCD. 9 Rys. 1. Ogólna idea reprezentacji liczb w zmiennoprzecinkowym zapisie: (a) dwójkowym BFP (B=2), (b) dziesiętnym DFP (B=10). Jedynie kodowanie bitu znaku S jest jednakowe w BFP i DFP. Bit znaku liczby (S) znajduje się na początku i przyjmuje wartość 0 dla liczb dodatnich oraz wartość 1 dla liczb ujemnych (taką formę kodowania uwzględniono w tabelach 1 i 2). 10 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Wykładnik W2 (w zapisie BFP) jest kodowany jako liczba całkowita, z wykorzystaniem kodu z przesunięciem (tzw. kod Excess). Podobnie jest w reprezentacji DFP, przy czym szczegóły kodowania i wartość przesunięcia są inne. Odpowiednia kombinacja bitów kodujących mantysę i wykładnik określa sposób ich interpretacji. W zapisie zmiennoprzecinkowym nie jest moŜliwe przedstawienie kaŜdej liczby nawet w przedziale liczb teoretycznie moŜliwych do zapisu. Dotyczy to zarówno liczb bardzo małych, liczba duŜych, jak teŜ liczb zawierających duŜo cyfr znaczących (np. ułamków okresowych). NiemoŜliwe jest precyzyjne odwzorowanie liczb, których zapis binarny (BFP) lub zapis dziesiętny (DFP) wykracza poza dostępne pola mantysy. Główne przyczyny braku reprezentacji części liczb, które 5. Zakres reprezentowanych wartości teoretycznie mieszczą się w zakresie 〈-Xmax, -Xmin〉 oraz 〈Xmin, Xmax〉 to: • skończona długość mantysy (bitów przewidzianych na zapis mantysy); • zapis ułamków okresowych, liczb niewymiernych; 5.1. Zakres i precyzja reprezentacji liczb W porównaniu z kodami stałopozycyjnymi, stosowanymi do zapisu liczb całkowitych, format zmiennoprzecinkowy znacznie zwiększa zakres dostępnych liczb. Na osi liczbowej, niezaleŜnie od formy zapisu (BFP lub DFP) wyróŜnić moŜna trzy zakresy reprezentowalnych, dostępnych liczb: zakres liczb ujemnych, zero oraz zakres liczb dodatnich (rys. 2). Krańce pasma reprezentowalnych liczb Xmax są określone przez liczbę bitów NW przewidzianych na wykładnik. Wartości NW oraz maksymalne moŜliwe do zapisania wartości wykładnika zestawiono w tabeli 6. Dolne granice Xmin równieŜ wynikają z liczby pól bitowych wykładnika. Zapis bardzo małych liczb, których rzeczywisty wykładnik nie mieści się na polach wykładnika, jest zaokrąglany do 0. Bit znaku S zachowuje przy tym znak przybliŜenia, z tego powodu w ramach standardu IEEE 754.2008, rzeczywista wartość 0, ma dwie reprezentacje: 0+ (zero plus) i 0- (zero minus). -Xmax dostępne liczby - -Xmin 0 Z tego względu wprowadza się pojęcie tzw. liczby maszynowej, oznaczonej juŜ wcześniej symbolem fl(X). Jest to liczba reprezentowana w ramach danego formatu IEEE 754-2008, która jest odwzorowaniem rzeczywistej wpisanej liczby X. RóŜnica między X i fl(X) jest podstawową przyczyną błędów obliczeń numerycznych (rozdz. 6). Długość zapisu mantysy przesądza zatem o precyzji arytmetyki ε (dokładności zapisu liczb). W zapisach dwójkowych precyzja arytmetyki wyraŜa się wzorem ε BFP = 2 − N niedomiar zapis 0+ i 0niedomiar + nadmiar - • sposób reprezentacji liczb dziesiętnych po zmianie reprezentacji na system dwójkowy (w ramach formatu BFP). Ze względu na zmianę podstawy systemu liczbowego z 10 na 2, niektóre liczby które w zapisie dziesiętnym mają skończoną, dokładną reprezentację, w systemie dwójkowym nie wykazują tej właściwości. M −1 , (4) natomiast w zapisach dziesiętnych dostępne liczby + Xmin nadmiar + Xmax ε DFP = 10 − P . 10 (5) Błąd dx zapisu zmiennoprzecinkowego liczby fl ( X ) = X + d X jest określony X relacją Rys. 2. Poglądowe zestawienie zakresów dostępnych liczb oraz błędów sygnalizowanych w ramach standardu IEEE 754-2008. dX ≤ ε . 11 12 (6) Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 5.2. Sygnalizowane błędy W ramach standardu przewidziano równieŜ kodowanie informacji o błędach. Informacje o błędzie są kodowane w ramach pola znaku S, pola wykładnika W oraz mantysy M. WyróŜnia się błędy krytyczne, które powinny powodować przerwanie obliczeń jak teŜ niekrytyczne. Ich wystąpienie jest sygnalizowane, jednak algorytm moŜe być dalej realizowany. Zgodnie z rys. 2, błędem niekrytycznym jest wystąpienie niedomiaru + lub niedomiaru -. Brak moŜliwości zapisu liczb bardzo małych prowadzi do ich przybliŜenia do wartości 0+ lub 0-. Pozostałe błędy to: • nadmiar dodatni lub nadmiar ujemny, pojawiający się przy przekroczeniu zakresu reprezentowalnych liczb i sygnalizowany symbolem INF+ lub INF-; • NaN (ang. not a number), który ma miejsce gdy odczytana kombinacja binarna nie moŜe być zidentyfikowana jako poprawny zapis zmiennoprzecinkowy lub wywoływana funkcja nie moŜe być policzona dla danych wartości zmiennych. W standardzie IEEE 754.2008 wyróŜniono błąd NaN sygnalizowany (ang. NaN signaling) oraz niesygnalizowany (ang. NaN quiet). 6. Błędy obliczeń zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych rozszerzone rejestry do przechowywania wyników obliczeń. Dopiero uzyskany rezultat, opisany na większej liczbie bitów, podlega ograniczeniu zgodnemu ze standardem IEEE 754-2008 IEEE −754 X → fl ( X ) IEEE −754 Y → fl (Y ) wynik IEEE − 754 fl ( X ) ⊗ fl ( y ) → S → fl (S ) , (7) gdzie ⊗ oznacza dowolną operację arytmetyczną. 6.1. Błąd obliczania sumy i róŜnicy ZałóŜmy, Ŝe dane są dwie liczby X i Y, które zostały przetworzone na wartości maszynowe fl ( X ) = X + d X , (8) fl (Y ) = Y + d Y . (9) Błąd obliczeń sumy moŜna oszacować na podstawie zaleŜności WS = fl ( X ) + fl (Y ) , (10) WS = X + d X + Y + d Y ≈ ( X + Y ) + d S , (11) przy czym maksymalny błąd określenia wyniku wyraŜa się wzorem Liczby wpisywane przez uŜytkownika, podlegają przetworzeniu do liczby maszynowej w ramach przyjętego w programie (na danej platformie sprzętowej) formatu zapisu binarnego BFP lub dziesiętnego DFP. Rzeczywiste wartości liczb są zatem w ogólnym przypadku odwzorowane z błędami. Błędy reprezentacji liczb przekładają się na błędy wyników wykonywanych operacji matematycznych. Liczba wykonywanych operacji ma zatem wpływ na wielkość błędów. PoniŜej przedstawiono wyprowadzenia zaleŜności określających wartość błędu przy obliczaniu sumy oraz iloczynu dwóch liczb zmiennoprzecinkowych. Wyprowadzone wzory mają charakter ogólny. W rzeczywistości błąd obliczeń jest z zasady mniejszy. Wynika to z konstrukcji jednostek do obliczeń zmiennoprzecinkowych. W celu poprawy dokładności obliczeń zawierają one 13 d S = d X + dY . (12) Względny błąd wyniku oblicza się jako iloraz błędu bezwzględnego i wartości dokładnej δS = dS d + dY = X . X +Y X +Y (13) Po przekształceniach δS = 14 dX X d Y d X d Y ⋅ + Y ⋅ = X ⋅ + Y ⋅ , X +Y X X +Y Y X X +Y Y X +Y (14) Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych δ I = δ X + δY . otrzymuje się zaleŜność δ S = δ X ⋅ wX + δ Y ⋅ wY , (15) przy czym d δX = X , X dY δY = , Y Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych (22) Obliczanie iloczynu (ilorazu) prowadzi do kumulacji względnych błędów czynników. 7. Zadania do wykonania (16) 7.1. Liczby rzeczywiste i liczby maszynowe (17) to względne błędy zapisu liczb X i Y, zaś wX = X / ( X + Y ) , wY = Y / ( X + Y ) to współczynniki określające udział danej liczby w sumie. Interpretacja wzoru (15) prowadzi do wniosku, Ŝe przy dodawaniu (odejmowaniu) zmiennoprzecinkowym błędy zapisu liczb fl(X) i fl(Y) podlegają propagacji. W pierwszym punkcie moŜliwe jest ustalenie, jaka jest rzeczywista reprezentacja wpisywanych liczb zmiennoprzecinkowych i precyzja arytmetyki, przy stosowaniu formatów BFP dostępnych w programach komputerowych. 1. Uruchomić program ieee754_01.exe (szczegóły w rozdz. 8). Liczba wpisana w systemie dziesiętnym w górnym oknie programu podlega dwukrotnemu przetworzeniu (rys. 3). 6.2. Błąd obliczania iloczynu i ilorazu Wpisana liczba X10 Przetwarzane są dwie liczby opisane wzorami (8) i (9). Wynik iloczynu (ilorazu) tych liczb w zapisie zmiennoprzecinkowym wynosi WI = fl ( X ) ⋅ fl (Y ) , WI = ( X + d X ) ⋅ (Y + d Y ) = ≈ XY + d X Y + dY X + d X dY . IEEE-754 binary32(X10) IEEE-754 [binary32(X10)]10 (18) IEEE-754 binary64(X10) IEEE-754 [binary64(X10)]10 (19) IEEE-754 extended(X10) IEEE-754 [extended(X10)]10 Rys. 3. Sposób przetwarzania liczby w ramach programu ieee754_01.exe. śółte pola wskazują wartości pokazywane w oknie programu. Przy pominięciu ostatniego czynnika, dXdY≈0, maksymalny błąd obliczeń wynosi d I = d X Y + dY X . W programie moŜliwe jest równieŜ ustawienie sposobu reprezentacji liczby (rys. 4). W celu analizy wyników przetwarzania liczb naleŜy zwrócić szczególną uwagę na ustawienie pól „Liczba znaków” oraz „Liczba cyfr po przecinku”. (20) Względna wartość błędu wyraŜa się wzorem δI = dI d Y + d Y X d X Y dY X = X = + . X ⋅Y X ⋅Y X ⋅Y X ⋅Y (21) Uwzględniając wzory (16)-(17) otrzymuje się zaleŜność 15 16 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Tabela 7. Wybrane stałe liczbowe przydatne do testów. Nazwa, opis stała Plancka h 6,62606957(29) 10-34 Js masa spoczynkowa elektronu me 9,10938291(40)10-29 g jednostka masy atomowej 1u 1,660538921(73)10-24 g ładunek elektronu 1e -1,602176565(35)10-19 C przenikalność elektryczna powietrza ε0 8,85418781710-12 F/m przenikalność magnetyczna próŜni µ0 12,56637061410-7 H/m definicja ampera: siła działająca na przewody przy I=1A 2 Rys. 4. Ogólny widok okna programu ieee754_01.exe. Wartość 210-7 N 1,4142 1356 2373 0950 4880 1688 7242 0969 8078 5696 ... względna przenikalność elektryczna polietylenu εr 2,25 względna przenikalność elektryczna polistyrenu εr 2,7 e (podstawa logarytmu naturalnego) 2,7182 8182 8458 5634 1127 7850 6062 0264 2376 7855 ... π 3,1415 9265 3589 7932 3846 2643 3832 7950 2884 1971 ... przyspieszenie ziemskie normalne g 9,80665 ms-2 przyspieszenie ziemskie w Krakowie 9,8105 ms-2 • liczb bardzo małych; przyspieszenie ziemskie w Warszawie 9,8123 ms-2 • skończonych ułamków dziesiętnych, np. 0,1; 0,2; 0,25; 0,3; 0,4; 0,45; 0,5; 0,55; 0,7; 0,75; itp.; przelicznik cali na milimetry 2. Wykonać próby zapisu i porównać otrzymane reprezentacje róŜnych liczb (tabela 7), m.in.: • liczb będących kombinacją liczby całkowitej i ułamka, np. 3,1; 3,14; 3,142; 4,2; 4,25; 4,5; 4,55; 7,18; itp.; temperatura zera bezwzględnego rok gwiazdowy rezystancja falowa próŜni średni promień równika • liczb całkowitych, np. 1, 2, 10, -260, 1410, 2012; przelicznik kWh na Joule: • liczb niewymiernych; definicja metra, liczba okresów drgań kryptonu 86Kr • liczb całkowitych duŜych co do modułu, z małą liczbą cyfr znaczących, np. 234000; 2340000000; 234000000000000; definicja sekundy, liczba okresów drgań atomu cezu 133Cs • liczb całkowitych duŜych co do modułu, z duŜą liczbą cyfr znaczących, np. 123456789123456; objętość Ziemi • typowych wartości rezystancji i pojemności stosowanych w układach elektronicznych (występujących w typoszeregach dostępnych rezystorów oraz kondensatorów). 17 1 terrabajt 1”=25,3995 mm -273,15 ºC 365,2422 dnia 376,730313469585 Ω 6378,245 km 1 kWh = 36105 J 1650763,73 91 9263 1770 1012 bajtów 1,083211012 km3 1 petabajt 1015 bajtów 1 eksabajt 1018 bajtów 1 zettabajt 1021 bajtów liczba Avogadra 1 jottabajt 18 6,02214129(27)1023 mol-1 1024 bajtów Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 3. Sprawdzić, czy moŜliwe jest wykrycie występowania błędu niedomiaru lub nadmiaru. 4. Sprawdzić zakres reprezentacji liczb w kaŜdym z dostępnych formatów. 7.3. Na podstawie wykonanych prób sformułować odpowiedzi na następujące pytania. y1 = x 2 + 1 − 1 , • Dlaczego liczby zmiennoprzecinkowe nie są pamiętane dokładnie? Dane są dwa wyraŜenia y2 = • Na której pozycji pojawiają się przekłamania w zapisie liczb? • Co to jest precyzja zapisu P10? • Jakimi kryteriami naleŜy się kierować przy wyborze sposobu reprezentacji liczb zmiennoprzecinkowych? Obliczenia przebiegu funkcji x2 x2 + 1 + 1 . (24) Kolejne wartości zmiennej x, dla której są liczone wartości y1 oraz y2 tworzą ciąg geometryczny x = a− p , • Które reprezentacje liczb naleŜy wybierać? (23) (25) przy czym w przygotowanym programie (rys. 5) moŜliwe jest ustawienie wartości stałej a oraz zakresu zmian wykładnika potęgi 7.2. Określenie sposobu kodowania danych 1. Zaproponować testy, które umoŜliwią sprawdzenie wewnętrznej reprezentacji liczb zmiennoprzecinkowych w stosowanych programach, np.: • arkuszach kalkulacyjnych Microsoft Excel, Open Office Calc, itp.; • kalkulatorach dostępnych w systemie operacyjnym; • pakietach matematycznych Matlab, Octave, MathCad, itp.; • pakiecie PSpice; • innych programach, w których są przetwarzane liczby. 2. Zaproponować test, który pozwoli sprawdzić czy testowane programy sygnalizują (jak działają) po wystąpieniu błędu nadmiaru oraz błędu NaN. Na podstawie wykonanych prób: • wskazać, który format/formaty są stosowane w ramach programu; • określić precyzję zapisu liczb (P10) i zakres sygnalizacji błędów (niedomiar-, niedomiar+, nadmiar-, nadmiar+, NaN); • podać zasady, które umoŜliwią poprawne korzystanie z testowanych programów. 19 p ∈ p1 , p2 . (26) 1. Uruchom program ieee754_02.exe (szczegóły w rozdz. 8, rys. 5). 2. Wykonaj obliczenia dla wybranych wartości liczby a. Wyjaśnij przebieg charakterystyk i omów uzyskane wyniki. Porównaj wyniki obliczeń wykonywanych przy róŜnej reprezentacji przetwarzanych liczb (binary32, binary64). WskaŜ, które wyraŜenie, y1 czy y2, jest liczone i prezentowane jako „funkcja (a)” oraz „funkcja (b)”. 3. Wyjaśnij obserwowane rozbieŜności w obliczeniach. Oblicz liczbę wykonywanych operacji dodawania/odejmowania oraz mnoŜenia/dzielenia. 4. Określ przyczyny powstawania błędów obliczeń w obu wyraŜeniach. WskaŜ, które wyraŜenie jest liczone z większą precyzją. 5. Wyjaśnij techniki stosowane w celu ograniczenia powstawania tego typu błędów. 6. Sprawdź jak podane funkcje będą liczone przy stosowaniu arkusza kalkulacyjnego lub pakietu matematycznego. 7. Dla wybranych wartości sprawdź jak podane funkcje będą liczone w kalkulatorze (sprzętowym, nie programowym dostępnym w komputerze). 20 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Rys. 5. Widok okna programu ieee754_02.exe. Rys. 6. Widok okna programu ieee754_03.exe. 7.4. Operacje na liczbach małych i duŜych W proponowanym przykładzie jest liczona wartość funkcji sinus, przy zadanych wartościach amplitudy, składowej stałej, częstotliwości, fazy początkowej. Wartości funkcji trygonometrycznej są liczone dwoma sposobami: • dla zadanego kąta φ, przy uwzględnieniu zmian funkcji w pierwszym okresie, u1 = A0 + A sin (2πft + ϕ ) , (27) • korzystając z okresowości funkcji sinus, dla zadanego kąta fazowego φ w wybranym N-tym okresie sinusa, ustawianym za pomocą pokrętła u2 = A0 + A sin (2πf (t + NT ) + ϕ ) . (28) 21 1. Uruchom program ieee754_03.exe (szczegóły w rozdz. 8). 2. Za pomocą suwaków ustaw amplitudę, częstotliwość i fazę początkową sinusa (rys. 6). Składową stałą moŜna pozostawić bez zmian (0). 2. Porównaj wyniki otrzymane przy obliczaniu funkcji sinus w pierwszym okresie i w kolejnych wybranych okresach. Zmiany wartości N wykonaj w zakresie sięgającym co najmniej 1020. Zanotuj uzyskiwane wyniki (wystarczy ok. 10 punktów). 3. Wykonaj charakterystykę wartości funkcji sinus w zaleŜności od liczby N. Oś wartości N wyskaluj uŜywając skali logarytmicznej. 4. Określ źródło powstawania błędów. Sformułuj zasady, które naleŜy uwzględnić przy obliczaniu wartości funkcji okresowych. 5. Zadania z punktów 2 i 3 powtórz dla innego kąta fazowego. Czy otrzymana charakterystyka ma inny przebieg? 22 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych w=0→ w =1→ w=2→ w=3→ 7.5. Obliczenia wielomianów Dane są trzy równowaŜne pod względem matematycznym formy zapisu wielomianu zmiennej rzeczywistej x: 1 1 w=4→ w=5→ w=6→ w=7→ • metoda A: zapis z uŜyciem wzorów skróconego mnoŜenia (dwumianu Newtona) y A = (x + x p ) , 1 1 1 1 1 1 N w 5 7 M 3 4 6 6 15 1 4 10 20 35 M 1 3 10 21 M 1 2 15 35 M 1 5 1 6 21 M 1 7 M 1 M O (29) Rys. 7. Trójkąt Pascala (wartości symbolu Newtona). • metoda B: zapis z uwzględnieniem rozwinięcia dwumianu Newtona yB = w w w −i i = x x a w− i x w− i = ∑ ∑ p i =0 i i =0 = aw x w + a w −1 x w−1 + a w − 2 x w − 2 + K + a1 x1 + a0 x 0 , w (30) • metoda C: zapis z rekurencyjnym wyłączeniem przed nawias kolejnych potęg argumentu x yC = (L((a w x + a w−1 )x + a w− 2 )x + L + a1 )x + a0 . (31) Współczynniki aw-i wyraŜają się wzorem w aw −i = ⋅ x ip . i (32) Wartość xp w równaniach (29)-(32) odpowiada miejscu zerowemu wielomianu. Na w w! rys. 7 podano wartości symbolu Newtona = dla kolejnych potęg w. i ( i ! w − i )! Przykład 1. Dla wielomianu rzędu 7 wskazane formy zapisu przyjmują postać y A = ( x − 1) , 7 Rys. 8. Widok okna programu ieee754_04.exe. (33) yB = x − 7 x + 21x − 35 x + 35 x − 21x + 7 x − 1 , (34) yC = ((((((x − 7 )x + 21)x − 35)x + 35)x − 21)x + 7 )x − 1 . (35) 7 6 5 4 3 2 1 1. Uruchom program ieee754_04.exe (szczegóły w rozdz. 8), w którym moŜna obserwować przebiegi wielomianów liczonych metodami A oraz B (rys. 8). 23 24 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 2. Wykonaj obliczenia wielomianu wybranego rzędu (maksymalny rząd wynosi 8), przy xp=1. Wpisz właściwe współczynniki. MoŜna zawęzić przedział obserwacji (np. x1=0,9, x2=1,1) oraz ustawić krok zmiany wartości x (np. dx=1e-5). 3. Wyjaśnij przyczyny obserwowanych rozbieŜności. Oblicz liczbę operacji dodawania/odejmowania oraz mnoŜenia/dzielenia. Określ szerokość przedziału nieufności przy obliczeniach wykonywanych na liczbach pojedynczej precyzji (binary32) oraz podwójnej precyzji (binary64). Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 2. Zgodnie z opisem operacji w skoroszycie (rys. 9): • w komórkach od E3 do E7 oblicz składowe wektora w[i] = a[i]b[i], wykonując przy tym klasyczne operacje na komórkach; • w komórce H11 oblicz sumę wyrazów wektora w, dodając kolejno wyrazy od pierwszego do ostatniego; • w komórce H12 oblicz sumę wyrazów wektora w, dodając kolejno wyrazy od ostatniego do pierwszego; • w komórce H13 oblicz sumę wyrazów wektora w wykorzystując przy tym standardową funkcję obliczania sumy z wybranego zakresu komórek; 4. Z uŜyciem programu ieee754_04.exe lub innego, wykonaj obliczenia zakładając, Ŝe xp≠1 (np. 1,1). W tym celu oblicz właściwe współczynniki rozwinięcia zapisu. 5. Wykonaj testy przy zmianie rzędu wielomianu. W kaŜdym z przypadków określ przedział nieufności rozwiązania przy stosowaniu formatu binary32 oraz • w komórce H14 oblicz sumę pięciu wyrazów wektora w według samodzielnie przyjętej kolejności losowej. binary64. 6. Scharakteryzuj techniki, które pozwalają ograniczyć wartości obserwowanych błędów. 7. Wykonaj obliczenia przyjętego wielomianu i wykonaj wykresy, korzystając z arkusza kalkulacyjnego (np. Excel) lub pakietu matematycznego (np. Matlab). W porównaniu wykresów uwzględnij równieŜ wariant C. 7.6. Obliczenia iloczynu skalarnego Dane są dwa wektory a oraz b, złoŜone z pięciu liczb a=[ 2,71828E+0 -3,14159E+0 1,41421E+0 5,77216E-1 3,01030E-1 ], b=[ 1,48625E+3 8,78367E+5 -2,23749E+1 4,77371E+6 1,85049E-4 ]. (36) (37) Reprezentacja liczb w systemie dziesiętnym jest skończona, z dokładnością do pięciu cyfr po przecinku. Przyjęte liczby mieszczą się w zakresie precyzji przewidzianej zarówno dla standardu binary32 jak teŜ decimal64. 1. Otwórz przygotowany skoroszyt arkusza kalkulacyjnego, zapisany w pliku ieee754_05.xls. 25 Rys. 9. Widok okna arkusza kalkulacyjnego do obliczania sumy wyrazów z iloczynu skalarnego dwóch wektorów (plik ieee754_05.xls). 3. Podaj przyczyny obserwowanych efektów. Która wartość jest liczona dokładniej i dlaczego? Co naleŜy robić, aby uniknąć tego typu błędów? 26 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 8. Informacje o dostępnych programach 9. Przykładowe zagadnienia na zaliczenie Dostępne w trakcie ćwiczenia programy ieee754_01.exe, ieee754_02.exe, ieee754_03.exe oraz ieee754_04.exe zostały przygotowane z uŜyciem języka G, w ramach środowiska LabViewTM, firmy National Instruments. Programy w wersji skompilowanej, wykonywalnej są dostępne m.in. na stronach internetowych 1. 2. 3. 4. http://we.pb.edu.pl/~ketim/ketim-md/ www.we.pb.edu.pl/~butrylo Ich uruchomienie jest moŜliwe na dowolnym komputerze, równieŜ bez zainstalowanego pakietu NI LabViewTM. Niezbędnym warunkiem działania programów jest zainstalowanie platformy uruchomieniowej NI LabViewTM, tzw. LabVIEW Run-Time Engine 2011. Oryginalny pakiet instalacyjny (LVRTE2011f3std.exe) jest dostępny legalnie, bezpłatnie na stronach producenta oprogramowania, m.in. http://joule.ni.com/nidu/cds/view/p/id/2534/lang/en Przed uzyskaniem dostępu do pakietu instalacyjnego wymagane jest podanie danych w celach marketingowych. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 27 28 Scharakteryzuj formaty zapisu zmiennoprzecinkowego dostępne w ramach standardu IEEE 754-2008. Wyjaśnij sposób zapisu liczb w formacie BFP w standardzie IEEE 754-2008. Wyjaśnij sposób zapisu liczb w formacie DFP w standardzie IEEE 754-2008. Podaj jakie są standardowe formaty reprezentacji zmiennoprzecinkowej oraz inne, dopuszczone w ramach standardu IEEE 754-2008. Podaj główne cechy tych formatów, które mają znaczenie przy programowaniu i wykonywaniu obliczeń. Wyjaśnij, od czego zaleŜy zakres reprezentowanych liczb a od czego ich precyzja reprezentacji. Wyjaśnij jak rozumiesz termin liczba maszynowa. Jaka jest róŜnica między liczbą maszynową a liczbą rzeczywistą. Co to jest precyzja zapisu P10? Jakie są krytyczne i niekrytyczne błędy w ramach standardu IEEE 754-2008. Czy kaŜdą liczbę z zakresu przewidzianego w standardzie IEEE 754-2008 moŜna przedstawić w zapisie zmiennoprzecinkowym. Odpowiedź uzasadnij. Wyjaśnij na czym polega kumulacja lub propagacja błędów w obliczeniach zmiennoprzecinkowych. W oparciu o wzory wyjaśnij, co się dzieje z błędem względnym wyniku przy obliczaniu sumy dwóch wyrazów. W oparciu o wzory wyjaśnij, co się dzieje z błędem względnym wyniku przy obliczaniu iloczynu dwóch wyrazów. Omów metody ograniczania błędów numerycznych. Dlaczego binarny zapis zmiennoprzecinkowy (BFP) jest powszechnie wykorzystywany w programach, zaś dziesiętny zapis zmiennoprzecinkowy (DFP) w niewielkim (znikomym) stopniu? Na czym polega zaokrąglanie liczby w zapisie zmiennoprzecinkowym a na czym obcięcie. Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 10. Literatura 11. Wymagania BHP [1] Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw poŜarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych naleŜy przestrzegać następujących zasad. • Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. • JeŜeli istnieje taka moŜliwość, naleŜy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. • Sprawdzić prawidłowość połączeń urządzeń. • Załączenie komputera moŜe nastąpić po wyraŜeniu zgody przez prowadzącego. • W trakcie pracy z komputerem zabronione jest spoŜywanie posiłków i picie napojów. • W przypadku zakończenia pracy naleŜy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego moŜe się odbywać tylko na wyraźne polecenie prowadzącego. • Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. • Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów uŜytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. • W przypadku zaniku napięcia zasilającego naleŜy niezwłocznie wyłączyć wszystkie urządzenia. • Stwierdzone wszelkie braki w wyposaŜeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu naleŜy przekazywać prowadzącemu zajęcia. • Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie naleŜących do danego ćwiczenia. • W przypadku wystąpienia poraŜenia prądem elektrycznym naleŜy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać poraŜonego. [2] [3] [4] [5] [6] [7] [8] J. M. Jankowscy: Przegląd metod i algorytmów numerycznych. WNT, Warszawa, 2009. D. Kincaid, W. Cheney: Analiza numeryczna. PWN, Warszawa, 2008. Z. Fortuna, B. Macukow, J. Wasowski: Metody numeryczne. WNT, Warszawa, 2006. S. Gryś: Arytmetyka komputerów. Wydawnictwa Naukowe PWN, Warszawa, 2007. J. Ogrodzki: Wstęp do systemów komputerowych. Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2005. B. Pochopień: Arytmetyka w systemach cyfrowych. Akademicka Oficyna Wydawnicza Exit, Warszawa, 2004. IEEE 754-2008 - Standard for Floating-Point Arithmetic. DOI 10.1109/IEEESTD.2008.4610935, 2008. IEEE 754-1985 - Standard for Binary Floating-Point Arithmetic. DOI 10.1109/IEEESTD.1985.82928, 1985. 29 30