Posted By: Quasimodo (Quasimodo) on 'CZprogram'
Title:     Re: Pokud nejaky javista nema co delat...y
Date:      Mon Dec  6 21:51:00 2004

> > Pravda, pro nacitani pascal floatu to jeste takova tragedie neni, pro
> > ukladani 
> 
>      Uaaaa... byl jsem nucen to jednou delat v Ccku... snaha byla, vzdal
> jsem 
> to a nakonec vyresil tak, ze jsem z Pascal runtime vybagroval jak se tyto 
> parametry cpou do FPU a udelal to stejne a pak si to v C z FPU precet...
> vim, 
> jsem prase...:-) (ale funkcni to bylo) 
> 
 Taky si vsimni, ze tu bylo nekolik odpovedi, ze to bude vicemene stejne, jako 
jsem to napsal v C, ale kousek zdrojaku, ktery by do souboru ulozil float jako 
"real48" z nikoho nevypadnul. :-)

 Ten muj kousek kodu taky chodi, ale kamken urazu je v tom, dostat se 
k jednotlivym bytum v ukladanem floatu. Kdybych to musel delat v jave/C#, tak 
jedine co me napada, je nacpat to do nejakeho inmem souboru (snad je v nich 
obdoba C++ strstreamu) a pak to zase nacist jako pole bytu. Coz je ale dost 
drevacke reseni. Samozrejme, da se to delat i jen "matematikou", ale kdyz jsem 
to tenkrat zkousel v cecku, tak ztrata presnosti byla zarazejici. (A to se 
vsude jen delilo a nasobilo mocninama 2, takze TEORETICKY stacilo soupat 
doleva a doprava a vsechno bude krasne. Praxe ale byla trosku jina (nevim 
proc, ale kecalo do toho jakesi zaokrouhlovani)... 

Pokud by se na to chtel nekdo vaznejc podivat, tak ten pascal real48 ma 
v pameti zapis: 
smmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm eeeeeeee
Zatimco C float (myslim ze to je IEEE 754)
seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
s je sign, m mantisa a e exponent

Takze primym presunem prislusnych bitu se to dela dost obstojne - pokud se 
k nim clovek dostane... :-)

Nastesti s necim takovym se clovek potkava docela zridka. Je to jen takova 
moje slaboducha potreba rypat do modernich jazyku typu javaa, ze se dokonale 
zbavily nastroju, jak si snadno zpristupnit interni reprezentaci typu. Sice 
jsou zapotrebi neprilis casto, ale pak mohou resit jinak skoro neresitelne 
problemy. 

 Jeste mam jeden podobny prikladek, jeste mene prakticky, ale bohuzel z praxe: 
potreboval jsem pro instanci jakesi tridy v programu zjistovat, jestli jista 
virtualni metoda je tataz, jako metoda nejakeho predka a pokud ne, vykonat obe 
a porovnat vysledky. Protoze nevim o zadnem nastroji uvnitr C++ (a ani v 
jave), ktery by tohle delal, musel jsem sahnout do tabulky virtualnich metod a 
hrozne nadaval na autora knihovny, ze musel zrovna tuhle metodu overridnout 
(jakesi polynomialni regrese nad urcitymi mnozinami bodu, knihovna si sama 
urcovala stupen polynomu podle vlozenych dat a k nim vymyslela tridy zahadnych 
vlastnosti), misto aby zalozil novou... Typeid pouzit neslo - krome bazove 
tridy jsem nemel k dispozici prototypy. To byl za celou moji praxi jedny 
pripad, kdy me skutecne zajimalo, kam a jak se k objektu lepi virtualni 
tabulky, ale zrovna tehdy to bylo docela nutne. Jak na takovy problem jit bez 
pointeru netusim. Nejspis napsat si tu knihovnu na regrese sam... bohuzel pro 
me je odhad optimalniho stupne polynomu pro prokladani cira magie. :-)
 
-
Clovek je nejpomalejsi zname zarizeni typu I/O.
                                                                 Quasimodo

Search the boards