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/