15
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 Białystok 2012 Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych 2 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 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.

Kodowanie liczb zmiennoprzecinkowych

Embed Size (px)

Citation preview

Page 1: Kodowanie 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

Białystok 2012

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

2

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

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.

Page 2: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

3

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 błędów związanych z

obliczeniami zmiennoprzecinkowymi;

• 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

( ) ( ) BW

B

S

B BMXflX ⋅⋅−= → − 1 liczba wpisana 754IEEE

10 , (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:

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

4

• dwójkowej reprezentacji zmiennoprzecinkowej (BFP, ang. binary floating-point),

w której wpisana liczba jest przetwarzana na zapis dwójkowy (baza systemu

B=2)

( ) ( ) 221 liczba wpisana 22

754IEEE

10

WSMXflX ⋅⋅−= → −

, (2)

• dziesiętnej reprezentacji zmiennoprzecinkowej (DFP, ang. decimal floating

point) w której bazą B systemu jest liczba 10

( ) ( ) 10101 liczba wpisana 1010

754IEEE

10

WSMXflX ⋅⋅−= → −

. (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.

Page 3: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

5

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.

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

X10 przed normalizacją X2

po normalizacji fl(X2)

S M2 W2

9,0 1001,0 +1,0010000·23 0 0010000 3

25,125 11001,001 +1,1001001·24 0 1001001 4

-5,25 -101,01 -1,0101000·22 1 0101000 2

-103,5 -1100111,1 -1,1001111·26 1 1001111 6

0,625 0,101 +1,0100000·2-1 0 0100000 -1

-0,078125 -0,000101 -1,0100000·2-4 1 0100000 -4

-11,3 -1011,010011 -1,0110101·23 1 0110101 3

(1) 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).

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

6

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 X10

Zapis DFP fl(X10) S M10 W10

9,0 +9000000·10-6 0 9000000 -6

9,0 +0000090·10-1 0 0000090 -1

25,125 +2512500·10-5 0 2512500 -5

25,125 +0025125·10-3 0 0025125 -3

-5,123456 -5123456·10-6 1 5123456 -6

-100043,5 -1000435·10-1 1 1000435 -1

0,015625475 +1562548·10-8 0 1562548 -8

123456789,4 +1234568·10+2 0 1234568 +2

-59789904 -5978990·10+1 1 5978990 +1

(1) 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.

Page 4: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

7

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 3. Podstawowe formaty reprezentacji zmiennoprzecinkowej.

Nazwa Typowa nazwa Baza zapisu

B

Wielkość zapisu liczby NL

binary32 pojedyncza precyzja ang. single precision

2 4 B

binary64 podwójna precyzja

ang. double precision 2 8 B

binary128 poczwórna precyzja

ang. quadruple precision 2 16 B

decimal64 10 8 B

decimal128 10 16 B

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.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

8

Tabela 4. Dodatkowe, połówkowe formaty reprezentacji zmiennoprzecinkowej.

Nazwa Typowa nazwa Baza zapisu

B

Wielkość zapisu liczby NL

binary16 połówkowa precyzja ang. half precision

2 2 B

decimal32 10 4 B

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.

Nazwa Typowa nazwa Baza zapisu

B

Wielkość zapisu liczby NL

extended rozszerzona precyzja

ang. extended precision 2 10 B

4. Informacje o binarnym kodowaniu liczb

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);

Page 5: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

9

NW liczba bitów na zapis wykładnika (W);

NM liczba bitów na zapis mantysy (M);

max W10 maksymalny wykładnik w systemie dziesiętnym, który moŜna zapisać;

P10 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 max W10 P10

binary16 2 B 1 b 5 b 10 b +5 3

binary32 4 B 1 b 8 b 23 b +38 7

binary64 8 B 1 b 11 b 52 b +308 15

binary128 16 B 1 b 15 b 112 b +4932 34

extended 10 B 1 b 15 b 64 b +4932 18

decimal32(1) 4 B 1 b 6 b 20 b +96 7

decimal64(1) 8 B 1 b 8 b 50 b +384 16

decimal128(1) 16 B 1 b 12 b 110 b +6144 34 (1) W zapisie wyróŜniono jeszcze 5 bitów kodujących róŜne formy reprezentacji wykładnika i mantysy.

