Ką kiekvienas informatikas turėtų žinoti apie slankiojo kablelio aritmetiką (1991) [pdf] | Mewayz Blog Skip to main content
Hacker News

Ką kiekvienas informatikas turėtų žinoti apie slankiojo kablelio aritmetiką (1991) [pdf]

komentarai

9 min read Via www.itu.dk

Mewayz Team

Editorial Team

Hacker News

Nematomas tikslumas spąstai: kodėl kiekvienam programuotojui reikia šio 1991 m. PDF

Tiksliame, logiškame kompiuterių mokslo pasaulyje nedaug dokumentų turėjo ilgalaikį, pagrindinį Davido Goldbergo 1991 m. dokumento „Ką kiekvienas kompiuterių mokslininkas turėtų žinoti apie slankiojo kablelio aritmetiką“ poveikį. Praėjus daugiau nei trims dešimtmečiams, jo pavadinimas tebėra skambus, įspėjimas ir esminė išminties dalis. Kiekvienam, rašančiam kodą su realiais skaičiais – nuo ​​mokslinio modeliavimo ir finansinių sistemų iki žaidimų variklių ir duomenų analizės – ignoruoti jo pamokas yra kaltas dėl subtilių, brangių ir dažnai gluminančių gedimų. Epochoje, kai verslo operacijas vis labiau skatina sudėtinga, tarpusavyje susijusi programinė įranga, skaitmeninio skaičiavimo pagrindo supratimas nėra akademinis; tai veiklos būtinybė. Tai ypač aktualu, kai naudojama modulinė verslo OS, pvz., Mewayz, kur duomenų vientisumas tarp modulių – nuo analizės iki automatinio atsiskaitymo – priklauso nuo nuspėjamų ir patikimų skaičiavimų.

Pagrindinė problema: jūs negalite pavaizduoti begalybės ribotais bitais

Pagrindinė problema paprasta, bet gili. Mūsų kompiuteriai turi ribotą atminties kiekį, tačiau dažnai turime dirbti su begaliniu realiųjų skaičių kontinuumu (pvz., π arba 0,1). Slankaus kablelio aritmetika yra standartinis kompromisas, sumani sistema, leidžianti pateikti platų skaičių diapazoną ribotu tikslumu. Tačiau šis kompromisas reiškia, kad dauguma skaičių yra apytiksliai, o ne tiksliai išsaugoti. Goldbergo dokumentas kruopščiai paaiškina IEEE 754 standartą, kuris suteikė labai reikalingą nuoseklumą šiam chaosui. Jis išsamiai aprašo, kaip skaičiai koduojami į ženklo, eksponento ir trupmenos bitus, sukuriant nuspėjamą, bet keistą reprezentuojamų verčių, apvalinimo elgsenos ir ypatingų objektų, tokių kaip NaN (ne skaičius) ir begalybę, kraštovaizdį. Kūrėjams, kuriantiems finansinius modelius naudojant Mewayz, apvalinimo klaida, kuri atrodo mikroskopinė, gali sukelti didelių ataskaitų ar operacijų neatitikimų ir pakirsti pasitikėjimą visa sistema.

Stebinantis elgesys ir katastrofiškos nesėkmės

Straipsnis garsėja tuo, kad iliustruoja prieštaringus spąstus, kurie laužo pagrindines matematines prielaidas. Pavyzdžiui, dėl apvalinimo slankaus kablelio pridėjimas nėra asociatyvus; „(a + b) + c“ ne visada yra lygus „a + (b + c)“. Tai gali lemti nedeterministinius lygiagrečių skaičiavimų rezultatus. Beveik vienodų skaičių atėmimas gali sukelti katastrofišką atšaukimą, kai dingsta reikšmingi skaitmenys, o daugiausia lieka apvalinimo klaida. Turbūt pati garsiausia pamoka yra tai, kad reikia niekada lyginti slankiojo kablelio skaičių, kad būtų pasiekta tiksli lygybė (`==`), o vietoj to patikrinti, ar jų skirtumas neviršija mažos tolerancijos. Tai ne tik teorinės keistenybės. Jie sukėlė realias nelaimes – nuo ​​raketos „Ariane 5“ sprogimo iki ankstyvųjų „Patriot“ raketų sistemų netikslumų. Verslo kontekste tokios atsargų skaičiavimo, kainodaros algoritmų ar našumo metrikos klaidos gali sukelti tylų duomenų sugadinimą, todėl tvirtos platformos, pvz., Mewayz, yra itin svarbios užtikrinant duomenų patvirtinimą ir modulių nuoseklumo patikras.

"Norint suspausti be galo daug realiųjų skaičių į baigtinį bitų skaičių, reikia apytiksliai pateikti."

Pagrindiniai pasiūlymai šiuolaikiniam kūrėjui

