Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Novi excel bug? 0=-3,1E-15?

[es] :: Advocacy :: Novi excel bug? 0=-3,1E-15?

Strane: 1 2

[ Pregleda: 10510 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.pool.mediaWays.net.



+27 Profil

icon Re: Novi excel bug? 0=-3,1E-15?25.07.2008. u 11:01 - pre 191 meseci
Citat:
Kernel-1: Jer nije mi jasno da se ne moze programski detektovati i resiti da 1,2 - 0,2 nije 0,9999999997.... nego je 1?


Može, ali po cenu jezivog usporenja proračuna, reda veličine 100-1000; da se i ne spominju moguće greške u izvedbi. Ima gde je tačna realna aritmetika dovoljno potrebna da opravda ovo — u tabelarcima to svakako nije.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?25.07.2008. u 11:19 - pre 191 meseci
Moze da resi taj problem (i slicni problemi sa mnozenjem, sabiranjem i oduzimanjem brojeva koji u dekadnom zapisu imaju konacan zapis) ako se koristi predstavljanje brojeva u pozicionom sistemu sa osnovom b deljivom sa 10. Medjutim, problemi delenja i korenovanja se ne mogu resiti ako rezultati moraju biti prikazani u pozicionom sistemu.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7177 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 16:12 - pre 191 meseci
Citat:
Kernel-1
Naravno da je ovo bug. Slazem se sa str-es potpuno:)
Ne znam sta se desava kod Open-Office-ovog Calc-a, da li je ista stvar.


Naravno da nije bug, jer Excel postuje IEEE754 floating point standard kao sto treba da ga postuje gde je round-off error neizbezan.

Nedeljko ti je objasnio ZASTO sa floating point brojevima ne mozes da dobijes to sto zelis.

A, kao sto vidis, i drugi programi imaju istu "gresku".

Sta cemo sad? Dobar je ovaj Advocacy, BillG je izgleda kriv i za fundamentalne matematicke probleme ;-)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
79.101.238.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 16:52 - pre 191 meseci
Da zakljucimo - Excel nema bagova a 1,2 minus 0,2 je jednako: 0.0000000000079234.

Znaci, papir i olovku u ruke... pa polako :)



 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7177 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 17:14 - pre 191 meseci
Eto,

I kako, @Nedeljko, ne smejati se ovakvom ociglednom nepoznavanju materije, ovo je tako slashdotovski ;-)

@Kernel-1, dobrodosao u svet floating pointa koji je takav kakav je, mozda ce te to naterati da bacis sve svoje kompjutere i kupis olovku i papirce, posto tesko da ce i jedan floating-point racun da zadovolji tvoje potrebe za preciznoscu.

Mozes da se zalis IEEE-u, njihovi inzenjeri nemaju pojma, treba da konsultuju Slashdot oko FPU aritmetike.

Izmedju ostalog, okrivicemo Billa Gates-a za to, a isti takav "bag" u Open Office-u se moze opravdati kompromisom Open Source komune koja je primorana da se povinuje bagovima koje je Bill Gates uveo u racunarski svet.

Citat:

- Excel nema bagova a 1,2 minus 0,2 je jednako: 0.0000000000079234.


Moj Excel kaze da je 1 - ali je tvoj citat dovoljan za prihvatanje za top post na Slashdotu, ima odlican "M$ bashing" ratio bez obzira na ocigledan nedostatak supstance, ili zdravog razuma ;-)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
77.46.197.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 17:19 - pre 191 meseci
Koliko znam, ovo nije ni softverski, već hardverski "bag" (FPU je sastavni deo mikroprocesora), tako da nijansu različit rezultat može da se dobije eventualno promenom procesora, a ne softvera (od BIOS-a i operativnog sistema, pa nadalje).
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7177 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 17:25 - pre 191 meseci
Roundoff error je inherentni problem floating point reprezentacije i moze se samo smanjiti, ali ne i potpuno ukloniti jer bi za njegovo uklanjanje bio potreban beskonacan broj bitova za skladistenje broja, sto svakako nije prakticno.

