AXIOM și punctul care se mișcă

Precizia în virgulă fixă aduce disciplină, dar o singură scară poate irosi din ea. Dweve AXIOM permite fiecărei valori să aleagă dintr-o listă explicită de...

AXIOM și punctul care se mișcă

Punctul s-a mutat, contractul nu

Aritmetica în virgulă fixă este atractivă pentru că este onestă. Alegi o scară, spui unde locuiește punctul, iar mașina nu se mai preface că fiecare număr este o prognoză meteo minusculă. Asta face reluarea mai calmă, țintele încorporate mai ușor de raționat, iar auditurile mai puțin dependente de expresii precum suficient de aproape. Minunat. Și incomplet.

O singură scară fixă poate fi prea brutală. Alege o scară care gestionează valori foarte mici, iar valorile mai mari rămân fără spațiu. Alege o scară care gestionează valori mai mari, iar valorile mici pierd detalii utile. Poți împărți volumul de muncă în mai multe tipuri, dar acum codul are un alt fel de dezordine. Felicitări, punctul zecimal este acum o problemă de personal.

AXIOM există pentru cazurile în care punctul trebuie să se mute fără să transforme stratul numeric înapoi într-o supă de virgulă mobilă. În codul Dweve este o familie adaptivă cu punct variabil: fiecare valoare concretă poartă un semn, un index de listă de exponenți și o mantisă într-o reprezentare împachetată pe 32 de biți. Exponentul nu este o dispoziție ambientală a hardware-ului. Este selectat dintr-o listă explicită. Mantisa este o sarcină utilă de tip întreg. Valoarea reprezentată este semnul înmulțit cu mantisa înmulțit cu doi la puterea exponentului negativ selectat. Fraza asta nu este drăguță, dar este tot trucul.

Partea importantă nu este că punctul se mută. Virgula mobilă mută deja punctul. Partea importantă este că AXIOM îl mută printr-o listă declarată care poate fi revizuită, testată, specializată și menținută deterministă. Codul nu cere platformei să improvizeze o personalitate numerică. Îi oferă valorii un contract compact și face ca aritmetica să revină la acel contract după fiecare operație.

AXIOM nu este un punct zecimal magic. Valoarea concretă este un cuvânt împachetat cu semn, alegere de exponent și mantisă. Disciplina utilă este că fiecare parte are un rol.

În codul sursă, forma concretă este Axiom<M, E>. Lățimea mantisei trebuie să se potrivească reprezentării, cu aliasuri practice precum Adp4, Adp8, Adp16, Adp23, AdpNN4 și AdpNN8. Aceste nume nu sunt decorațiuni. Îți spun câtă sarcină utilă și ce profil de exponent ar trebui să folosească valoarea. O valoare cu o listă de exponenți în formă de NN nu este aceeași promisiune ca o valoare cu o listă generală mai largă. Să le tratezi ca fiind aceleași pentru că ambele arată numeric este modul în care codurile serioase încep să adune folclor.

Punctul variabil nu este vibe-uri

Expresia punct adaptiv variabil poate suna ca și cum cineva a redenumit virgula mobilă ca să treacă de o achiziție într-o ședință. Nu asta se întâmplă. AXIOM nu face exponentul un efect secundar invizibil. Exponentul este selectat dintr-o listă atașată tipului sau strategiei. În codul sursă actual, listele concrete de exponenți includ standard [16, 8, 4, 0], densă [12, 8, 4, 0], greutăți pentru rețele neuronale [8, 6, 4, 0] și o listă fină [16, 14, 12, 10, 8, 6, 4, 0]. Acestea sunt valorile actuale din codul sursă, iar această distincție contează pentru că sursa s-a schimbat în timp; afirmațiile actuale ar trebui să urmeze codul actual, nu liste de exponenți învechite.

