Błąd zmiennoprzecinkowy

https://xkcd.com/3228/

Dla laików, liczby zmiennoprzecinkowe w arytmetyce komputerowej nie są dokładne, bo są reprezentowane przy pomocy liczb całkowitych. Stąd, w operacjach arytmetycznych na takich liczbach pojawiają się błędy, zazwyczaj na najmniej znaczących cyfrach danej liczby. W praktyce, te niedokładności mogą się kumulować, co powodowało (i powoduje) problemy w obliczeniach. A czasem ma bardziej konkretne, materialne skutki.
Kanoniczny przykład:
https://www-users.cse.umn.edu/~arnold/disasters/patriot.html
https://cs.nyu.edu/~exact/resource/mirror/patriot.htm
https://www-users.cse.umn.edu/~arnold/disasters/Patriot-dharan-skeel-siam.pdf

#heheszki #ciekawostki #komputery #informatyka #humorinformatykow #nauka

57a0183c-1a49-4b97-b945-44b77e8a6982

Komentarze (7)

@ataxbras Najlepiej jak firma kupuje jakiś materiał na palety czy rolki, a w produkcji zużywasz sztuki lub metry.
Wszystkie pojedyncze procesy działają ok i już fajrant, ale na koniec miesiąca po zsumowaniu się jednak nie zgadza xD

Na studiach bawiło mnie to, jak opowiadano o tej sytuacji: "Straszna tragedia", "kosztowała życie wielu osób", "żołnierze US Army zginęli przez ten błąd".


No moment, ale ktoś tu chyba siedział na nie do końca swoim podwórku...

@ataxbras ja kiedyś oglądałem modele klimatyczne i tam też były problemy związane z tym że te wartości zmiennoprzecinkowe dawały duży błąd. Modele klimatyczne pisane przez naukowców to ciekawe potworki. To są takie ulepy z wielu języków bo każdy commiter pisze w innym języku a jeszcze można tam spotkać takie perełki jak fortran. Ale nie pamiętam jak ten model klimatyczny się nazywał

@DexterFromLab Dawno temu, coś koło 2015 roku, audytowałem pewien model klimatyczny pisany w Fortranie 90. W całości. Nie było wtenczas mowy o przepisaniu tego, bo to byłby koszt liczony w milionach USD, a z testowaniem więcej. Ponad 200k linii kodu w głównych modułach (teraz, a właściwie w najbliższej przyszłości, stanie się to łatwiejsze). Model był na swój sposób piękny, ale miał problemy zupełnie innego autoramentu - to znaczy przyjmował stałe dla pewnych wartości zmiennych (i pewnie dalej przyjmuje). Chodziło dla przykładu o wartość pochłaniania podczerwieni. Ograniczało to znacznie możliwości ekstrapolacji w czasie.
O dziwo, nie było problemów z floating point ops, choć były one zarządzane w bardzo dziwny sposób, wielostopniowy (chodzi głównie o zarządzanie błędami i rounding). Ale było to przemyślane. Wersja 90 miała już sensowny double precision, więc nie było tak źle z dokładnością.

@DexterFromLab "W całości" odnosi się do tego, że był w całości w Fortranie 90, nie że w całości go audytowałem - było nas razem kilkanaście osób

@ataxbras programistą nie zostałem choć znam wybitne narzędzia - nie miałem na to perspektyw. Ale co do zmiennoprzecinkowych liczb "najzabawniejszym" przykładem czym one są są pętelki heh...

Zaloguj się aby komentować