21
1/21 Back Close Flyttalls aritmetikk I datamaskinen er alle tall representert i flyttalls aritmetikk. Det betyr at desimal punktet (“float”, “floating point arithmetic” p˚ a engelsk) beveger seg slik at store og sm˚ a tall kan skrives som en tall av moderat størrelse ganget med en potens av et tall som kalles basen, β . I flyttalls aritmetikk, er et vilk˚ arlig tall x er representert som x = ± d 0 + d 1 β + d 2 β 2 + ··· + d t-1 β t-1 + ··· × β e , hvor 0 d i β - 1, i =0, 1, ....

Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

1/21

JJIIJI

Back

Close

Flyttalls aritmetikkI datamaskinen er alle tall representert i flyttalls aritmetikk.

Det betyr at desimal punktet (“float”, “floating point arithmetic” pa engelsk) beveger seg slik atstore og sma tall kan skrives som en tall av moderat størrelse ganget med en potens av et tall somkalles basen, β.

I flyttalls aritmetikk, er et vilkarlig tall x er representert som

x = ±(

d0 +d1

β+

d2

β2+ · · ·+ dt−1

βt−1+ · · ·

)× βe,

hvor0 ≤ di ≤ β − 1, i = 0, 1, . . . .

Page 2: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

2/21

JJIIJI

Back

Close

Eksempler:1) x = 102.345, β = 10

x =

(1 +

2

102+

3

103+

4

104+

5

105

)× 102

2) x = 6.25, β = 2,

x = (110.01)2 = (1.1001)2 × 22 =

(1 +

1

2+

1

24

)× 22

3) x = 102.345, β = 2.

x = (1100110.010110...)2 = (1.100110010110...)2 × 26

=

(1 +

1

2+

1

24+

1

25+

1

28+

1

210+

1

211+ · · ·

)× 26.

Page 3: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

3/21

JJIIJI

Back

Close

Flyttall system:

I maskinen: En flyttall system er definert med 4 heltall:

• β:= base

• t:= presisjon

• L, U := maksimum og minimum tillatt eksponent

x = ±(

d0 +d1

β+

d2

β2+ · · ·+ dt−1

βt−1

)× βe,

hvor0 ≤ di ≤ β − 1, i = 0, 1, . . . , t− 1.

L ≤ e ≤ U.

Page 4: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

4/21

JJIIJI

Back

Close

• d0d1 · · · dt−1 kalles mantisse

• e kalles eksponent eller karakteristikk

• d1d2 · · · dt−1 kalles fraksjonen

Fortegn, mantisse, og exponenten er lagret i forskjellige celler av flyttalls ordet.

I IEEE Single Precision aritmetikk (β = 2), vi har 32 slike celler, hvorav den første brukes til fortegn,8 til eksponenten og de 23 siste brukes til mantissen.

System β t L UIEEE SP 2 24 -126 127 (32-bit)IEEE DP 2 53 -1022 1023 (64-bit)Cray 2 48 -16383 16384HP calculator 10 12 -499 499IBM mainframe 16 6 -64 63

(hidden bit)

Idag er IEEE SP og IEEE DP den standard aritmetikk som brukes i de fleste maskiner. IEEE erogsa utviklet sa den takler unntaks situasjoner (som deling med null) pa en noksa fornuftig mate.

Page 5: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

5/21

JJIIJI

Back

Close

Normaliserte tallDef. Et flyttalls system kalles normalisert hvis det ledende siffer d0 er ikke null.

Hvis et tall er normalisert, er mantissen m slik at

1 ≤ m ≤ β.

Flyttall systemer er som oftest normalisert fordi:

• representasjonen er unik

• det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

• i binær systemer (β = 2) er det ledende tall alltid 1 og trengs derfor ikke a lagres. Systemethar dermed en ekstra bit til presisjonen.

Page 6: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

6/21

JJIIJI

Back

Close

Egenskaper til flyttall systemerFlyttall systemer kan bare representere et endelig og diskret antall tall. Hvor mange?

fortegn: 2 (±, representert som 0, 1 i maskinen)

ledende siffer i mantissen: β − 1, husk: 0 ≤ d0 ≤ β − 1, + normalisering ⇒ 1 ≤ d0 ≤ β.

andre t− 1 siffer i mantissen: βt−1

eksponenten: (U − L + 1) mulige verdier

null: er representert som 00000000000000