Ze względu na sposób kodowania liczb wyróŜnia się:

• 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.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

10

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)

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

NS=1

S W2 0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

M2 bez wiodącej jedynki i przecinka

NW NM

(b)

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

NS=1

S W10 0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

M10 w formacie binary integer significand

lub formacie densely packed decimal significand

NW NM

Dodatkowe bity kodujące postać W10 i M10

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).

Page 6: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

11

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.

5. Zakres reprezentowanych wartości

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).

0 -Xmin X

nadmiar + nadmiar -

Xmin Xmax -Xmax

dostępne liczby - dostępne liczby + nied

omia

r -

nied

omia

r +

zapi

s 0+

i 0-

Rys. 2. Poglądowe zestawienie zakresów dostępnych liczb oraz błędów sygnalizowanych w ramach standardu IEEE 754-2008.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

12

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

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;

• 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.

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

12

−−= MN

BFPε , (4)

natomiast w zapisach dziesiętnych

1010P

DFP

−=ε . (5)

Błąd dx zapisu zmiennoprzecinkowego liczby ( ) XdXXfl += jest określony

relacją

ε≤Xd . (6)

Page 7: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

13

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

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

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

14

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

( )( )

( ) ( ) ( )SflSyflXflYflY

XflX IEEEwynik

IEEE

IEEE

→ →⊗

→ −

−754

754

754

, (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

( ) XdXXfl += , (8)

( ) YdYYfl += . (9)

Błąd obliczeń sumy moŜna oszacować na podstawie zaleŜności

( ) ( )YflXflWS += , (10)

( ) SYXS dYXdYdXW ++≈+++= , (11)

przy czym maksymalny błąd określenia wyniku wyraŜa się wzorem

YXS ddd += . (12)

Względny błąd wyniku oblicza się jako iloraz błędu bezwzględnego i wartości

dokładnej

YX

dd

YX

d YXSS +

+=

+=δ . (13)

Po przekształceniach

YX

Y

Y

d

YX

X

X

d

Y

Y

YX

d

X

X

YX

d YXYXS +

⋅++

⋅=⋅+

+⋅+

=δ , (14)

Page 8: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

15

otrzymuje się zaleŜność

YYXXS ww ⋅+⋅= δδδ , (15)

przy czym

X

d XX =δ , (16)

Y

dYY =δ , (17)

to względne błędy zapisu liczb X i Y, zaś ( )YXXwX += / , ( )YXYwY += / 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.

6.2. Błąd obliczania iloczynu i ilorazu

Przetwarzane są dwie liczby opisane wzorami (8) i (9). Wynik iloczynu

(ilorazu) tych liczb w zapisie zmiennoprzecinkowym wynosi

( ) ( )YflXflWI ⋅= , (18)

( ) ( ).YXYX

YXI

ddXdYdXY

dYdXW

+++≈

=+⋅+= (19)

Przy pominięciu ostatniego czynnika, dXdY≈0, maksymalny błąd obliczeń wynosi

XdYdd YXI += . (20)

Względna wartość błędu wyraŜa się wzorem

YX

Xd

YX

Yd

YX

XdYd

YX

d YXYXII ⋅

+⋅

=⋅

+=

⋅=δ . (21)

Uwzględniając wzory (16)-(17) otrzymuje się zaleŜność

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

16

YXI δδδ += . (22)

Obliczanie iloczynu (ilorazu) prowadzi do kumulacji względnych błędów czynników.

7. Zadania do wykonania

7.1. Liczby rzeczywiste i liczby maszynowe

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).

IEEE-754 binary32(X10) IEEE-754 [binary32(X10)]10

IEEE-754 binary64(X10) IEEE-754 [binary64(X10)]10

IEEE-754 extended(X10) IEEE-754 [extended(X10)]10

Wpisana liczba X10

Rys. 3. Sposób przetwarzania liczby w ramach programu ieee754_01.exe. śółte pola wskazują wartości pokazywane w oknie programu.

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”.

Page 9: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

17

Rys. 4. Ogólny widok okna programu ieee754_01.exe.

2. Wykonać próby zapisu i porównać otrzymane reprezentacje róŜnych liczb

