Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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, . . . .
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.
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.
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.
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.
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.
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.
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.
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).
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).
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.
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
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).
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.
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
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.
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.
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.
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).
20/21
JJIIJI
Back
Close
Eksempel: kvadratisk formel
ax2 + bx + c = 0
x =−b±
√b2 − 4ac
2a
21/21
JJIIJI
Back
Close
Eksempel: endelig differense approksimasjon
f ′(x) ≈ f(x + h)− f(x)
h