Totalt = 2(β − 1)βt−1(U − L + 1) + 1.

Page 7: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

7/21

JJIIJI

Back

Close

Andre mulige tall er:

• Underflow level, UFL: βL

|1|min eksp|00000000000000|

det minste positive normaliserte flyttall

• Overflow level, OFL: βU+1(1− β−t),

|x|max eksp|(β − 1)i mantisse sifrene|

(flere).

Tall som er større enn OFL eller mindre enn UFL kan ikke representers i dette partikulære systemet.

Page 8: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

8/21

JJIIJI

Back

Close

Flyttall er ikke fordelt uniformt over tallinjen

Tallene har lik avstand bare mellom to følgende potenser av β.

De (endelig antall) tall som kan representeres eksakt i et gitt flyttall system kalles maskintall.

Page 9: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

9/21

JJIIJI

Back

Close

AvrundingHvis et reelt tall ikke kan representeres eksakt som flyttall, ma det approksimeres med et nærtmaskintall.

x reelle tall ↔ fl(x) flyttall approksimasjon.

Denne prosessen kalles avrunding og den introduserte feilen kalles avrundingsfeil eller

roundoff error.

De to mest brukte metoder er:

• Chopping, hogging: det β-base tallet av x er trunkert etter t− 1 siffer(avrunding mot null)

• Round to nearest, avrund til nærmest: det flyttall som er nærmest til x. Hvis itvil, brukes det tall som slutter med et jevne (even) siffer(avrunding til even).

Page 10: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

10/21

JJIIJI

Back

Close

Eksempler0) x = 1.56, β = 10, t = 2

Tallet er allrede normalisert

– chop: fl(x) = 1.5

– round to nearest: fl(x) = 1.6

1) x = 102.345, β = 10, t = 5I normalisert form: x = 1.02345× 102

– chop: fl(x) = 1.0234× 102

– round to nearest: fl(x) = 1.0234× 102. (vi har brukt ‘round to even’ regelen).

Page 11: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

11/21

JJIIJI

Back

Close

2) x = 6.25, β = 2, t = 4.I normaliserte binær form: x = (1.1001)2 × 22

– chop: fl(x) = (1.1)2 × 22,

– round to nearest: fl(x) = (1.1)2 × 22 (round to even)

3) x = 102.345, β = 2, t = 5I normaliserte binær form: x = (1.10011 . . .)2 × 26

– chop: fl(x) = (1.1001)2 × 26

– round to nearest: fl(x) = (1.1010)2 × 26.

Avrunding til nærmest er den mest presise men det er koster litt mer a implementere. IEEE standardsystemer bruker avrunding til nærmest.

Page 12: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

12/21

JJIIJI

Back

Close

MaskinpresisjonHusk relasjonen mellom appr.verdi og relativ feil:

x = x(1 + δ), δ := rel. feil.

δ kan være avhenging av x.

• Unit roundoff: er det (minste) tallet u slik at

|δ| ≤ u.

Unit roundoff er den maksimum relativ feil maskinen kan gjøre i lagring av alle mulige flyttall.

• Machine precision (maskinpresisjon) εmach: Minste flyttall slik at

fl(1 + εmach) > 1.

Maskinpresisjonen er avhenging av benyttet avrundings metode:

• chopping: εmach = β1−t,

• rounding: εmach = 12β1−t

Page 13: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

13/21

JJIIJI

Back

Close

Som oftest antar man atu ≈ εmach.

IEEE SP: ε = 2−24 ≈ 10−7 (7 signifikante siffre)IEEE DP: ε = 2−53 ≈ 10−16 (16 signifikante siffre).

Page 14: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

14/21

JJIIJI

Back

Close

Subnormale tallHusk fordelingen av flyttall:

Det finnes ingen flyttall mellom 0 og ±βL.

‘Hullet’ mellom 0 og den minste flyttall skyldes normalisering. Hvis vi tillater ledende siffer a være0, kan hullet rundt 0 fylles med ekstra flyttall.

Slike flyttall kalles denormaliserte og lagres pa en spesiell mate:

|fortegnsiffer|0000...|00000xyz..|

Denormaliserte tall har mindre presisjon enn vanlige flyttall.

Page 15: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

15/21

JJIIJI

Back

Close

Eksepsjonelle tallIEEE standard har to ekstra spesielle tall som brukes til eksepsjonelle andeledninger:

