Posted By: Rat (ctyri mozkove bunky) on 'CZprogram' Title: Re: Zaokrouhlovani cisla typu Extendedyy Date: Sat May 11 10:09:03 2002 > > Jestli vyse uvedene spravne chapu, tak tvrdis, ze if (abs(a-b) < > KONST_EPS) > > je spravny zpusob porovnani pro jakkoli velke/male a, b ? Presnost se ti > > prave > > ztraci v prvnim bitu za mantisou, ktera na exponentu zavisla je. Zkus > > loadnout > > double, ulozit ho dvakrat jako float, jednou pri nastavenem zaokrouhlovani > > > dolu, podruhe nahoru, loadni znovu a spocitej rozdil. > Pokud jsou a,b 'ruzna' hodne od sebe, pak je jejich rozdil sam o sobe > velkej, > tutiz porovnani s E vyjde 'tak jak ma' (tedy to abs bude vetsi). Ztraci se > vic nez jeden bit, neb interne je presnost 80 (intelovsky FPU). Co se tyce > tohodle bitu, tak pri dodrzeni podminky ze M je <0.5-1) bude vzdy nejvissy > bit mantisi 1ka a toho je v IEEE754 zneuzito k tomu (neni pouzivanej a pri > vypoctech je doplnovanej automaticky) se zvojnasuboje presnost. Pokud se > dostavas do oblasti nizkych exponentu (hodne malych cisel) tak prestava mit > smysl neco porovnavat na presnost (ted sa bavime o cislech blizkych > nejnizsimu vyjadritelnymu cislu). A samozrejmne ze to zavisi na > zaokrouhlovani (a je jedno jesli je dvojita nebo normlani presnot, vzdy se > bude zaokrouhlovat). Tedy ano, dovolim si trvdit ze je to spravne (minimalne > podle IEEE normy kdyz ne podle mne :) > > Chyba pri vypoctu, vznikla zaokrouhlovanim je 'jina'. Ta se tady neimplikuje > (kde ce treba ve vyse uvedem projevi ?) Neboli, tuhle chybu ja neberu v > potaz, > protoze uz jen ta "nepresnost" staci k tomu abys potreboval epsilon. A chybu > v > zaokrouhlovani nemuzes posuzovat obecne, ta zalezi uz na konkretni veci (co > se pocita, jak, v jakym poradi, ....) Ad zaokrouhlovani - tak je to zavisli > na > VYSI cisla, to se shodneme. Ale nepresnot o ktery tu mluvime prameni nekde > jinde (viz puvodni post kde bylo klasicky a,b,c=a+b a test na c). Nekde muze > byt chyba (absolutne) 0.0000000000001% 'adekvatni' (a akceptovatelna), jinde > to mzue byt uplne jinak. > > Nechapu proc sem pletes double a floaty (predpokladam ze mas na mysli > 32/64). > Napis vis co si tim myslel. Ja celou dobu mluvim o nepresnoti jako TAKOVY, > ne > nepresnosti vzikajici PRI vypoctu (opet odkazuji na puvodni post, presne na > toto narazel). Ja se jen snazim vyvratit tve tvrzeni, ze chyba neni zavisla na exponentu operandu (jestli jsem to pochopil spravne) - ty double/floaty byl priklad, problem je jednoduse v tom, ze se at uz pri vypoctu, ci pri konverzi z desitkove soustavy ci pri konverzi z delsiho typu na kratsi, ztrati nekolik poslednich n (pri konverzi z desitkove soustavy i nekonecno) bitu. A tyhle bity pochopitelne jsou zavisle na exponentu, tot vse, co jsem chtel rict. Takze pak na srovnani dvou cisel nelze pouzit jednotne epsilon. Ale jak rikam, mozna nekde doslo k nepochopeni, co puvodnim "clankem" bylo mysleno ;) > Pivson I a posledni, z bozi vule pivar > > A co budou delat cesi ??? > Deme na pivo ! Krysa rat@atrey.karlin.mff.cuni.cz Jsem Krysa http://atrey.karlin.mff.cuni.cz/~rat/