(tabela 7), m.in.:

• liczb bardzo małych;

• 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.;

• 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.;

• liczb całkowitych, np. 1, 2, 10, -260, 1410, 2012;

• liczb niewymiernych;

• liczb całkowitych duŜych co do modułu, z małą liczbą cyfr znaczących, np.

234000; 2340000000; 234000000000000;

• liczb całkowitych duŜych co do modułu, z duŜą liczbą cyfr znaczących, np.

123456789123456;

• typowych wartości rezystancji i pojemności stosowanych w układach

elektronicznych (występujących w typoszeregach dostępnych rezystorów

oraz kondensatorów).

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

18

Tabela 7. Wybrane stałe liczbowe przydatne do testów.

Nazwa, opis Wartość

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 210-7 N

2 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

przyspieszenie ziemskie w Warszawie 9,8123 ms-2

przelicznik cali na milimetry 1”=25,3995 mm

temperatura zera bezwzględnego -273,15 ºC

rok gwiazdowy 365,2422 dnia

rezystancja falowa próŜni 376,730313469585 Ω

średni promień równika 6378,245 km

przelicznik kWh na Joule: 1 kWh = 36105 J

definicja metra, liczba okresów drgań kryptonu 86Kr 1650763,73

definicja sekundy, liczba okresów drgań atomu cezu 133Cs 91 9263 1770

1 terrabajt 1012 bajtów

objętość Ziemi 1,083211012 km3

1 petabajt 1015 bajtów

1 eksabajt 1018 bajtów

1 zettabajt 1021 bajtów

liczba Avogadra 6,02214129(27)1023 mol-1

1 jottabajt 1024 bajtów

Page 10: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

19

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.

Na podstawie wykonanych prób sformułować odpowiedzi na następujące pytania.

• Dlaczego liczby zmiennoprzecinkowe nie są pamiętane dokładnie?

• 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?

• Które reprezentacje liczb naleŜy wybierać?

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.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

20

7.3. Obliczenia przebiegu funkcji

Dane są dwa wyraŜenia

112

1 −+= xy , (23)

112

2

2

++=

x

xy . (24)

Kolejne wartości zmiennej x, dla której są liczone wartości y1 oraz y2 tworzą ciąg

geometryczny

pax −= , (25)

przy czym w przygotowanym programie (rys. 5) moŜliwe jest ustawienie wartości

stałej a oraz zakresu zmian wykładnika potęgi

21, ppp∈ . (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).

Page 11: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

21

Rys. 5. Widok okna programu ieee754_02.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,

( )ϕπ ++= ftAAu 2sin01 , (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

( )( )ϕπ +++= NTtfAAu 2sin02 . (28)

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

22

Rys. 6. Widok okna programu ieee754_03.exe.

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?

Page 12: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

23

7.5. Obliczenia wielomianów

Dane są trzy równowaŜne pod względem matematycznym formy zapisu

wielomianu zmiennej rzeczywistej x:

• metoda A: zapis z uŜyciem wzorów skróconego mnoŜenia (dwumianu

Newtona)

( )wpA xxy += , (29)

• metoda B: zapis z uwzględnieniem rozwinięcia dwumianu Newtona

,00

1

1

2

2

1

1

0 0

xaxaxaxaxa

xaxxi

wy

w

w

w

w

w

w

w

i

w

i

iw

iw

i

p

iw

B

+++++=

==

=

−−

−−

= =

−−

−∑ ∑

K

(30)

• metoda C: zapis z rekurencyjnym wyłączeniem przed nawias kolejnych potęg

argumentu x

( )( )( ) 0121 axaxaxaxay wwwC +++++= −− LL . (31)

Współczynniki aw-i wyraŜają się wzorem

i

piw xi

wa ⋅

=− . (32)

Wartość xp w równaniach (29)-(32) odpowiada miejscu zerowemu wielomianu. Na

rys. 7 podano wartości symbolu Newtona ( )!!

!

iwi

w

i

w

−=

dla kolejnych potęg w.

Przykład 1. Dla wielomianu rzędu 7 wskazane formy zapisu przyjmują postać

( )71−= xyA , (33)

17213535217 1234567 −+−+−+−= xxxxxxxyB , (34)

( )( )( )( )( )( ) 17213535217 −+−+−+−= xxxxxxxyC . (35)

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

24

OMMMMMMMN

1721353521717

16152015616

151010515

146414

13313

1212

111

10

→=

→=

→=

→=

→=

→=

→=

→=

w

w

w

w

w

w

w

w

Rys. 7. Trójkąt Pascala (wartości symbolu Newtona).

Rys. 8. Widok okna programu ieee754_04.exe.

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).