Goldbergo dokumente pateikiami ne tik įspėjimai, bet ir praktinės gairės. Svarbiausias dalykas yra ugdyti „skaitinę sąmonę“ – nuolatinį suvokimą, kad slankiojo kablelio skaičiai yra apytiksliai. Ši mąstysena turėtų padėti pasirinkti nuo duomenų struktūros pasirinkimo iki algoritmo kūrimo. Jo darbe pabrėžiama, kodėl naudojant „dvigubą“ (64 bitų) beveik visada geriau, o ne į „float“ (32 bitų) atliekant tikslią kritinę veiklą, ir kodėl kai kurie algoritmai yra skaitmeniniu požiūriu stabilūs, o kiti ne. Kuriant arba integruojant modulius Mewayz aplinkoje – ar tai būtų mašininio mokymosi prognozuotojas, ar išteklių planavimo priemonė – ši sąmonė užtikrina, kad pagrindinės skaitinės operacijos būtų atliekamos taip, kaip jos reikalaujama, užkertant kelią gedimams, kurių priežastis, kaip žinoma, sunku atsekti.

Kiekvienas programuotojas turėtų būti susipažinęs su šiomis pagrindinėmis sąvokomis iš šio straipsnio:

  • Apvalinimo klaida: neišvengiamas netikslumas, kai skaičius derinamas į artimiausią reprezentuojamą reikšmę.
  • Apsauginiai skaitmenys: papildomi skaitmenys, naudojami tarpiniuose skaičiavimuose, siekiant sumažinti apvalinimo klaidą.
  • IEEE 754 standartas: universalus slankiojo kablelio skaičiavimo, formatų, apvalinimo taisyklių ir išimčių nustatymo projektas.
  • NaN ir begalybė: specialios vertės, leidžiančios operacijoms grakščiai skleisti klaidas, o ne strigti.
  • Skaičių stabilumas: algoritmo savybė valdyti daugelio operacijų klaidų didinimą.

Gyvas dokumentas skaitmeniniame pasaulyje

Kol buvo parašytas 1991 m., jo aktualumas tik išaugo. IEEE 754 principai yra kiekvieno šiuolaikinio procesoriaus, GPU ir programavimo kalbos pagrindas. Kai žengiame į tokias ribas kaip AI, didžiulė duomenų analizė ir sudėtingas sistemos modeliavimas, mūsų skaičiavimų tikslumas tampa vis svarbesnis. Komandoms, naudojančioms modulinę operacinę sistemą, pvz., Mewayz, kad supaprastintų savo verslo logiką, šio skaitinio griežtumo įterpimas į tinkintus modulius yra geriausia praktika, kuri užkerta kelią klaidų klasei pačiame pagrindiniame lygmenyje. Goldbergo šedevras yra daugiau nei popierius; tai nuolatinė patikimos programinės įrangos inžinerijos pagrindo dalis. Ignoruoti tai reiškia kurti ant smėlio ir rizikuoti visos skaitmeninės struktūros vientisumu, nesvarbu, ar tai paprastas scenarijus, ar įmonės lygio verslo OS.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Dažniausiai užduodami klausimai

Nematomas tikslumo spąstai: kodėl kiekvienam programuotojui reikia šio 1991 m. PDF

Tiksliame, logiškame kompiuterių mokslo pasaulyje nedaug dokumentų turėjo ilgalaikį, pagrindinį Davido Goldbergo 1991 m. dokumento „Ką kiekvienas kompiuterių mokslininkas turėtų žinoti apie slankiojo kablelio aritmetiką“ poveikį. Praėjus daugiau nei trims dešimtmečiams, jo pavadinimas tebėra skambus, įspėjimas ir esminė išminties dalis. Kiekvienam, rašančiam kodą su realiais skaičiais – nuo ​​mokslinio modeliavimo ir finansinių sistemų iki žaidimų variklių ir duomenų analizės – ignoruoti jo pamokas yra kaltas dėl subtilių, brangių ir dažnai gluminančių gedimų. Epochoje, kai verslo operacijas vis labiau skatina sudėtinga, tarpusavyje susijusi programinė įranga, skaitmeninio skaičiavimo pagrindo supratimas nėra akademinis; tai veiklos būtinybė. Tai ypač aktualu, kai naudojama modulinė verslo OS, pvz., „Mewayz“, kur duomenų vientisumas tarp modulių – nuo analizės iki automatinio atsiskaitymo – priklauso nuo nuspėjamų ir patikimų skaičiavimų.

Pagrindinė problema: jūs negalite pavaizduoti begalybės baigtiniais bitais

