Posted By: Rat (ctyri mozkove bunky) on 'CZprogram'
Title:     Re: Zaokrouhlovani cisla typu Extendedyy
Date:      Fri May 10 14:59:53 2002

> > >  Dalsi, alternativni, jeste o malicko lepsi reseni, ktere si hlida rad 
> > > promennych by bylo neco jako:
> > >   epsilon:= (abs(a)+abs(b)) / 2e5;
> > >   if abs(a-b) < epsilon then rovna_se_to;
> > 
> >  Tohle ti opet selze na stejnem pripadu jako ono prvni reseni.
> Proc? Puvodni reseni (jestli mluvime o stejnem) bylo
> if (abs(a-b) < konstanta)

 Nene, myslel jsem tohle reseni a tenhle pripad:
 if (abs(a * (1 + 1e-5) >= (abs(b))) and (abs(a * (1 - 1e-5)) < abs(b)) then
rovna_se_to; Coz sice zafunguje dejme tomu pro stejne dobre porovnani cisel
1.000001e22 a 1.0e22 jako pro 1.0000001e-17 a 1.0 e-17, ale  ma jako znacnou
nevyhodu, ze to nefunguje pokud a=0.0 presne a b treba 1e-30, coz bychom radi

 Jednoduse, budes-li mit v b (zum Beispiel) 0, tak ti vyjde if (abs(a) < 
abs(a)/2e5) { ... }

> >  if 
> >
> ((abs(a)+err)*1.0000000000000000000000000000000000000000000000000000000000000
> 
> > 00
> > 000000000000000000045 > (abs(b)+err) && 
> >
> (abs(b)+err)*1.00000000000000000000000000000000000000000000000000000000000000
> 
> > 00
> > 00000000000000000000000449 > (abs(a)+err)) { rovna_se_to(); }
> > 
> >  Ehe? 
> > 
> >  Problem je v tom, ze 0 a 1e-17 jsou porad hodne daleko, ale cisla na
> > hranici 
> > presnosti uz tim projdou. Ale to by clovek tak nejak cekal, ze? ;)
> > 
> A tohle bylo co? Tomu ze nejaky std "float" typ ma vic pouzitelnych 
> dekadickych cifer nez cca 10-12 odmitam verit. Nicmene princim jsem snad 
> pochopil :-) 

 No, mozna jsem se trosku sek, ja jsem ty nuly nepocital ;) Mimochodem, 
ono je to stejne spatne v jedne dost podstatne veci, ale to uz je jedno...

> Ne, pit jsem jeste nezacal, pouze nevyspani :-) a to stale pokracuje... :-(

 Nojo, nocni mury o racionalnich cislech jsou svinstvo ;)

> Clovek je nejpomalejsi zname zarizeni typu I/O.
>                                                                  Quasimodo

        Krysa
                rat@atrey.karlin.mff.cuni.cz              Jsem Krysa
                http://atrey.karlin.mff.cuni.cz/~rat/

Search the boards