Posted By: Rat (ctyri mozkove bunky) on 'CZprogram'
Title: Re: Zaokrouhlovani cisla typu Extendedy
Date: Fri May 10 19:13:51 2002
> Je jedno jak je co dlouhy (pro 80 bitu je to 64/15/1).
>
> Vynecham to, ze nektery kombinace tvori specialni cisla (ala nekonecko,
> zaporny nekonecne a pod) a ze se ridi podle nastaveni FPU (treba
> rozklisovani
> zapornyho a kladnyho nekonecna) a ze nima jdou provadet nektery ukony.
> Abysme
> se dostali k jadru veci, v zasade jsou normlizovana a denormalizovana cisla.
>
> Normalizovany cislo vypada 'mantisa * 2^exponent'
>
> Je to z ciste matematickych duvodu (desitkova soustava je pro pocitani dost
> nevhodna :o) [tedy vsimni si, neni tu nic o m*10^exp)
>
> Napises li tedy 5, nebude to ulozeno jako binarne 0.5 * 10^1 ale jako neco
> uplne jinyho. __PROTO__ zde vznika urcita nepresnost uz jen vlozenim cisla.
> Vyjadrim-li se doslova, pak konkretne 5ku FPU _NEDOKAZE_ vyjadrit jako
> 'absolutni' hodnotu, vzdy se tomu bude 'jen' priblizovat.
Tohle se tu resilo cca pred nejakou relativne nedavnou dobou, a ... FPU
dokaze naprosto presne vyjadrit jakekoli cele cislo (rozumne velke - tzn. do
velikosti mantisy).
> A to jeste u normalizovanyho cisla je mantisa mezi 0.5-1.0.
Konkretne <0.5, 1.0) ;)
> Jdu se najist a pak dopisu zbytek...
Dobrou chut.
> Kdyz to reknu jinak, at je cislo VELKY nebo MALI - vzdy se bere ABS(a-b) a
> to
> z toho duvodu aby se zjistil ROZDIL. Absolutni rozdil ve vyjadreni techto
> cisel. Jeli rozdil mensi, nez 'nejmensi krok po kterym je FPU schopny
> 'korigovat cislo' pak jsou si ty cisla rovny. NE protoze je zde chyba ve FPU
> a
> vypoctu, ale protoze FPU vyjadruje cisla JINAK. I integeru CPU ma zakladni
> jednotku '1'. Muzes napsat 1,2,3... U FPU jsou to sileny mocniny 2. Takze
> zde
> neni 'linearni' krok.
>
> Proto je jedno, jesli epsilon pouzijes pro MALY/VELKY cislo. Exponent sem
> VUBEC nemotej, nema s tim NIC spolecnyho.
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.
> Jo a jeste jedna vec. Narozdil od jinych soustav, u desetinych cisel se
> presnost vyajdruje NIKOLIV poctem desetinnych mist, ale presnosti 'na
> zobrazene' cifry. Proto v predhozim pripade (docels slusna presnost
> mimochodem - drzel jsem tu 0 moc dlouho :o) jsou za 'koncem' cisla dalsi
> mista.
Tohle podle me nezalezi ani tak na soustave, jako spis na lidske definici ;)
> 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/