Lista este decizia de produs. O listă standard oferă câteva benzi largi. O listă densă schimbă locul unde stau benzile. Lista NN este modelată pentru date de tip greutate. Lista fină oferă mai multe alegeri apropiate. Nimic din toate acestea nu elimină judecata. Mută judecata într-un loc unde revizuirea codului o poate vedea.

This is the difference between a controlled adaptive representation and a general excuse. A fixed-point type says every value here uses this scale. AXIOM says every value here chooses from this declared set of scales. That is a wider contract, not a missing one. The point moves, but it moves on rails. Very Dutch, really. Even the decimal point has infrastructure.

Fixed-point gives one uniform grid. AXIOM gives a declared set of exponent bands. That extra choice is useful only because it remains explicit.

It is worth being precise about what AXIOM is not. It is not exact rational arithmetic. It is not a license to ignore range analysis. It is not a benchmark claim. It is not a guarantee that the chosen exponent list fits your workload because the acronym looked energetic. You still need to understand the values, the dynamic range, the acceptable error, the deployment target, and the replay requirements. AXIOM makes those choices more inspectable. It does not make them go away. If anything, it makes lazy numeric thinking harder to hide, which is usually where the screaming starts.

Arithmetic has to come home

A number format is easy to draw and harder to make useful. The useful part is the arithmetic. Addition and subtraction have to deal with values that may be sitting on different exponent bands. Multiplication and division have to do wider integer mantissa workbefore returning the result to the target shape. After the operation, the value has to normalize back into an available exponent choice. That last step matters because a representation that cannot come home is just a holiday abroad with better branding.

AXIOM arithmetic therefore has a rhythm. Bring in packed values. Align or widen as needed. Perform the integer-oriented operation. Normalize. Store the result back into the declared shape. If it does not fit, that should be visible as a representation problem, not quietly delegated to the mood of the machine. The contract is useful because it has edges.

This is the same reason Numerus matters around it. The wider stack is not trying to collect number formats like stamps. It wants arithmetic that can survive replay, embedded deployment, simulation, model compression, tests, and audit trails. AXIOM is one family inside that story. It handles a particular problem: values whose useful scale changes, but whose behaviour still has to be deterministic.

The operation is not done when the mantissas have been touched. The result must return to a declared AXIOM shape, otherwise the representation stopped being a contract.

That is the boring sentence that saves teams later: normalize back into shape. It sounds like implementation detail until a replay differs, a threshold flips, or a compressed model behaves differently on a smaller target. Then it becomes the sentence everyone wishes had been in the architecture document.

Why AXIOM sits under Numerus

The public Numerus story is deliberately simpler than the source tree. Most readers want to know whether the numeric layer can give deterministic arithmetic, fixed-point families, decimal behaviour, no_std posture, integer-oriented embedded profiles, verification, and the same answer twice. They do not need every internal type on the first page. That is not secrecy. That is mercy.

Sub suprafață, stratul numeric comun este mai larg. Acesta include tipuri întregi binare, ternare, native și sub-byte, aliasuri pentru virgulă fixă, tipuri legate de virgulă mobilă pentru lucrări de compatibilitate și AXIOM adaptiv. Trăsăturile partajate oferă acestor familii o suprafață comună. Numerus înfășoară apoi componentele care ar trebui să fie vizibile pentru utilizator: virgulă fixă binară și zecimală, AXIOM, întregi, operații, suprafețe DSL și postura de verificare. Această separare este sănătoasă. O fundație poate fi largă fără ca pagina publică să arate ca un meniu de la un restaurant care și-a pierdut încrederea.

AXIOM merită un articol propriu pentru că nu este doar o altă intrare în acea listă. Virgula fixă înseamnă plasarea punctului într-un singur loc. Virgula fixă zecimală înseamnă poziții zecimale exacte în baza zece. Formele binare și ternare vizează căi compacte cu lățime mică de biți. AXIOM vizează transformarea punctului într-o parte controlată a valorii. Aceasta schimbă modul în care gândești reprezentarea, aritmetica, testele și implementarea.

