Numerus un tā pati atbilde divreiz
The bug that only exists on the other machine
The most irritating numeric bug is the one that refuses to appear where you are looking. The test fails on CI, not locally. The simulation drifts after a dependency update. The embedded target produces a slightly different result from the server. The model pipeline looks fine until replay asks for the same calculation twice and receives two answers that are close enough to start an argument.
Close is sometimes fine. Close is not always a contract. If a calculation is part of a replay path, a safety check, a simulation, a pricing decision, a digital twin, an audit trail, or a model compression step, then close can turn into a product risk. The difference may be tiny. Tiny differences are still differences. Software has made entire careers out of being offended by tiny differences.
This is the reason Numerus exists in the Dweve stack. The Numerus page frames it as an open-source numeric foundation for deterministic arithmetic: binary and decimal fixed-point, Dweve AXIOM adaptive variable-point math, integer-oriented operation, Rust, no_std-capable surfaces, verification against high-precision references where meaningful, and deterministic profiles intended to make replay calmer across supported targets. The shared common numeric layer underneath is wider still: binary, ternary, integer, fixed, float, and adaptive AXIOM families under one Element-style contract. The exact implementation details matter to engineers. The product lesson is simpler: arithmetic is not background noise. It is infrastructure.
That sounds obvious until you follow where numbers travel. A simulation feeds a digital twin. The twin feeds a dashboard. The dashboard informs a human decision. The decision is recorded. A month later somebody asks why. If the numeric layer cannot reproduce the calculation,the rest of the evidence chain becomes wobbly. It may still be defensible, but now the team has to explain an avoidable source of drift. That is a bad hobby.
Floating point is not morally wrong
This is not a sermon about floating point being evil.Floating point is one of the reasons modern computing works. It is fast, compact, well supported, and exactly right for many workloads. The problem starts when teams pretend its behaviour is a universal governance contract.
Floating point lives in a worldof rounding modes, hardware differences, compiler choices, instruction selection, fused operations, vectorization, denormals, library behaviour, and target-specific details. Most of the time this is manageable. Sometimes it is even invisible. Then you need bit-exact replay, or cross-target parity, or deterministic simulation, or a build that should behave the same after being moved from server to edge. Suddenly the details stop being academic. They become a meeting.
Numerus takes a different path for workloads where repeatability matters more than pretending every operation is a tiny weather system. Integer-only arithmetic makes the representation explicit. Fixed-point formats define where the decimal lives. Decimal families handle values where exact places matter. Dweve AXIOM gives a way to adapt exponent shape per value without handing control back to an opaque floating environment. The point is not one numeric form forever. The point is choosing a form with a contract.
Tam ir nozīme, jo produktu sistēmas ne tikai aprēķina. Tās atceras. Tās atkārto. Tās salīdzina. Tās izskaidro. Ja viens un tas pats aprēķins dažādās atbalstītajās vidēs dod atšķirīgus rezultātus, šī atšķirība kļūst par produkta daļu neatkarīgi no tā, vai kāds to plānojis.
Viena skaitļošanas bibliotēka patiesībā ir vairāki solījumi
Skaitļošanas pamats nav viena lieta. Tas ir solījumu kopums ar dažādām mērķauditorijām. Iebūvēto sistēmu inženierim ir svarīgi, lai ierobežotās vidēs var darbināt atbilstošos veselo skaitļu profilus bez nepieciešamības vilkt līdzi ērtu servera izpildes vidi. Simulāciju inženierim ir svarīgi, lai atkārtojums spēj atjaunot stāvokli. Revidentam ir svarīgi, lai atbildes ceļu var izskaidrot. Produkta īpašniekam ir svarīgi, lai sistēma, pārvietota no vienas vides uz citu, neuzvestos kā nervozs kalkulators.
Publiskā Numerus lapa izceļ tās saimes, par kurām cilvēki visbiežāk jautā vispirms: Q-formāta fiksētā komata, Decimal un AXIOM. Koda bāze ir plašāka. common/numeric satur binārās XNOR un POPCNT formas, trīsvērtīgās vērtības, vietējos un zem-baita veselos skaitļus, fiksētā komata aizstājējus, mazos peldošā komata formātus un adaptīvo AXIOM. Numerus fasāde tad ap šo pamatu pievieno produktam paredzētās decimālās un aritmētiskās saskarnes. Šim dalījumam ir nozīme, jo tas ļauj izvairīties no mākslīgas elegance, kas rastos, ja katru skaitli mēģinātu iespiest vienā formā.
Šī ir ļoti eiropieciska inženierija vislabākajā nozīmē. Mazāk drāmas, vairāk līguma. Aprēķinam jāpasaka, kas tas ir. Diapazonam jābūt zināmam. Decimālajai uzvedībai jābūt skaidrai. Mērķa ierobežojumi jāievēro. Rezultātam jābūt reproducējamam. Nevienam tam nav vajadzīga atklāšanas uzruna. Viņiem ir vajadzīgs, lai tas strādā.
AXIOM ir pelnījis savu rakstu, jo tas nav tikai vēl viens aizstājējs sarakstā. Tā ir Dweve adaptīvā mainīgā komata saime: zīme, eksponenta indekss un mantisa iesaiņoti kompaktā reprezentācijā, ar eksponentu sarakstiem, kas izvēlēti vispārīgiem, blīviem, smalki graudainiem vai neironu tīklam līdzīgiem datiem. Šis ieraksts tikai ievieto to Numerus kartē. Dziļākais stāsts ir par to, kā adaptīvā eksponenta izvēle mainīgām lieluma vērtībām dod vairāk vietas, nepadarot aritmētiku atkal nedeterministisku.
Tas arī novērš pārspīlēšanu. Numerus nepadara katru skaitļošanas problēmu vieglu. Tas nenovērš nepieciešamību izvēlēties mērogus, diapazonus, noapaļošanas uzvedību, eksponentu sarakstus, mantisas platumus vai verifikācijas jomas. Gan fiksētā, gan mainīgā komata aritmētiku var ļaunprātīgi izmantot ar lielu entuziasmu. Vērtība ir tā, ka šī ļaunprātīgā izmantošana kļūst redzamāka. Skaidrs skaitļošanas līgums dod ko pārskatīt. Slēpts peldošā komata pieņēmums dod mazu spoku ražošanā.
Verifikācija nav nozīmīte
Katra skaitļošanas bibliotēka agri vai vēlu uzzina, ka vārdi pareizs un precīzs ir lēti, kamēr tie nav piesaistīti testa sistēmai. Pareizs kur? Precīzs salīdzinājumā ar ko? Kādā ievades domēnā? Ar kādu noapaļošanas uzvedību? Kurā laidienā? Zem kādiem testiem?
Numerus materiāli izvirza verifikāciju priekšplānā: tikai veselu skaitļu CORDIC transcendentālajām funkcijām, salīdzinājums ar augstas precizitātes MPFR orākulu, īpašību testi un laidiena pārbaudes. Precīzais apgalvojums ir jēgpilns tikai tad, ja tas ir piesaistīts šai mehānikai. Nozīmīte, kas saka precīzs, ir dekorācija. Testa sistēma, kas salīdzina, samazina un neizdodas, ir inženierija.
Šī atšķirība ir svarīga, jo skaitliskās kļūdas bieži slēpjas malās. Domēna vidus uzvedas kā nākas. Demonstrācija uzvedas kā nākas. Parastās vērtības uzvedas kā nākas. Tad pienāk robežvērtība ar savu mapi. Negatīvas ievades, vērtības tuvu nullei, pārpildes robežas, mēroga pārejas, noapaļošanas neizšķirti, eksponentu saraksta robežas un atkārtotas darbības ir tas, kur skaitliskās bibliotēkas vai nu iemanto uzticību, vai sāk rakstīt daiļliteratūru.
Īpašību testēšana ir noderīga, jo cilvēki slikti iztēlojas visus veidus, kā skaitlis var būt kaitinošs. Augstas precizitātes orākuls ir noderīgs, jo ieviešanai ir vajadzīga atsauce, kas nav tā pati. Izlaišanas pārbaudes ir noderīgas, jo pārbaudīts apgalvojums no pagājušā mēneša nav garantija šim mēnesim. Programmatūra nepaliek pareiza pieklājības pēc.
Determinismam jābūt arhitektūrā, nevis zemsvītras piezīmē
Ir vilinoši uzskatīt deterministisko aritmētiku par zema līmeņa bibliotēkas detaļu. Tieši tur daudzas komandas to zaudē. Kamēr produktam ir vajadzīga atskaņošana, skaitliskie pieņēmumi jau ir izkaisīti pa pakalpojumiem, piezīmju grāmatiņām, iegultajām platformām, modeļu rīkiem un integrācijas testiem. Tad determinisms kļūst par modernizāciju. Modernizācijas ir vieta, kur budžeti attīsta raksturu.
Īstais brīdis skaitliskās nostājas izlemšanai ir agri. Vai šai darba slodzei ir vajadzīga bitu stabila atskaņošana? Vai tā šķērso mašīnas? Vai tā šķērso arhitektūras? Vai tā atbalsta regulētu lēmumu? Vai tā baro simulāciju? Vai tā kļūst par apmācības datiem, secinājumu ievadi, modeļa saspiešanas izvadi vai digitālā dvīņa stāvokli? Ja jā, aritmētika ir arhitektūras jautājums.
Numerus lieliski sader ar FMI un Twin tieši šī iemesla dēļ. FMI rūpējas par deterministiskiem simulācijas kodoliem un modeļu apmaiņu. Twin rūpējas par operatīvā vai fiziskā stāvokļa atskaņošanu laika gaitā. Ledger ieraksta operatīvos notikumus. Trace nes atskaņojamus aprēķinu pierādījumus. Šie slāņi kļūst mierīgāki tikai tad, ja skaitliskais slānis zem tiem nedreifē kā iepirkumu grozs ar vienu sliktu riteni.
AI sistēmās tas kļūst vēl konkrētāks. Kvantizācija, vērtēšana, ranžēšana, simulācija, ierobežojumi, kalibrēšana, saspiešana un atskaņošana visas izmanto skaitļus. Ja šie skaitļi dažādās vidēs uzvedas atšķirīgi, modelis var nebūt vainīgais. Tas ir vienkārši redzamākais aizdomās turamais. Ērti, bet ne vienmēr pareizi.
Mazas mašīnas nav otrās šķiras pilsoņi
Daudz AI un simulācijas arhitektūras klusībā pieņem ērtu mašīnu. Būs serveris. Būs GPU. Būs pietiekami daudz atmiņas. Būs mākoņpakalpojums. Būs rēķins, kas liek kādam izdomāt frāzi stratēģiskais ieguldījums.
Īstas sistēmas nav tik kārtīgas. Daži aprēķini jāveic iegultajās platformās. Daži dzīvo malā. Daži atrodas ierīcēs bez peldošā komata vienības. Dažiem ir vajadzīga no_std saderība. Dažiem jāturpina darboties, kad tīkls nav aicināts. Ja skaitliskais pamats uzvedas tikai ērtajā gadījumā, tas nav pamats. Tās ir mēbeles.
Veselu skaitļu aritmētika šeit palīdz, jo tā samazina atkarību no mērķa platformai raksturīgas peldošā komata uzvedības tur, kur darba slodzi var veikt ar šiem profiliem. no_std spējīgas virsmas palīdz, jo ne katra vide piedāvā servera procesa standarta bibliotēkas ērtības. Būtība nav nostalgia par mazākām mašīnām. Tā ir kontrole pār to, kurš skaitliskais līgums nonāk līdz ierobežotiem mērķiem.
Tā nav nostalgia par mazākām mašīnām. Tā ir kontrole. Ja aprēķins ir daļa no produkta, produktam nevajadzētu prasīt visērtāko vidi tikai tāpēc, lai tam varētu uzticēties.
Garlaicīgais piemērs ir svarīgais
Iedomājieties devas aprēķinu, tarifa aprēķinu, simulācijas soli, atkārtoti atskaņotu sensora vērtību vai modeļa saspiešanas slieksni. Neviens no tiem neizklausās aizraujoši. Labi. Aizraušanās parasti ir vieta, kur sākas paviršība. Garlaicīgie piemēri ir tie, kur skaitliskā noteiktība pierāda savu vērtību.
Ja rezultātu izmanto vienreiz un aizmirst, neliela novirze var nebūt svarīga. Ja rezultātu ieraksta un atkārtoti atskaņo, tā ir svarīga. Ja to salīdzina dažādās vidēs, tā ir svarīga. Ja tas ietekmē vēlāku lēmumu, tā ir svarīga. Ja klients, revidents vai inženieris var jautāt, kāpēc parādījās šī vērtība, tā noteikti ir svarīga. Tajā brīdī aprēķins vairs nav iekšēja ieviešanas detaļa. Tā ir daļa no stāsta, ko produkts stāsta.
Tāpēc Numerus nav tikai matemātikas bibliotēka abstraktā nozīmē. Tā ir sastāvdaļa pierādījumu arhitektūrā. Tā dod citām sistēmām mierīgāku skaitlisko slāni, uz kura stāvēt. Reed var parsēt avotu ar kvītīm. Ledger var ierakstīt notikumus. BitWeave var padarīt izguvi noteiktu. HEDL var padarīt strukturētus datus mazāk izšķērdīgus. Numerus padara aritmētiku mazāk slidenu. Katra daļa noņem vienu vietu, kur sistēma citādi vienkārši atmet ar roku.
Mācība
Numerus mācība ir tāda, ka skaitļi ir produkta uzvedība. Ne tikai ieviešanas detaļa. Ne tikai matemātika. Uzvedība. Ja viens un tas pats ievaddatu kopums var dot atšķirīgu atbildi, kad to pārceļ uz citu atbalstītu vidi, šī atšķirība tagad pieder produktam.
Noteikta aritmētika ne vienmēr ir nepieciešama. Kad tā ir nepieciešama, tā ir jāieprojektē jau sākumā, nevis jālūdzas, lai tā parādās vēlāk. Izvēlieties skaidras skaitliskās saimes. Pārbaudiet pret orākulu. Testējiet stūra gadījumus. Ievērojiet izvietošanas ierobežojumus. Paturiet prātā atkārtotu atskaņošanu, pirms pirmais incidenta ziņojums visus pēkšņi padara filozofiskus.
Numerus ir noderīga, jo tā pārvērš aritmētiku par līgumu, uz kuru pārējā tehnoloģiju kaudze var paļauties. Binārais, trīskāršais, veselais, fiksētais, peldošais, Decimal un AXIOM nav saukļi. Tie ir veidi, kā veidot skaitļus, lai viena un tā pati atbilde varētu parādīties divreiz, apzināti. AXIOM iegūst savu dziļāko stāstu, jo tā ir daļa, kur pats punkts sāk kustēties, kamēr līgums paliek noteikts. Tas nav izcili. Tas ir labāk nekā izcili. Tas ir tāds garlaicīgums, kas ļauj nopietnām sistēmām mierīgi gulēt naktī.