Menjanjem hardvera se nece promeniti fakat da on uvek postoji - razlike u round-off greski izmedju raznih procesora su zbog razlicitog internog formata floating point brojeva koje procesori koriste (Intel-ovi procesori koriste 80-bitni floating point format za FPU tj. x87 operacije).

32-bitni IEEE754 floating point ima veci round-off error od 64-bitnog IEEE754 double formata, dok interna reprezentacija u Intel procesorima ima 80-bita a postoji i vise nacina ophodjenja sa tom greskom - odatle dolazi do razlicitih rezultata.

http://en.wikipedia.org/wiki/Machine_epsilon

Citat:

In floating point arithmetic, the machine epsilon (also called macheps, machine precision or unit roundoff) is, for a particular floating point unit, the difference between 1 and the smallest exactly representable number greater than one. It gives an upper bound on the relative error due to rounding of floating point numbers[1].

An IEEE 754 single precision floating point number has 24 bits of mantissa, including the leading unit digit. The number 1 is represented with an unbiased exponent of 0 and a mantissa of 1.00000000000000000000000 in binary. The next largest representable number has an exponent of 0 and a mantissa of 1.00000000000000000000001. The difference between these numbers is 0.00000000000000000000001, or 2−23. This is the machine epsilon of a floating point unit which uses IEEE single-precision floating point arithmetic. In general, for a floating point type with a base b and a mantissa of p digits, the epsilon is εmach = b1-p.


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
79.101.238.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Novi excel bug? 0=-3,1E-15?26.07.2008. u 18:59 - pre 191 meseci
Shvatio sam zasto dolazi do greske posle objasnjenja o problematici kod takve prirode operacija,
ali greska se javlja - to je poenta. I nigde ja nisam branio ni na koji nacin OpenOffice, samo sam
pitao da li se ista greska javlja i tamo (bilo mi je logicno da se javlja ako se radi o istoj problematici).
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 11:23 - pre 191 meseci
Ivane,

ne vidim zašto meni sve to pričaš. Misliš li da ja to ne znam? Pa, hajde onda da odgovorim i ja tebi.

Citat:
Ivan Dimkovic: Roundoff error je inherentni problem floating point reprezentacije i moze se samo smanjiti, ali ne i potpuno ukloniti jer bi za njegovo uklanjanje bio potreban beskonacan broj bitova za skladistenje broja, sto svakako nije prakticno.


Nije nepraktično, već je nemoguće. Kada bi bilo moguće, bilo bi vrlo praktično.

Citat:
Ivan Dimkovic: Menjanjem hardvera se nece promeniti fakat da on uvek postoji - razlike u round-off greski izmedju raznih procesora su zbog razlicitog internog formata floating point brojeva koje procesori koriste (Intel-ovi procesori koriste 80-bitni floating point format za FPU tj. x87 operacije).

32-bitni IEEE754 floating point ima veci round-off error od 64-bitnog IEEE754 double formata, dok interna reprezentacija u Intel procesorima ima 80-bita a postoji i vise nacina ophodjenja sa tom greskom - odatle dolazi do razlicitih rezultata.


To nije jedini izvor razlika. Prvo, čovek realne brojeve unosi (uglavnom) u dekadnom sistemu (bilo da to čini krajnji korisnik preko polja za unos ili da ih programer ukucava u izvorni kod programa). Tu dolazi do konverzije iz dekadnog sistema u binarni. Ne samo da je iz razloga koje sam naveo u svojoj prvoj poruci to u opštem slučaju nemoguće učiniti tačno, već se ni tačnost koju korišćeni tip podataka dopušta ne mora dostići, jer softver vrši konverziju korišćenjem računskih operacija u pokretnom zarezu, koje takođe proizvode grešku, tako da se mogu očekivati i razlike u rezultatu izvršavanju programa kompajliranog različitim kompajlerima.

Takođe, matematičke funkcije kao što je se u FPU izračunavaju po numeričkim algoritmima koji nisu isti kod svih proizvođača, pa se mogu očekivati razlike u izračunatoj vrednosti za .
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7177 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 11:28 - pre 191 meseci
@Nedeljko,

