Top Banner
FLOATING POINT ARITHMETIC Aritmetika u pokretnom zarezu
23

Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Mar 23, 2019

Download

Documents

vuanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

FLOATING POINT ARITHMETIC

Aritmetika u pokretnom zarezu

Page 2: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Dogovor

Zarez Tačka

Page 3: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Konvencija

Page 4: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 5: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Š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

Page 6: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Iracionalni i imaginarni brojevi

Page 7: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 8: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Fixed point

Koristimo celobrojnu ALU Sabiranje/oduzimanje direktno Množenje

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

Page 9: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 10: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 11: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Elementi broja u pokretnom zarezu

-1.3274 x 10-2

Znak mantise

Pozicija decimalne tačkeMantisa

Eksponent

Znakeksponenta

Osnova (baza)

Normalizovana forma

Page 12: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 13: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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)

Page 14: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 15: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 16: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 17: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 18: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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), ∞ - ∞

Page 19: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 20: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 21: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 22: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

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

Page 23: Aritmetika - rt-rk.uns.ac.rs · Šta sa ostalim brojevima? Kako predstaviti Veoma velike brojeve? (broj sekundi u veku) 3,155,760,00010 (3.1557610 x 109) Veoma male brojeve?

Pitanja?