Schimbă și modul în care ar trebui formulate afirmațiile publice. Performanța AXIOM aparține benchmark-urilor actuale pe codul actual, nu folclorului moștenit. Stiva mai largă nu ar trebui descrisă ca având zero operații cu virgulă mobilă, deoarece suprafețele de conversie și afișare pot traversa acea graniță. Afirmația mai sigură și mai precisă este că aritmetica fixă și adaptivă de bază este orientată spre întregi și proiectată pentru comportament determinist. Această frază este mai puțin spectaculoasă. Bine. Afirmațiile numerice spectaculoase sunt modul în care dashboard-urile devin generatoare de scuze.

Mai multe căi de calcul, o singură familie

Valoarea concretă împachetată este doar începutul. Sursa conține mai mult de o modalitate de a folosi AXIOM, deoarece sarcinile de lucru nu sunt suficient de politicoase pentru a se potrivi într-un singur aspect pentru totdeauna. Există calea concretă împachetată pentru liste de exponenți la timp de compilare. Există Flex<S> pentru stocarea exponenților la timp de execuție peste dimensiuni de stocare întregi. Există forme tensoriale și de bloc unde structura partajată a exponenților poate fi utilă. Există procesare stratificată. Există APoT, unde valorile pot fi reprezentate ca sume de puteri semnate ale lui doi, astfel încât înmulțirea să devină deplasări și adunări. Există cercetare de profilare și de exponenți învățați în jurul acestora.

Această diversitate nu este un motiv pentru afirmații exagerate. Este un motiv pentru a fi atent la sarcina de lucru. O cale de redare scalară, o cale de cuantizare în lot, o cale asemănătoare tensorială și o cale de ponderi APoT au presiuni diferite. Dispunerea memoriei, reutilizarea exponenților, intervalul, normalizarea și forma hardware-ului contează toate. AXIOM oferă un vocabular pentru aceste alegeri. Nu absolvă pe nimeni de responsabilitatea de a le face.

AXIOM este o familie de căi de calcul. Valorile împachetate, stocarea flexibilă a exponenților, aspectele tensoriale sau de bloc și căile de deplasare-adunare APoT sunt instrumente diferite, nu un singur slide de marketing.

Aici devine interesantă ingineria. APoT nu este doar un truc drăguț de compresie. Pentru valori potrivite, transformă înmulțirea într-o problemă de deplasare și adunare. Căile tensoriale și de bloc pot partaja structura exponenților atunci când o sarcină de lucru are suficientă formă. Flex menține disponibilă stocarea exponenților la timp de execuție atunci când listele la nivel de tip sunt prea rigide. Niciuna dintre acestea nu ar trebui selectată pentru că diagrama arăta frumos. Sarcina de lucru alege, sau raportul de eroare va alege mai târziu și va fi mult mai puțin fermecător în privința asta.

Cum să revizuiești o alegere AXIOM

Prima întrebare din analiză este banală și tocmai de aceea utilă: de ce nu un tip numeric mai simplu? Dacă valoarea este bani sau o sumă zecimală reglementată, Decimal poate fi răspunsul corect. Dacă intervalul este mic și bine delimitat, un tip în virgulă fixă în format Q poate fi mai potrivit. Dacă numărul există doar pentru interoperabilitate cu un format de fișier sau cu un API extern, un tip bazat pe virgulă mobilă poate fi adaptorul de graniță cel mai onest. AXIOM își dovedește utilitatea atunci când volumul de lucru are magnitudine variabilă, are nevoie totuși de un contract determinist și beneficiază de un set explicit de exponenți.

A doua întrebare este dacă lista de exponenți descrie datele sau doar flatează inginerul. O listă cu patru benzi largi este un compromis diferit față de o listă detaliată cu opt intrări. Lista în formă de NN nu este o etichetă decorativă. Ea spune că valorile sunt de așteptat să se comporte ca date de tip greutate. Dacă distribuția nu corespunde listei, reprezentarea va funcționa oricum. Software-ul este adesea dispus să facă lucrul greșit cu o viteză impresionantă. Asta nu îl transformă într-un design.

