Hrošč v Mathematici spominja na leto 1994

Matej Huš

28. okt 2014 ob 20:14:39

Španski matematiki so našli hrošča v zadnjih verzijah programskega paketa Mathematica, ki povzroči napačne rezultate nekaterih izračunov in celo različne rezultate ob več zagonih z istimi vhodnimi parametri. Hrošč se vleče že vsaj štiri leta, Wolfram pa ga kljub poročilu pred letom dni še vedno ni popravil.

Na napako so naleteli, ko so računali Casoratijeve determinante in želeli dokazati nekaj izrekov. Pri izračunih v Mathematici so odkrili nekaj protiprimerov, medtem ko so isti izračuni v Maplu kazali, da protiprimerov ni. Podrobna analiza je pokazala, da sta možna le dva scenarija - bodisi napak računa Mathematica bodisi Maple.

Iskanje hrošča je pokazalo, da je krivec Mathematica. Ne le da nekatere vrednosti determinant izračuna narobe, pri nekaterih primerih vrne vsakokrat drugačen rezultat, četudi so vhodni parametri identični. Casoratijeve determinante so pustili ob strani in umetno konstruirali nekaj preprostih matrik dimenzij 14 x 14, ki so vsebovale zelo velika števila. Mathematica je determinante teh matrik izračunala narobe in vsakokrat različno. Napaka je prisotna v verziji 8, ki je izšla leta 2010, in v vseh naslednjih inačicah. Čeprav so proizvajalca že lani opozorili na hrošča in prejeli potrditev, da bodo hrošča pregledali, ima tudi najnovejša verzija 10 še vedno isto napako.

Preden Mathematico nepovratno izbrišete, seveda velja poudariti, da se napaka pojavi le v zelo specifičnih okoliščinah. Napačno izračunane determinante so bile reda velikosti 109762 (res pa je, da je Mathematica zgrešila tako red velikosti s svojim 109768 kakor tudi predznak), s katerimi najverjetneje nikoli ne boste imeli opraviti. To tudi ni edini primer hrošča v Mathematici, navajajo raziskovalci, saj lahko nepravilno obnašanje opazimo že pri računanju nekaterih integralov.

Programska in strojna oprema sta obremenjeni s hrošči, ker ju snujejo ljudje, ki smo zmotljivi. Najbolj znan primer je gotovo Pentiumov hrošč iz leta 1994, a še zdaleč ni edini. Procesorji imajo precej napak (errata), ki so znane in se jim programska oprema uspešno izogiba. Tudi programska oprema ima svoje hrošče.

To odpira zanimivo vprašanje, kaj storiti z matematičnimi dokazi, ki se pomembno opirajo na računalniško moč. Nedavno smo bili priče dokazu, ki vsebuje 13 GB veliko datoteko. Odprl je pomembno vprašanje - ali so takšni dokazi dovolj rigorozni. Moramo preveriti kodo visokonivojsko kodo programa, prevod v strojno kodo, instrukcije procesorja, vse generirane podatke? Matematiki so se pač že od nekdaj mrščili nad dokazi s pregledom vseh možnih primerov.