Maradéko oztá nagy zámokkal Uray M. Jáno, 01 1 Bevezeté Célunk a nagy termézete zámokkal való zámolá. A nagy itt azt jelenti, hogy nagyobb, mint amivel a zámítógép közvetlenül zámolni tud. A termézete zámok körében a négy alapművelet a következő: özeadá, kivoná, zorzá é maradéko oztá. Adottnak tekintjük, hogy a zámítógép ezeket ki zámokra el tudja végezni, é célunk, hogy ennek egítégével nagy zámokra i megvalóítuk a műveleteket. Haonlóan fogunk eljárni, ahogy írában zoká zámolni. Írában a zámolát arra vezetjük viza, hogy a tíze zámrendzer zámjegyeivel tudunk zámolni. Írjuk fel hát mi i a zámainkat egy olyan zámrendzerben, amelynek zámjegyeivel a gép közvetlenül zámolni tud. A zámrendzer alapzámát jelöljük q-val, é legyen kettőhatvány, mégpedig n. Ha pl. egy 3-bite procezorunk van, akkor n = 3, é q = 3 = 4.94.967.96. 1.1 Gond az oztáal Ha végiggondoljuk hogy hogyan végezzük el a műveleteket írában, akkor rájövünk, hogy mége tudunk mindent vizavezetni a zámjegyekkel való zámolára. Az özeadá, a kivoná é a zorzá még megy, az oztáal azonban gond van. Az oztáal akkor van gond, ha az oztó több zámjegyből áll. Ilyenkor ugyani minden lépében ezzel a több zámjegye zámmal kell oztani, mert cak az oztandót bontjuk fel rézekre. Ezt még tovább kéne bontani, de ez olyan egyzerűen már nem megy. A továbbiakban már cak a maradéko oztáal foglalkozunk, épedig azzal, hogy hogyan lehet az oztát lebontani egézen a zámjegyekig. 1. Megoldá A problémát úgy oldjuk meg, hogy az oztót kerekítjük. A pontatlan, kerekített oztóval oztunk, majd az így kapott eredményből vizakövetkeztetünk az eredeti oztá eredményére. Nyilván azt zeretnénk, hogy a kerekített oztóval könnyebb legyen zámolni, mint az eredetivel. Ezért a kerekített érték úgy fog kinézni, hogy egy kettőhatvány zorzódik egy elég kici zámmal (olyan kicivel, amivel már közvetlenül tudunk zámolni, vagyi q-nál kiebbel). Hogy a lehető legkiebb legyen a kerekítéi hiba, a lehető legnagyobbnak válaztjuk az elég kici zámot. 1.3 Kicit formáliabban Jelöljük az oztandót a-val, az oztót pedig b-vel. Célunk az a/b maradéko oztá hányadoát é maradékát meghatározni, ezeket jelöljük rendre c-vel é d-vel. (Mind a négy zám termézete zám.) A maradéko oztá azt jelenti, hogy a = bc + d, é d < b. Tezünk egy kikötét: a < bq. Miért jó ez, é mi következik ebből? Írjuk fel, hogy bq > a = bc+d bc. Ha a két végét özeolvauk, é oztjuk a pozitív b-vel, akkor azt kapjuk, hogy c < q. 1
Vagyi, az a < bq feltétellel azt kötöttük ki, hogy a hányado, c belefér egy zámjegybe. Bár elő ránézére ez erő megzorítának tűnhet, de az általánoabb oztá mindig vizavezethető ilyen oztáokra (gondoljunk arra, hogy hogyan oztunk írában). A feltétel egyébként azt i kiköti, hogy b 0, hizen 0q-nál nem lehett kiebb az a. Tegyünk még egy kikötét: b q. Ezzel azt érjük el, hogy a b-ben van legalább n bit, amit majd a kerekíté orán igyekzünk megőrizni. Az b < q eettel nem foglalkozunk külön, mert akkor az oztá nyilvánvaló (vagy legalábbi nem nehezebb, mint mondjuk a zorzá, amivel zintén nem foglalkozunk). A b < q eetet amúgy i érdeme külön kezelni, mivel lényegeen hatékonyabb, mint az általáno eet, é például zámrendzerátváltáokhoz gyakran van ilyenekre zükég (pl. ha tíze zámrendzerben akarunk kiírni egy zámot). Jelöljük -el, hogy hány bitet hanyagolhatunk el legfeljebb a kerekíté orán: := log b + 1 n. Mivel + n a b bitjeinek záma, n bitet fogunk megőrizni a kerekíté orán. (A b q feltételből következik, hogy termézete zám, tehát nem negatív.) Az oztó kerekített értékét jelöljük b -vel, é az a/b oztából zármazó eredményeket pedig c -vel é d -vel, értelemzerűen. Ez azt jelenti, hogy a = b c + d é d < b. A kerekíté miatt b oztható -nel, vagyi az aló bitje mind nulla. Még két jelölé: legyen b a két oztó eltérée, azaz b := b b ; márézt legyen c a két hányado előjele eltérée, azaz c := c c. 1.4 A kerekített oztá Azért kerekítettük b-t, hogy b -vel könnyebb legyen oztani. Valóban könnyebb oztani vele? A jó az, hogy b oztható -nel, vagyi zorzatként felírható. A zorzat tényezőivel pedig külön-külön oztunk. De hogyan kell tényezőnként oztani maradékoan? Nézzük általánoan: ozuk el a-t xy-nal maradékoan. Előzör x-zel: a = xc x + d x, ahol d x < x. Majd a c x -et ozuk el y-nal i: c x = yc y + d y, ahol d y < y. Behelyetteítve: a = x(yc y + d y ) + d x = xyc y + xd y + d x. Úgy tűnik, hogy az xy-nal való oztá hányadoa c y, maradéka pedig xd y + d x. Hogy ez tényleg így van-e, az már cak attól függ, hogy a maradék kiebb-e, mint xy. Felhaználjuk a d x < x é a d y < y feltételeket. Mivel egéz zámokról van zó, az i igaz, hogy d y y 1. x-zel zorozva: xd y xy x. Hozzáadjuk a d x < x egyenlőtlenéget: xd y + d x < xy, é ezt akartuk megmutatni. Tehát felbonthatjuk a b -vel való oztát két rézre: előzör -nel oztunk, majd a b máik tényezőjével. A kettőhatvánnyal való maradéko oztá nem cinál mát, mint két rézre oztja az a bitjeit: az aló bit lez a maradék, é a többi a hányado. Az a felő bitjeit kell már cak b -nel oztani, ami egy elég kici egéz zám. Az így kapott maradékot pedig cak ki kell egézíteni az a aló bitjeivel, hogy megkapjuk a b -vel való oztá maradékát. Kerekítéi tételek Már tudjuk, hogy hogyan kell oztani b -vel, de a legfontoabb kérdére még nem adtunk válazt: hogyan fogjuk a kerekített oztá eredményéből, azaz c -ből é d -ből megkapni az eredeti oztá eredményét, c-t é d-t? Ehhez előzör i meg kell mondani, hogy pontoan hogyan kerekítettünk. Azt már mondtuk, hogy b -nek ozthatónak kell lennie -nel. Az fenti válaztáa azért nagyon fonto, mert így a b-ből a lehető legtöbb értéke bit marad meg úgy, hogy azok még beleférjenek egyetlen zámjegybe. Azt vizont még nem mondtuk meg, hogy milyen irányban kerekítünk. Ez alapján három lehetőéget nézünk meg: a lefelé kerekítét, a felfelé kerekítét é a zabályo kerekítét. Lefelé
kerekíténél b az a legnagyobb -nel oztható zám lez, mely legfeljebb b. Felfelé kerekíténél fordítva: b az a legkiebb -nel oztható zám lez, mely legalább b. Szabályo kerekíténél b a b-hez legközelebb álló -nel oztható zám lez. Ha két ilyen i van, akkor a nagyobbik. Mindhárom kerekítének megvan a maga előnye é hátránya. A lenti tételek válazt fognak adni arra a kérdére, hogy a kerekített oztá hányadoa mennyivel térhet el az eredeti oztá hányadoától, azaz a c lehetége értékeit mondják meg..1 Segédtétel Előzör bizonyítunk egy általáno tételt, amely egyelőre távol áll az eddigi jelöléektől. Vizont fel tudjuk haználni az eredményt a három konkrét kerekítéi tétel bizonyítáához. Jelöléek 1. a, b 1, b, c 1, c, d 1, d, x, y, z N. b := b b 1 3. c := c 1 c Feltétel 1. Maradéko oztá: i {1, } : a = b i c i + d i d i < b i.. Oztók vizonya: b b 1 > 0. 3. Az oztók eltérée: b x 4. c < y. 5. log b 1 z Állítá c [0.. x+y z ] Bizonyítá 1. Megmutatjuk, hogy c 0. Ez az állítá egyik fele. Egyrézt a = b c +d b c. Márézt a = b 1 c 1 +d 1 < b 1 c 1 +b 1 = b 1 (c 1 +1) b (c 1 +1). A két végét özeolvava azt kapjuk, hogy b (c 1 +1) > b c. Ezt eloztjuk a pozitív b -vel: c 1 + 1 > c, átrendezve c > 1. De c egéz zám, így c 0. Ha meggondoljuk, ez elég termézete: ha az oztót növeljük, akkor a hányado legfeljebb cökkenhet.. Megmutatjuk, hogy c x+y z. Ez az állítá máik fele, a kevébé nyilvánvaló réz. Előzör alakítuk át a b 1 c-t: b 1 c = b 1 (c 1 c ) = b 1 c 1 b 1 c = b 1 c 1 (b b)c = b 1 c 1 b c + b c = (a d 1 ) (a d ) + b c = d d 1 + b c < b d 1 + b c b + b c = (b 1 + b) + b c = b 1 + b (c + 1) b 1 + x y = b 1 + x+y. Olvauk öze: b 1 c < b 1 + x+y, é ozuk el a pozitív b 1 -gyel: c < 1 + x+y b 1. A jobb oldalon álló kifejezét tovább becüljük felülről úgy, hogy a b 1 -t becüljük alulról. 3
Tudjuk, hogy log b 1 z, amiből következik, hogy log b 1 z, azaz b 1 z. Ezt alkalmazzuk: c < 1 + x+y b 1 1 + x+y = 1 + x+y z. Azt kaptuk, hogy c < 1 + x+y z, z de mivel egéz zámokról van zó, c x+y z. Megjegyzéek 1. A bizonyítá elő felében cak az elő két feltételt haználtuk.. A tételben zereplő b-nek é c-nek egyelőre emmi köze ninc a korábban bevezetett ugyanilyen nevű paraméterekhez. Vizont a lenti három tételben úgy fogjuk haználni ezt a egédtételt, hogy mégi lez közük egymához még ha nem i feltétlenül fognak egybeeni az azono nevűek (hanem pl. ellentettjei leznek egymának).. A lefelé kerekíté tétele Feltétel b-t lefelé kerekítjük: b = b b, A kerekíté pontoága: b. A kerekített oztó i ugyanannyi értéke bitet tartalmaz, mint az eredeti: log b + 1 = + n Állítá c {0, 1, }. Bizonyítá Felhaználjuk a egédtételt, az alábbi zerepoztáokkal: b 1 := b, c 1 := c, d 1 := d ; b := b, c := c, d := d; x :=, y := n, z := + n 1. A feltételek nyilvánvalóan teljeülnek. A tétel azt mondja, hogy c [0.. x+y z ]. Mot x + y z = + n ( + n 1) = 1, azaz c [0..] = {0, 1, }, é ezt kellett bizonyítani..3 A felfelé kerekíté tétele Feltétel b-t felfelé kerekítjük: b = b + b, A kerekíté pontoága: b. Állítá c {, 1, 0}. 4
Bizonyítá Imét felhaználjuk a egédtételt, de mot a vezőök tekintetében fordított zerepoztáal: 1. b 1 := b, c 1 := c, d 1 := d;. b := b, c := c, d := d ; 3. x :=, y := n, z := + n 1. A legtöbb feltétel magától értetődően itt i teljeül. Az egyetlen kérdé a c < y, azaz hogy c < q. Azt tudjuk, hogy c < q. Megmutatjuk, hogy c c. Azt a trükköt haználjuk, hogy felhaználjuk a egédtétel elő felét. Ehhez zükég van arra az ézrevételre, hogy a c < y feltételt ott még nem haználja fel a tétel, tehát azt a felét nyugodtan alkalmazhatjuk anélkül i. Az a réz pedig éppen azt mondja, hogy c c, így megmutattuk, hogy c < q. Mot már teljeül minden feltétel a egédtételhez. Ebből következik, hogy c [0.. x+y z ]. Azért c, mert az itteni c = c c, de az ottani c = c c. Mot i igaz, hogy x + y z = + n ( + n 1) = 1, ezért c [0..], vagyi c {, 1, 0}, é ezt kellett bizonyítani..4 A zabályo kerekíté tétele Feltétel A kerekíté pontoága: b 1. A kerekített oztó nem tartalmaz keveebb értéke bitet, mint az eredeti: log b + 1 + n Állítá c { 1, 0, 1}. Bizonyítá Két eet lehetége attól függően, hogy b vagy b a nagyobb. Mindkét rézben a egédtételre hivatkozunk. Ha b b, ekkor ugyanazt a zerepoztát haználjuk, mint a felfelé kerekíté tételénél, kivéve: x := 1. Ekkor x + y z = ( 1) + n ( + n 1) = 0. A egédtétel zerint c [0.. 0 ], azaz c { 1, 0}. Ha b b, akkor pedig a lefelé kerekíté tételének zerepoztáát vezük alapul, de itt i van egy kivétel: x := 1. A c < q feltételt i ugyanúgy látjuk be, mint ott. Az előző eethez haonlóan mot i x + y z = 0, tehát a tétel zerint c [0.. 0 ] = {0, 1}. Ha özeítjük a két eredményt: c { 1, 0, 1}, megkapjuk a bizonyítandó állítát. 3 Vizakövetkezteté Az eddigiek alapján, ha imerjük a pontatlan hányadot (c -t), akkor tudunk mondani egy zűk (háromelemű) halmazt, amelyben a ponto hányado (c) van. De még nem tudjuk megmondani, hogy éppen melyik lez a három közül. Arról zintén nem volt zó, hogy a maradékot (d-t) hogyan határozzuk meg. Mot ezekről lez zó. 5
Nagy zerence, hogy a c lehetége értékei cak háromelemű halmazt alkotnak, é nem mondjuk tízeleműt vagy zázeleműt (ezért volt kulcfontoágú, hogy a b annyi értéke bitet megőriz a b-ből, amennyit cak lehet). Így ugyani mindöze két özehaonlítáal el tudjuk majd dönteni, hogy melyik eet áll fenn. A legegyzerűbb módzer az, hogy megzorozzuk c -t b-vel, a ponto oztóval. Ha többet kapunk, mint az a, akkor c túl ok volt, cökkentük eggyel. Ha pedig az eredmény jóval kiebb, mint az a (azaz legalább b-vel kiebb), akkor növeljük a c -t eggyel. (Kerekítéfüggő, hogy melyiket kell megvizgálni.) Így két lépében biztoan eljutunk a jó c-hez. A maradékot pedig az a bc kifejezé adja meg. Megnézünk egy máik módzert i, egy fokkal hatékonyabbat. Ott nem nem b-vel fogjuk zorozni a c -t, hanem b-vel, amely egy zámjeggyel rövidebb, így eggyel keveebb elemi zorzá kell hozzá. A módzert a háromféle kerekítére külön-külön mutatjuk be. 3.1 Lefelé kerekíté Mot az a helyzet, hogy c {0, 1, }. Ez azt jelenti, hogy a kereett c vagy egyenlő c -vel, vagy eggyel keveebb, vagy kettővel keveebb. Előzör megmutatjuk, hogy c < c k a b < c k, ha k egy tetzőlege egéz zám. Becüljük az a b -t: a b = bc+d b = c + d b, é tudjuk, hogy 0 d < b, ezért c a b < c + 1. A jobbról balra irány már következik i ebből. A fordítotthoz még az kell, hogy a bal oldalon egéz zámok vannak, így c + 1 c k, é ebből következik a jobb oldal. Mielőtt megindokolnánk, hogy miért van zükég erre az állítára, tovább alakítjuk a jobb oldalt. Megzorozzuk mindkét oldalt a pozitív b-vel, é beírjuk, hogy a = b c + d : b c + d < bc kb. Ezt átrendezzük, felhaználva, hogy b = b b : d < b c kb. A végeredmény tehát: c < c k d < b c kb. De miért i jó ez nekünk? Ha k-t 0-nak vagy 1-nek válaztjuk, akkor zükége é elégége feltételeket kapunk arra, hogy c mikor kiebb c -nél legalább eggyel, é mikor kettővel. A féltételben pedig, mint ígértük, a b c zorzat zerepel. Már cak a d meghatározáa van hátra. Ezt a c három lehetége értékére külön adjuk meg. Mindhárom eetben az a kétféle felíráából indulunk ki: bc + d = b c + d. Ebbe fogjuk a c különböző értékeit helyetteíteni. Pontoan akkor lez c = c, ha d b c. Ezt a fenti feltételből kapjuk a k = 0 helyetteítéel (é mindkét oldal tagadáával). Ekkor az a kétféle felíráa így fog kinézni: bc + d = b c + d, átrendezve: d = d b c. Egyébként, azaz ha d < b c, akkor c < c. Pontoan akkor lez c = c 1, ha b b c d (ez a k = 1 helyetteítéből adódik). Ekkor b(c 1)+d = b c +d, átrendezve: d = b ( b c d ). A harmadik eetben, azaz ha b < b c d, lez c = c. Ekkor b(c ) + d = b c + d, átrendezve: d = b (( b c d ) b). Igyekeztünk könnyen zámolható alakban felírni a végeredményeket. Például a harmadik eet felíráából látzik, hogy b c d kifejezét többzör i haználjuk, így előre ki tudjuk zámítani. Márézt a rézeredmények oem negatívak, é a lehető legkiebbek. A legvégén, az Özefoglalá c. fejezetben megimételjük a végeredményeket. 3. Felfelé kerekíté Mot c {, 1, 0}, vagyi c vagy egyenlő c -vel, vagy eggyel több, vagy kettővel több. Mot azt fogjuk előzör bebizonyítani, hogy c > c + k a b c + k + 1. Még mindig igaz, hogy c a b < c+1. Ezt felhaználva a jobb oldali állítából következik, hogy c+1 > c +k+1, ami ugyanaz, mint a bal oldali. Ha a bal oldali egyenlőtlenégből indulunk ki, akkor kihaználjuk, 6
hogy egéz zámokról van zó, é átírjuk úgy, hogy c c + k + 1. Ebből pedig következik a jobb oldali állítá. Átalakítjuk a jobb oldalt. Megzorozzuk a pozitív b-vel, é beírjuk az a máik alakját: b c + d bc + b(k + 1). Átrendezzük (mot b = b b): b c + d b(k + 1). Ezzel megkaptuk az özefüggét: c > c + k b c + d b(k + 1). Mot jön a d meghatározáa, a három eetben. Pontoan akkor lez c = c, ha b c + d < b (ez a k = 0 eet). Ekkor bc + d = b c + d, átrendezve: d = b c + d. Egyébként (azaz ha b c + d b), pontoan akkor lez c = c + 1, ha b c + d b < b (ez a k = 1 eet). Ekkor b(c + 1) + d = b c + d, azaz d = b c + d b. Különben (azaz ha b c +d b b) c = c +, amiből következik, hogy b(c +)+d = b c +d, é átrendezve megkapjuk, hogy d = b c + d b. 3.3 Szabályo kerekíté Mot c { 1, 0, 1}, vagyi c vagy egyenlő c -vel, vagy eggyel több, vagy eggyel keveebb. Előzör azt kell megnézni, hogy melyik a nagyobb: b vagy b? Ha b b, akkor tulajdonképpen lefelé kerekítettünk. Vagyi haználhatjuk a lefelé kerekíté képleteit, de mot még azt i tudjuk, hogy c nem lehet c, tehát a máodik özehaonlítá felelege. Ha pedig b b, vagyi felfelé kerekítettünk, akkor ugyanúgy kell eljárni, mint a felfelé kerekíténél, cak itt em fordulhat elő az utoló eet, azaz hogy c = c +. 4 Előnyök é hátrányok Azért vizgáltunk meg többféle kerekítét i, mert mindegyiknek megvannak a maga előnyei é hátrányai. Ezeket nézzük mot meg, zempontok zerint. 4.1 A kerekíté Melyik irányba milyen könnyű kerekíteni? A legkönnyebb a lefelé kerekíté: egyzerűen cak elhagyjuk a b aló bitjét, nullát írva a helyükre. Azt i cak gondolatban, hizen úgyi b -nel fogunk zámolni, vagyi a felő n bittel. A felfelé kerekíté egy fokkal nehezebb: amellett, hogy az aló bitet kinullázzuk (zintén cak gondolatban), meg kell nézni, hogy eleve mind nulla volt-e; ha nem, akkor az egézhez hozzá kell adni -t. Legalábbi, ha a zokáo felfelé kerekítére gondolunk. De vegyük ézre, hogy a kerekítéi tételben cak annyit tettük fel, hogy b, vagyi akár i lehet a kerekíté pontatlanága. Ezt azt jelenti, hogy valójában nem kell figyelnünk, hogy az aló bit mind nulla-e (ennek az eélye amúgy i elenyézően cekély) elég, ha feltétel nélkül hozzáadjuk a -t a zámhoz. Ez a hozzáadá cak a felő n bitet érinti: ahhoz kell egyet hozzáadni. A zabályo kerekíténél meg kell nézni az. bitet, mert attól függ, hogy melyik irányba kerekítünk. Ha 1, akkor felfelé, különben lefelé. Itt i kinullázzuk gondolatban az aló bitet, é ha felfelé kerekítünk, akkor hozzáadunk -t. 4. Túlcordulá Mindeddig nem volt zó egy úlyo problémáról. Ez az elméleti zámoláokat nem befolyáolja, de a zámítógépe megvalóítát lényegeen annyira, hogy akár ez lehet a legfontoabb zempont, ami dönt a három kerekíté között. 7
Azt feltettük, hogy c < q, tehát c belefér egyetlen zámjegybe (má zóval gépi zóba). Az i világo, hogy b < q, hizen az -et éppen úgy válaztottuk meg, hogy a maradék beleférjen egy zámjegybe. Arról azonban nem volt zó, hogy a kerekíté után i megmaradnak-e ezek a tulajdonágok, vagyi hogy c? < q é hogy b? < q. Foglaljuk öze egy táblázatban, hogy mikor melyik hogyan érülhet meg: b c Lefelé kerekíté (jó) q, q + 1 Felfelé kerekíté q (jó) Szabályo kerekíté q q Látható, hogy a felfelé kerekíté a legjobb, mert ott cak egyféleképpen cordulhat túl valami, é az már a kerekíténél kiderül. A zabályo kerekíténél bármelyik lehet q, de nem egyzerre. É amikor már tudjuk a kerekíté irányát, akkor az egyiket ki tudjuk zárni. Mivel lényegeen könnyebb (é hatékonyabb) egy zámjegyű zámokkal zámolni, ezért a túlcorduló eeteket külön érdeme kezelni. A b = q eet a legegyzerűbb, mert az már a kerekíté előtt látzik: akkor fordul elő, amikor felfelé kerekítünk, é a b felő n bitje mind 1. Számolni i könnyű vele, hizen ekkor b = +n, é kettőhatvánnyal borzaztó egyzerű maradékoan oztani. Ha a c vielkedik rozul, azzal az a baj, hogy nehezebb ézre venni. Lefelé kerekítékor fordulhat elő. Könnyen látható, hogy c < q a < b q. Ha a vezőket elhagyjuk, akkor tudjuk, hogy mindkét oldal igaz. Ellenőrizni kell tehát, hogy amikor lefelé kerekítünk, megmarad-e ez a tulajdonág. Ha nem, akkor a c túlcordul. A zabályo kerekíténél tudjuk, hogy ekkor c = q, de a lefelé kerekíténél még q + 1 i lehet. A b c kizámítáánál ezeket az eeteket külön kell zámolni. Ha c = q, akkor könnyű, mert q kettőhatvány. Ha c = q + 1, akkor em olyan nehéz, lényegében cak egy özeadá: b q + b. 4.3 A vizavezeté műveletigénye A lényege különbég a három vizavezeté között a feltételekben é a d kizámítáában van. Ezek a végén, az Özefoglalá c. fejezetben láthatók rendzerezve. A műveletek orán nagy zámokat kell özehaonlítani, özeadni é kivonni. Ezek egyenként több (-el arányo zámú) elemi művelettel helyetteíthetők. Nem mindegy tehát, hogy hány művelet kell elvégezni. Mind a lefelé, mind a felfelé kerekíténél egy vagy két özehaonlítát kell végezni, mert három eet lehetége. A zabályo kerekíténél azonban mindig cak egyet kell: ha már tudjuk ugyani, hogy merre kerekítünk (é ez egyetlen biten múlik), akkor cak két eet van. Érdeme megjegyezni, hogy bizonyo eetekben az elő két kerekíténél i kiküzöbölhető a máodik özehaonlítá. Ha ugyani kiderül, hogy b < 1 (ami egyetlen bit vizgálatát jelenti), akkor a zabályo kerekítéhez haonlóan nem lehet c é c eltérée, tehát kizártuk a harmadik lehetőéget. Haonlítük még öze az elő, nem megúzható özehaonlítáokat i. A lefelé kerekíténél ez a d b c, a felfelé kerekíténél pedig b c + d < b. Ez utóbbi egy özeadáal több, de ezt a zorzáal párhuzamoan tudjuk végezni zámjegyenként, ugyani a b c -re külön ninc zükég ehol. A gond azzal lehet, hogy ez az özeg eggyel több bitnyi helyet igényel, mint a két tagja külön-külön (azok + n biten elférnek, de az özegük lehet ( + n + 1)-bite i. Ezt az utoló bitet adott eetben külön érdeme kezelni. 8
5 Özefoglalá Feltevéek, jelöléek: q = n a = bc + d d < b a = b c + d d < b a < bq (má zóval c < q) b q := log b + 1 n b mod = 0 b := b b c := c c A háromféle kerekíté jellemzői: b túlcordulá c b c Lefelé kerekíté b b b 0, 1, (ninc) q, q + 1 Felfelé kerekíté b b b +, 1, 0 q (ninc) Szabályo kerekíté b 1 b b + 1 1, 0, 1 q q Vizavezeté: Lefelé kerekíté Felfelé kerekíté Szabályo kerekíté feltétel c d ha d b c c d b c kül. ha b b c d c 1 b ( b c d ) különben c b (( b c d ) b) ha b c + d < b c b c + d kül. ha b c + d b < b c + 1 b c + d b különben c + b c + d b ha b < b ha d b c c d b c különben c 1 b ( b c d ) különben ha b c + d < b c b c + d különben c + 1 b c + d b 9