A treia întrebare este unde apare presiunea de normalizare. Adunarea între benzi de exponenți îndepărtate poate pierde detalii. Înmulțirea poate produce un rezultat care are nevoie de o altă bandă. Operațiile repetate pot acumula presiune exact în locurile pe care demonstrația nu le-a vizitat. Analiza ar trebui să ceară teste de graniță în jurul lui zero, schimbări de semn, tranziții de exponenți, mantise mari și operații repetate. Dacă aceste cazuri par enervante, cu atât mai bine. Probabil că ele sunt cazurile care contează cu adevărat.

Ultima întrebare este cum lasă reprezentarea urme. Ce alias de tip am ales? Ce listă de exponenți? Ce lățime de mantisă? Ce cale de conversie? Ce oracol sau test de proprietate susține afirmația? Dacă răspunsul este împrăștiat în comentarii și optimism, sistemul a pierdut deja o parte din beneficiu. AXIOM este cel mai util atunci când alegerea numerică devine parte din arhitectura documentată, nu un truc local ingenios ascuns la trei module distanță.

Verificarea bate numerele spectaculoase

Formatele numerice atrag numere spectaculoase. Mai mic. Mai rapid. Mai eficient. Mai bun. Cuvintele sunt ieftine și apar de obicei înaintea infrastructurii de testare, exact în ordinea greșită. Pentru AXIOM, atitudinea responsabilă este să tratezi benchmark-urile ca dovezi per versiune, nu ca mitologie. Dacă benchmark-ul nu a fost rulat din nou pe codul sursă actual, cu compilatorul actual, cu flag-urile actuale și pe hardware-ul actual, nu este o afirmație publică. Este o carte poștală dintr-o după-amiază anterioară.

Mai importantă este calea de verificare. Codarea și decodarea rămân în limitele contractului declarat? Operațiile normalizează într-o formă validă? Cazurile limită din jurul granițelor de exponenți se comportă intenționat? Testele de proprietate acoperă valorile enervante pe care oamenii le uită pentru că oamenii au hobby-uri? Există un oracol de înaltă precizie acolo unde comparația are sens? Poate replay-ul să reconstruiască aceeași cale de valori?

Ultima întrebare este motivul pentru care acest lucru își are locul în stiva noastră. Dweve continuă să construiască sisteme în care calculul lasă urme: parsere cu chitanțe, registre cu evenimente tipizate, regăsire cu căi deterministe, formate de date care nu târăsc un cărucior de chei repetate, straturi de simulare și numerice care pot fi redate. AXIOM se potrivește pentru că mutarea punctului nu ar trebui să însemne pierderea chitanței.

Concluzia

Concluzia AXIOM nu este că virgula fixă a fost greșită. Virgula fixă este în continuare unul dintre cele mai curate instrumente pe care le avem. Concluzia este că o singură scară fixă nu este întotdeauna suficientă, iar alternativa nu trebuie să fie un comportament opac în virgulă mobilă. O valoare poate purta o alegere controlată de exponent. Punctul se poate muta, dar contractul rămâne vizibil.

Aceasta este povestea publică ce merită spusă. Pachetele Dweve AXIOM înglobează semnul, indexul exponentului și mantisa. Acestea selectează din liste explicite de exponenți. Folosesc aritmetică orientată pe numere întregi și normalizează rezultatele înapoi în formele declarate. Au căi concrete, flexibile, tensoriale, pe blocuri, stratificate, APoT și de cercetare în baza de cod. Se încadrează sub Numerus, deoarece aritmetica deterministă nu este o misiune secundară. Este parte din modul în care sistemele serioase obțin același răspuns de două ori.

Punctul se mută. Responsabilitatea nu. Aceasta este partea utilă.