• Inf, “infinity”, som resultat av divisjon med null, f.eks. 1/0

• NaN, “Not a number”, som resultat av ubestemte operasjoner, lik som 0/0, 0 ∗ Inf ellerInf/Inf.

De er representert ved hjelp av spesielle siffer i eksponentenes celler:

• Inf: ±1 i fortegnet, 111.. (U + 1) i eksponentenes celler og 0000000 . . . i mantissen

• NaN: ±1 i fortegnet, 111.. (U + 1) i eksponentenes celler og vilkalige siffer i mantissen

De er veldig greie i den forstand at de hjelper software a takle eskepsjonelle situasjoner istedet fora midlertidig abortere.

MATLAB propagerer Inf, NaN ifølge visse regler:

x ∗ Inf = sign(x) ∗ Inf, x± Inf = ±Inf, 0 ∗ Inf = NaN

±Inf ∗ Inf = ±Inf

±Inf ∗ NaN = NaN

x ∗ NaN = NaN, x± NaN = NaN

Page 16: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

16/21

JJIIJI

Back

Close

Om flyttall aritmetikkAddisjon/subtrasjon:

For a legge sammen eller subtrahere to flyttal, ma man først omskrive dem til samme eksponent ogsa legge sammen eller subtrahere mantisseneEks: β = 10, t = 4. Addisjon:

x1 = 1.234× 10−6, x2 = 3.456× 10−8

x1 = 1.234× 10−6, x2 = 0.003456× 10−6

Na kan mantissene legges sammen,

x1 + x2 = 1.2437456× 10−6 ⇒ 1.244× 10−6

(med 4 siffer).Den flytting av siffer gjør at vi har nesten mistet all informasjonen om x2.

• Summe/subtrasjon av to t-siffer tall er ett flyttall som har mer enn t siffer

• Alle de ekstra siffer er mistet nar tallet avrundes

• Worst case scenario: alle sifre i det minste tall kan ga tapt.

Page 17: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

17/21

JJIIJI

Back

Close

Multiplikasjon:

Nar to flyttall multipliseres, behøver deres eksponenter ikke være like:

• eksponentene summeres

• mantissene multipliseres.

Som oftes har det nye flyttallet en 2t-siffret mantisse. Da kan tallet avrundes til t siffer.

Eks: β = 10, t = 4.x1 = 1.234× 10−6, x2 = 3.456× 10−8

x1 ∗ x2 = (1.234× 3.456)× 10−14 = 4.264704× 10−14 ⇒ 4.264× 10−6

(med 4 siffer). Vi ma desverre ignorere halvparten av siffrene av det reelle produkt.

Page 18: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

18/21

JJIIJI

Back

Close

Divisjon:

Til og med divisjon av to flyttall kan gi et resultat som ikke kan representeres eksakt.

Eks: 1, 10 kan representeres eksakt i binær form, men 1/10 kan ikke (uendelig siffer)

Aritmetikk med flyttall gir ikke nødvendigvis flyttall som kan representeres eksaktpa maskinen. I sa fall ma tallet avrundes.

Siden flyttall ikke er jevnt fordelt, sa er absolutt feilen ikke uniform, men relativ feilen kan begrensesav u (evt. εmach).

Ideelt:x flop y = fl(x op y)

IEEE standard følger denne regel sa langt at x, y er i flyttall system range.Merk at:

• noen operasjoner kan være kommutative men ikke assosiative.

Page 19: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

19/21

JJIIJI

Back

Close

KansellasjonDette er et alvorlig problem som kan skje nar vi subtraherer to tall som er nesten like.

Eksempel: x = 4.0027, y = 4.0047, εmach = 0.5× 10−4. Regn ut

• maksimum absolutt feil

• maksimum relativ feil

i y − x.

Kansellasjonsfeil kan ofte unngaes med hjelp av analyse (omskriving av problemet).

Page 20: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

20/21

JJIIJI

Back

Close

Eksempel: kvadratisk formel

ax2 + bx + c = 0

x =−b±

√b2 − 4ac

2a

Page 21: Flyttalls aritmetikk - Universitetet i Bergenanto/i162/Slides/Forel2pv.pdf• representasjonen er unik • det blir ikke brukt ekstra plass til nuller, og dermed er presisjonen øket

21/21

JJIIJI

Back

Close

Eksempel: endelig differense approksimasjon

f ′(x) ≈ f(x + h)− f(x)

h