Page 13: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

25

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).

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

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 ], (36)

b=[ 1,48625E+3 8,78367E+5 -2,23749E+1 4,77371E+6 1,85049E-4 ]. (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.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

26

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;

• w komórce H14 oblicz sumę pięciu wyrazów wektora w według samodzielnie

przyjętej kolejności losowej.

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?

Page 14: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

27

8. Informacje o dostępnych programach

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

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.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

28

9. Przykładowe zagadnienia na zaliczenie

1. Scharakteryzuj formaty zapisu zmiennoprzecinkowego dostępne w ramach

standardu IEEE 754-2008.

2. Wyjaśnij sposób zapisu liczb w formacie BFP w standardzie IEEE 754-2008.

3. Wyjaśnij sposób zapisu liczb w formacie DFP w standardzie IEEE 754-2008.

4. 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ń.

5. Wyjaśnij, od czego zaleŜy zakres reprezentowanych liczb a od czego ich

precyzja reprezentacji.

6. Wyjaśnij jak rozumiesz termin liczba maszynowa. Jaka jest róŜnica między

liczbą maszynową a liczbą rzeczywistą.

7. Co to jest precyzja zapisu P10?

8. Jakie są krytyczne i niekrytyczne błędy w ramach standardu IEEE 754-2008.

9. Czy kaŜdą liczbę z zakresu przewidzianego w standardzie IEEE 754-2008

moŜna przedstawić w zapisie zmiennoprzecinkowym. Odpowiedź uzasadnij.

10. Wyjaśnij na czym polega kumulacja lub propagacja błędów w obliczeniach

zmiennoprzecinkowych.

11. W oparciu o wzory wyjaśnij, co się dzieje z błędem względnym wyniku przy

obliczaniu sumy dwóch wyrazów.

12. W oparciu o wzory wyjaśnij, co się dzieje z błędem względnym wyniku przy

obliczaniu iloczynu dwóch wyrazów.

13. Omów metody ograniczania błędów numerycznych.

14. Dlaczego binarny zapis zmiennoprzecinkowy (BFP) jest powszechnie

wykorzystywany w programach, zaś dziesiętny zapis zmiennoprzecinkowy

(DFP) w niewielkim (znikomym) stopniu?

15. Na czym polega zaokrąglanie liczby w zapisie zmiennoprzecinkowym a na

czym obcięcie.

Page 15: Kodowanie liczb zmiennoprzecinkowych

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

29

10. Literatura

[1] J. M. Jankowscy: Przegląd metod i algorytmów numerycznych. WNT,

Warszawa, 2009.

[2] D. Kincaid, W. Cheney: Analiza numeryczna. PWN, Warszawa, 2008.

[3] Z. Fortuna, B. Macukow, J. Wasowski: Metody numeryczne. WNT,

Warszawa, 2006.

[4] S. Gryś: Arytmetyka komputerów. Wydawnictwa Naukowe PWN, Warszawa,

2007.

[5] J. Ogrodzki: Wstęp do systemów komputerowych. Oficyna Wydawnicza

Politechniki Warszawskiej, Warszawa, 2005.

[6] B. Pochopień: Arytmetyka w systemach cyfrowych. Akademicka Oficyna

Wydawnicza Exit, Warszawa, 2004.

[7] IEEE 754-2008 - Standard for Floating-Point Arithmetic. DOI

10.1109/IEEESTD.2008.4610935, 2008.

[8] IEEE 754-1985 - Standard for Binary Floating-Point Arithmetic. DOI

10.1109/IEEESTD.1985.82928, 1985.

Standard IEEE 754, przetwarzanie liczb zmiennoprzecinkowych

30

11. Wymagania BHP

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.