Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve?...

23
FLOATING POINT ARITHMETIC Aritmetika u pokretnom zarezu

Transcript of Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve?...

FLOATING POINT ARITHMETIC

Aritmetika u pokretnom zarezu

Dogovor

Zarez Tačka

Konvencija

Kako smo do sada predstavljali brojeve?

Računari su namenjeni radu s brojevima

Koje brojeve možemo predstaviti sa N bita?

Unsigned integers:0 to 2N - 1

Signed integers (komplement dvojke)-2(N-1) to 2(N-1) - 1

Možemo posmtrati kao zapis sa fiksnom pozicijom tačke na poslednjem mestu

Šta sa ostalim brojevima?

Kako predstaviti Veoma velike brojeve? (broj sekundi u veku)

3,155,760,00010 (3.1557610 x 109)

Veoma male brojeve? (prečnik atoma)0.0000000110 (1.010 x 10-8)

Racionalne brojeve 2/3 (0.666666666. . .) Iracionalni brojeve 21/2

(1.414213562373. . .) Transcedentalne brojeve e (2.718...), (3.141...)

Svi su zastupljeni u praktičnoj primeni

Iracionalni i imaginarni brojevi

Dogovorom tačku fiksno pomerimo na određenu poziciji

Sa 32 bita i zarezom na sredini: Opseg

Signed -32768 do ≈32767 Unsigned 0 do ≈65536

Rezolucija (najmanji korak/kvant): ≈15.26 x 10-6

Jednostavno rešenje - fixed point

Fixed point

Koristimo celobrojnu ALU Sabiranje/oduzimanje direktno Množenje

Važi ukoliko nema prekoračenja opsega (overflow)

Rešenje?

Dinamički opseg (odnos najvećeg i najmanjeg broja) definisan na isti način kao i za integer

20log10(2(N-1)) = 6dB*(N-1) Za N=32 signed DNR ≈ 187dB

Često nedovoljan u naučnim primenama Koliko je bita potrebno za istovremeno predstavljanje

1x1020 1x10-20

Odgovor: log2(max/min) ≈ 133

VEOMA SKUPO

Eksponencijalna notacija (decimalna)

Reprezentacije se razlikuju u poziciji decimalne tačke (zareza) – “tačka pliva” levo ili desno (praćeno promenom vrednosti eksponenta).

Ekvivalentne reprezentacije broja 1234 123400.0 x 10-2

12340.0 x 10-1

1234.0 x 100

123.4 x 101

12.34 x 102

1.234 x 103

0.1234 x 104

123400.0 x 10-2

12340.0 x 10-1

1234.0 x 100

123.4 x 101

12.34 x 102

1.234 x 103

0.1234 x 104

Normalizovana forma:• nema vodećih nula• tačno jedna cifra levo od decimalne tačke

Elementi broja u pokretnom zarezu

-1.3274 x 10-2

Znak mantise

Pozicija decimalne tačkeMantisa

Eksponent

Znakeksponenta

Osnova (baza)

Normalizovana forma

Eksponencijalna notacija – dec vs bin

Računari rade isključivo sa binarnim ciframa

3.12510 x 101 31.2510

1.1111012 x 24 11111.01224 23 22 21 20 2-1 2-2

4

1

IEEE 754 Standard

Najrašireniji standard za reprezentaciju brojeva u pokretnom zarezu

Single precision: 32 bita, sastoji se od... Znak bit (1 bit) Eksponent (8 bita) Mantisa (23 bita)

Double precision: 64 bita, sastoji se od… Znak bit (1 bit) Eksponent (11 bita) Mantisa (52 bita)

Single precision format

float tip u C-u Mantisa je normalizovana Sadrži “skriveni bit” sa leve strane Skriveni bit uvek ima vrednost 1 Primer:

manitsa predstavlja

Eksponent Mantisa

32 bita

Znak1 bit 8 bit 23 bit

10100000000000000000000

1.1012 = 1.62510

Single precision format

Eksponent je neoznačen Koristi takozvanu pomerenu notaciju (eng.

biased notation) Realnu vrednost eksponenta dobijamo

oduzimanjem ofset vrednosti od sačuvane vrednosti

SP offset 127 FP offset 1023

Primer: eksponent predstavlja

10000011

131 - 127 = 4

Normalizovane vrednosti

Single precision

Važi za vrednosti polja eksponenta [1..254], takozvane normalizovane vrednosti

0 10000010 11000000000000000000000

1.112

130 – 127 = 3

0 = pozitivna mantisa

+1.112 x 23 = 1110.02 = 14.010

Denormalizovane vrednosti

Uslov Vrednost polja eksponenta je 000…0

Vrednosti Realna vrednost eksponenta je E = -ofset + 1 Skriveni bit ima vrednost 0

Slučajevi Mantisa je 000…0

Predstavlja vrednost 0 Dve oznake za 0 (+0 i -0)

Mantisa različita od 000…0 Brojevi bliski nuli Gubitak preciznosti sa smanjenjem vrednosti

Specijalne vrednosti

Uslov Vrednost polja eksponenta je 111…1

Slučajevi Mantisa je 000…0

Predstavlja vrednost ∞ (beskonačno) Zamena za prekoračenje Primeri: 1.0/0.0 = 1.0/0.0 = +∞, 1.0/-0.0 = -∞

Mantisa različita od 000…0 Nije brojna vrednost - Not-a-Number (NaN) Slučajevi kada numerička vrednost nije

određena Primeri: sqrt(–1), ∞ - ∞

Raspored vrednosti

-15 -10 -5 0 5 10 15

Row 16 Row 18 Row 20

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Row 16 Row 18 Row 20

Primer: 6-bitni format• 3 bita eksponent• 2 bita mantisa

Osobine

Poređenje FP vrednosti Gotovo da se može koristiti unsigned integer

poređenje Moraju se prvo porediti znaci Problematične ne-brojne vrednosti (NaN)

Preciznost Širina mantise

Dinamički opseg Širina eksponenta

SP: 1.4x10–45 3.4x10+38 DNR ≈ 1668dB

DP: 4.9x10–324 1.8x10+308 DNR > 12000dB

Specifičnosti

Sabiranje nije asocijatovno! Probajte u Matlab || Octave || Python || Julia.

Single precision Niz: 1x106, -1x106 , 1x10-1

Nepostojanje klasičnog overflow-a Moguć underflow Operacije znatno složenije za

implementaciju (skuplje) u odnosu na odgovarajuće celobrojne

Često nisu zastupljene u procesorima namenjenim embedded sistemima

Microblaze FP aritmetika

Opciona FPU HW podrška za IEEE754 single precision Dva nivoa složenosti

Sabiranje, oduzimanje, množenje, deljenje, poređenja Kvadratni koren, konverzija (int float)

Ne nudi podršku ze denormalizovane operande

Potrebno pažljivo kodovanje kako bi se iskoristila HW akceleracija

Za više detalja pogledati MicroBlaze Processor Reference Guide

Pitanja?