Pagrindinė problema paprasta, bet gili. Mūsų kompiuteriai turi ribotą atminties kiekį, tačiau dažnai turime dirbti su begaliniu realiųjų skaičių kontinuumu (pvz., π arba 0,1). Slankaus kablelio aritmetika yra standartinis kompromisas, sumani sistema, leidžianti pateikti platų skaičių diapazoną ribotu tikslumu. Tačiau šis kompromisas reiškia, kad dauguma skaičių yra apytiksliai, o ne tiksliai išsaugoti. Goldbergo dokumentas kruopščiai paaiškina IEEE 754 standartą, kuris suteikė labai reikalingą nuoseklumą šiam chaosui. Jis išsamiai aprašo, kaip skaičiai koduojami į ženklo, eksponento ir trupmenos bitus, sukuriant nuspėjamą, bet keistą reprezentuojamų verčių, apvalinimo elgsenos ir ypatingų objektų, tokių kaip NaN (ne skaičius) ir begalybę, kraštovaizdį. Kūrėjams, kuriantiems finansinius modelius „Mewayz“, apvalinimo klaida, kuri atrodo mikroskopinė, gali virsti dideliais ataskaitų ar operacijų neatitikimais, o tai pakirsti pasitikėjimą visa sistema.

Stebinantis elgesys ir katastrofiškos nesėkmės

Straipsnis garsėja tuo, kad iliustruoja prieštaringus spąstus, kurie laužo pagrindines matematines prielaidas. Pavyzdžiui, dėl apvalinimo slankaus kablelio pridėjimas nėra asociatyvus; „(a + b) + c“ ne visada yra lygus „a + (b + c)“. Tai gali lemti nedeterministinius lygiagrečių skaičiavimų rezultatus. Beveik vienodų skaičių atėmimas gali sukelti katastrofišką atšaukimą, kai dingsta reikšmingi skaitmenys, o daugiausia lieka apvalinimo klaida. Turbūt pati garsiausia pamoka yra tai, kad reikia niekada lyginti slankiojo kablelio skaičių, kad būtų pasiekta tiksli lygybė (`==`), o vietoj to patikrinti, ar jų skirtumas neviršija mažos tolerancijos. Tai ne tik teorinės keistenybės. Jie sukėlė realias nelaimes – nuo ​​raketos „Ariane 5“ sprogimo iki ankstyvųjų „Patriot“ raketų sistemų netikslumų. Verslo kontekste tokios klaidos atsargų skaičiavimuose, kainodaros algoritmuose ar našumo metrikoje gali sukelti tylų duomenų sugadinimą, todėl patikimos platformos, pvz., „Mewayz“, yra itin svarbios užtikrinant duomenų patvirtinimą ir nuoseklumo tikrinimą visuose moduliuose.

Pagrindiniai pasiūlymai šiuolaikiniam kūrėjui

Goldbergo dokumente pateikiami ne tik įspėjimai, bet ir praktinės gairės. Svarbiausias dalykas yra ugdyti „skaitinę sąmonę“ – nuolatinį suvokimą, kad slankiojo kablelio skaičiai yra apytiksliai. Ši mąstysena turėtų padėti pasirinkti nuo duomenų struktūros pasirinkimo iki algoritmo kūrimo. Jo darbe pabrėžiama, kodėl naudojant „dvigubą“ (64 bitų) beveik visada geriau, o ne į „float“ (32 bitų) atliekant tikslią kritinę veiklą, ir kodėl kai kurie algoritmai yra skaitmeniniu požiūriu stabilūs, o kiti ne. Kuriant arba integruojant modulius „Mewayz“ aplinkoje, nesvarbu, ar tai mašininio mokymosi prognozuotojas, ar išteklių planavimo priemonė, ši sąmonė užtikrina, kad pagrindinės skaitinės operacijos būtų atliekamos taip, kaip jos reikalaujama, taip užkertant kelią gedimams, kurių priežastis, kaip žinoma, sunku atsekti.

Gyvas dokumentas skaitmeniniame pasaulyje

Kol buvo parašytas 1991 m., jo aktualumas tik išaugo. IEEE 754 principai yra kiekvieno šiuolaikinio procesoriaus, GPU ir programavimo kalbos pagrindas. Kai žengiame į tokias ribas kaip AI, didžiulė duomenų analizė ir sudėtingas sistemos modeliavimas, mūsų skaičiavimų tikslumas tampa vis svarbesnis. Komandoms, naudojančioms modulinę operacinę sistemą, pvz., „Mewayz“, siekdamos supaprastinti savo verslo logiką, šio skaitinio griežtumo įterpimas į savo pasirinktinius modulius yra geriausia praktika, kuri užkerta kelią klaidų klasei pačiame pagrindiniame lygmenyje. Goldbergo šedevras yra daugiau nei popierius; tai nuolatinė patikimos programinės įrangos inžinerijos pagrindo dalis. Ignoruoti tai reiškia kurti ant smėlio ir rizikuoti visos skaitmeninės struktūros vientisumu, nesvarbu, ar tai paprastas scenarijus, ar įmonės lygio verslo OS.

Sukurkite savo verslo OS šiandien

Nuo laisvai samdomų vertėjų iki agentūrų – „Mewayz“ valdo 138 000 ir daugiau įmonių su 208 integruotais moduliais. Pradėkite nemokamai, atnaujinkite, kai augsite.

Sukurti nemokamą paskyrą →