Slazem se sa tim sto si napisao - i razlozi koje si ti naveo (dekadna->binarna konverzija) isto ucestvuju u povecavanju greske.

Citat:
Kernel-1
ali greska se javlja - to je poenta


Da. Greska se javlja, ali to nije bug kako si ti naveo i optuzio "excel", posto je ta greska sastavni i neizbezni deo floating point aritmetike.

Excel tu ne radi nista pogresno, bas kao ni OpenOffice.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 11:29 - pre 191 meseci
@Kernel-1

Evo, izračunao sam kako teče izračunavanje sa početka teme u 32-bitnom 64-bitnom i 80-bitnom tipu realnih brojeva:






Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 11:34 - pre 191 meseci
Na kraju krajeva, nije mi jasno zašto ovi homosi iz MS-a i Sun-a ne koriste long double kao tip podataka u aplikacijama, nego double. Ne kažem da je razlika velika, ali ipak.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 11:48 - pre 191 meseci
Evo kako izgleda broj 0.2 u tri realna tipa:


Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7177 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 14:28 - pre 191 meseci
Citat:

Na kraju krajeva, nije mi jasno zašto ovi homosi iz MS-a i Sun-a ne koriste long double kao tip podataka u aplikacijama, nego double. Ne kažem da je razlika velika, ali ipak.


Verovatno zbog potpune kompatibilnosti sa ranijim formatima / formulama koje vec imaju znanje o tome da je u pitanju 64-bitni double, a ne long double. Ranije je verovatno ta odluka doneta zbog performansi.

To (kompatibilnost) je obicno vise bitno nego malo veca preciznost koja bi se dobila sa long double formatom. Kako Excel a ni OpenOffice Calc nisu naucni programi, od njih se i ne ocekuje da podrzavaju takvu preciznost.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?27.07.2008. u 18:54 - pre 191 meseci
Inače je čitava nauka pročitati double i konvertovati ga u long double.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
89.216.32.*



+2790 Profil

icon Re: Novi excel bug? 0=-3,1E-15?17.02.2011. u 17:48 - pre 160 meseci
Citat:
Srđan Pavlović: Salu na stranu, jel moguce ove greske detektovati i ispraviti?
Recimo ako je jasno da ce izvestan broj odredjenih operacija sigurno
dovesti do greske - unapred predvideti i nekako ispraviti?

Jer nije mi jasno da se ne moze programski detektovati i resiti da 1,2 - 0,2 nije 0,9999999997.... nego je 1?


Prilikom sumiranja više sabiraka dolazi do dodatne greške, koja se nagomilava u procesu sumiranja. Postoje algoritmi sumiranja kod kojih ne dolazi do te dodatne greške. Jedan od takvih je Shewchuk-ov algoritam implementiran ovde kao prva python funkcija. Taj algoritam je implementiran u pythonovoj standardnoj biblioteci kao math.fsum funkcija.

Naravno ovo

>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999
>>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1.0


je samo optička varka, jer kada se doda -1 kao prvi sabirak, dobija se

>>> sum([-1, .1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
-1.3877787807814457e-16
>>> fsum([-1, .1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
5.5511151231257827e-17


U drugom slučaju imamo samo grešku konverzije iz dekadnog sistema u binarni (do na to se vrši full precision sabiranje, tj. dobija se najbliži predstavljiv broj tačnoj sumi, koja je u našem slučaju 0), a u prvom i algoritam sumiranja u pokretnom zarezu pravi svoju grešku. Dakle, ima algoritama različite numeričke stabilnosti, ali su neke vrste grešaka neminovne (konverzija iz dekadnog sistema u binarni i nemogućnost smeštanja u FP tip onoliko bitova koliko ih ima tačan rezultat).

Ova funkcija na primeru koji priložen za excel daje manju grešku, ali je daje, jer je već pri pretvaranju iz dekadnog sistema u binarni došlo do neke greške.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: Advocacy :: Novi excel bug? 0=-3,1E-15?

Strane: 1 2

[ Pregleda: 10510 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.