Aksioma ir judantis taškas
Taškas pasislinko, o sutartis ne
Fiksuoto kablelio aritmetika patraukli, nes ji sąžininga. Pasirenki mastelį, nurodai, kur yra kablelis, ir mašina nustoja apsimetinėti, kad kiekvienas skaičius yra mažytė orų prognozė. Dėl to atkūrimas tampa ramesnis, įterptines sistemas lengviau suprasti, o auditai mažiau priklauso nuo tokių frazių kaip „pakankamai arti“. Puiku. Ir neišsamu.
Vienas fiksuotas mastelis gali būti per grubus. Pasirink mastelį, kuris tinka labai mažoms reikšmėms, ir didesnėms reikšmėms pritrūks vietos. Pasirink mastelį, kuris tinka didesnėms reikšmėms, ir mažos reikšmės praras naudingą tikslumą. Gali padalyti darbą į kelis tipus, bet tada kodų bazėje atsiras kitokia netvarka. Sveikinu, dešimtainis kablelis dabar yra personalo problema.
AXIOM egzistuoja tiems atvejams, kai kablelį reikia perkelti nepaverčiant skaitinio sluoksnio atgal į slankiojo kablelio košę. Dweve kodų bazėje tai adaptyvi kintamo kablelio šeima: kiekviena konkrečią reikšmė turi ženklą, eksponento sąrašo indeksą ir mantisę, supakuotą į 32 bitų atvaizdą. Eksponentas nėra aplinkos aparatinės įrangos nuotaika. Jis parenkamas iš aiškaus sąrašo. Mantisė yra sveikųjų skaičių apkrova. Pavaizduota reikšmė yra ženklas padaugintas iš mantisės padaugintas iš dviejų, pakeltų į neigiamą pasirinktą eksponentą. Tas sakinys nėra mielas, bet jame ir yra visas triukas.
Svarbiausia ne tai, kad kablelis juda. Slankusis kablelis jau judina kablelį. Svarbiausia, kad AXIOM jį judina per deklaruotą sąrašą, kurį galima peržiūrėti, testuoti, specializuoti ir išlaikyti deterministinį. Kodas neprašo platformos improvizuoti skaitinės asmenybės. Jis suteikia reikšmei kompaktišką sutartį ir priverčia aritmetiką po kiekvienos operacijos grįžti prie tos sutarties.
Šaltinyje konkreti forma yra Axiom<M, E>. Mantisės plotis turi tilpti į atvaizdą, su praktiniais aliasais, tokiais kaip Adp4, Adp8, Adp16, Adp23, AdpNN4 ir AdpNN8. Tie pavadinimai nėra dekoracijos. Jie nurodo, kiek apkrovos ir kokį eksponento profilį reikšmė turėtų naudoti. Reikšmė su NN formos eksponento sąrašu nėra tas pats pažadas kaip reikšmė su platesniu bendruoju sąrašu. Laikyti jas vienodomis, nes abi atrodo skaitinės, yra būdas rimtoms kodų bazėms pradėti kaupti folklorą.
Kintamas kablelis nėra nuotaikos reikalas
Frazė adaptyvus kintamas kablelis gali skambėti taip, lyg kažkas pervadino slankųjį kablelį, kad gautų patvirtinimą susitikime. Taip nėra. AXIOM nepaverčia eksponento nematomu šalutiniu poveikiu. Eksponentas parenkamas iš sąrašo, pririšto prie tipo ar strategijos. Dabartiniame šaltinyje konkretūs eksponento sąrašai apima standartinį [16, 8, 4, 0], tankų [12, 8, 4, 0], neuroninio tinklo svoriams skirtą [8, 6, 4, 0] ir smulkų sąrašą [16, 14, 12, 10, 8, 6, 4, 0]. Tai dabartinės šaltinio reikšmės, ir tas skirtumas svarbus, nes šaltinis laikui bėgant keitėsi; dabartiniai teiginiai turėtų atitikti dabartinį kodą, o ne pasenusius eksponento sąrašus.
Sąrašas yra produkto sprendimas. Standartinis sąrašas suteikia kelias plačias juostas. Tankus sąrašas keičia juostų vietas. NN sąrašas sukurtas svoriams panašiems duomenims. Smulkus sąrašas siūlo daugiau artimų pasirinkimų. Nė vienas iš to nepašalina sprendimo. Jis perkelia sprendimą į vietą, kurioje kodų peržiūra gali jį pamatyti.
Tai skirtumas tarp kontroliuojamo adaptyvaus vaizdavimo ir bendros iškalbos. Fiksuoto taško tipas sako, kad kiekviena reikšmė čia naudoja šią skalę. AXIOM sako, kad kiekviena reikšmė čia pasirenka iš šio deklaruoto skalių rinkinio. Tai platesnis susitarimas, o ne jo nebuvimas. Taškas juda, bet juda bėgiais. Labai olandiška, tiesą sakant. Net dešimtainis taškas turi infrastruktūrą.
Verta tiksliai pasakyti, kuo AXIOM nėra. Tai ne tiksli racionaliųjų skaičių aritmetika. Tai ne leidimas ignoruoti diapazono analizę. Tai ne etaloninio testo teiginys. Tai ne garantija, kad pasirinktas eksponenčių sąrašas tinka jūsų darbo krūviui vien todėl, kad akronimas skambėjo energingai. Vis tiek turite suprasti reikšmes, dinaminį diapazoną, priimtiną paklaidą, diegimo tikslą ir atkūrimo reikalavimus. AXIOM daro tuos pasirinkimus labiau matomus. Jis jų nepanaikina. Jei ką, jis apsunkina tingaus skaitinio mąstymo slėpimą, o čia paprastai ir prasideda riksmai.
Aritmetika turi grįžti namo
Skaičių formatą lengva nupiešti, bet sunkiau padaryti naudingą. Naudinga dalis yra aritmetika. Sudėtis ir atimtis turi susidoroti su reikšmėmis, kurios gali būti skirtingose eksponentės juostose. Daugyba ir dalyba turi atlikti platesnį sveikųjų skaičių mantisos darbą prieš grąžindamos rezultatą į tikslinę formą. Po operacijos reikšmė turi normalizuotis atgal į turimą eksponentės pasirinkimą. Tas paskutinis žingsnis svarbus, nes vaizdavimas, kuris negali grįžti namo, yra tik atostogos užsienyje su geresniu prekės ženklu.
AXIOM aritmetika todėl turi ritmą. Įkelkite supakuotas reikšmes. Sulygiuokite arba praplėskite pagal poreikį. Atlikite į sveikuosius skaičius orientuotą operaciją. Normalizuokite. Įrašykite rezultatą atgal į deklaruotą formą. Jei jis netelpa, tai turėtų būti matoma kaip vaizdavimo problema, o ne tyliai palikta mašinos nuotaikai. Susitarimas naudingas, nes turi ribas.
Dėl tos pačios priežasties Numerus aplink jį yra svarbus. Platesnis technologijų rinkinys nebando rinkti skaičių formatų kaip pašto ženklų. Jis nori aritmetikos, kuri išgyventų atkūrimą, įterptąjį diegimą, modeliavimą, modelio glaudinimą, testus ir audito pėdsakus. AXIOM yra viena šeima toje istorijoje. Jis sprendžia konkrečią problemą: reikšmes, kurių naudinga skalė keičiasi, bet kurių elgsena vis tiek turi būti deterministinė.
Tas nuobodus sakinys vėliau išgelbsti komandas: normalizuokite atgal į formą. Jis skamba kaip įgyvendinimo detalė, kol atkūrimas ima skirtis, slenkstis apsiverčia arba glaudintas modelis elgiasi kitaip mažesniame įrenginyje. Tada jis tampa sakiniu, kurio visi norėtų, kad būtų buvę architektūros dokumente.
Kodėl AXIOM yra po Numerus
Viešoji Numerus istorija sąmoningai paprastesnė nei šaltinio medis. Daugumai skaitytojų užtenka žinoti, ar skaičių sluoksnis gali duoti deterministinę aritmetiką, fiksuoto taško šeimas, dešimtainės trupmenos elgseną, no_std laikyseną, į sveikuosius skaičius orientuotus įterptuosius profilius, patikrą ir tą patį atsakymą du kartus. Jiems nereikia kiekvieno vidinio tipo pirmame puslapyje. Tai ne paslaptis. Tai malonė.
Po apačia bendras skaitmeninis sluoksnis yra platesnis. Jis apima dvejetainius, trejetainius, natyviuosius ir subbaitinius sveikųjų skaičių tipus, fiksuoto kablelio aliasus, su slankiuoju kableliu susijusius tipus suderinamumo darbams ir adaptyvųjį AXIOM. Bendrosios savybės suteikia šioms šeimoms bendrą paviršių. Numerus tada apgaubia dalis, kurios turėtų būti skirtos produktui: dvejetainį ir dešimtainį fiksuotą kablelį, AXIOM, sveikuosius skaičius, operacijas, DSL paviršius ir patikros laikyseną. Šis atskyrimas yra sveikas. Pamatas gali būti platus, nereikalaujant, kad viešas puslapis atrodytų kaip meniu restorano, kuris prarado pasitikėjimą.
AXIOM nusipelno atskiro straipsnio, nes tai ne tik dar vienas įrašas tame sąraše. Fiksuotas kablelis yra apie kablelio įtvirtinimą vienoje vietoje. Dešimtainis fiksuotas kablelis yra apie tikslias dešimtaines vietas. Dvejetainės ir trejetainės formos yra apie kompaktiškus žemų bitų kelius. AXIOM yra apie tai, kad kablelis taptų kontroliuojama reikšmės dalimi. Tai keičia tai, kaip galvojate apie vaizdavimą, aritmetiką, testus ir diegimą.
Tai taip pat keičia tai, kaip turėtų būti apibrėžti vieši teiginiai. AXIOM našumas priklauso dabartiniams etalonams su dabartiniu kodu, o ne paveldėtai folklorai. Platesnis kaminas neturėtų būti apibūdinamas kaip nulinis slankiojo kablelio operacijų kiekis, nes konversijos ir rodymo paviršiai gali kirsti tą ribą. Saugesnis ir tikslesnis teiginys yra tas, kad pagrindinė fiksuota ir adaptyvioji aritmetika yra orientuota į sveikuosius skaičius ir sukurta deterministiniam elgesiui. Tas sakinys nėra įspūdingas. Gerai. Įspūdingi skaitmeniniai teiginiai yra tai, kaip skydeliai tampa atsiprašymų generatoriais.
Keli skaičiavimo keliai, viena šeima
Konkreti supakuota reikšmė yra tik pradžia. Šaltinyje yra daugiau nei vienas būdas naudoti AXIOM, nes darbo krūviai nėra pakankamai mandagūs, kad tilptų į vieną išdėstymą amžinai. Yra supakuotas konkretus kelias kompiliavimo laiko eksponentų sąrašams. Yra Flex<S> vykdymo laiko eksponentų saugojimui per sveikųjų skaičių saugojimo dydžius. Yra tenzorių ir blokų formos, kuriose bendra eksponentų struktūra gali būti naudinga. Yra sluoksniuotas apdorojimas. Yra APoT, kai reikšmės gali būti vaizduojamos kaip ženklinių dviejų laipsnių sumos, kad daugyba taptų poslinkiais ir sudėtimis. Aplink tai yra profiliavimo ir išmoktų eksponentų tyrimų kodas.
Toks išplitimas nėra priežastis daryti laukinius teiginius. Tai priežastis būti atsargiems dėl darbo krūvio. Skaliarinio atkūrimo kelias, paketinės kvantizacijos kelias, į tenzorių panašus kelias ir APoT svorių kelias turi skirtingus spaudimus. Atminties išdėstymas, eksponentų pakartotinis naudojimas, diapazonas, normalizavimas ir aparatinės įrangos forma visi svarbūs. AXIOM suteikia žodyną tiems pasirinkimams. Tai neatleidžia nieko nuo jų priėmimo.
Čia inžinerija tampa įdomi. APoT nėra tik mielas glaudinimo triukas. Tinkamoms reikšmėms jis paverčia daugybą poslinkio ir sudėties problema. Tenzorių ir blokų keliai gali dalytis eksponentų struktūra, kai darbo krūvis turi pakankamai formos. Flex palaiko vykdymo laiko eksponentų saugojimą, kai tipo lygio sąrašai yra pernelyg standūs. Nė vienas iš jų neturėtų būti pasirinktas todėl, kad diagrama atrodė gražiai. Darbo krūvis pasirenka, arba klaidų ataskaita pasirinks vėliau ir bus kur kas mažiau žavinga.
Kaip įvertinti AXIOM pasirinkimą
The first review question is boring and therefore useful: why not a simpler number type? If the value is money or a regulated decimal amount, Decimal may be the right answer. If the range is small and well bounded, a Q-format fixed-point type may be calmer. If the number exists only to interoperate with a file format or external API, a float-related type might be the honest edge adapter. AXIOM earns its keep when the workload has changing magnitude, still needs a deterministic contract, and benefits from an explicit exponent set.
The second question is whether the exponent list describes the data or merely flatters the engineer. A list with four broad bands is a different tradeoff from a fine-grained eight-entry list. The NN-shaped list is not a decorative label. It says the values are expected to behave like weight data. If the distribution does not match the list, the representation will still run. Software is often willing to do the wrong thing at impressive speed. That does not make it a design.
The third question is where normalization pressure appears. Addition across distant exponent bands can discard detail. Multiplication can create a result that needs a different band. Repeated operations can accumulate pressure at exactly the places the demo did not visit. The review should ask for boundary tests around zero, sign changes, exponent transitions, large mantissas, and repeated operations. If those cases feel annoying, good. They are probably the cases that matter.
The final question is how the representation leaves evidence. Which type alias did we choose? Which exponent list? Which mantissa width? Which conversion path? Which oracle or property test backs the claim? If the answer is scattered across comments and optimism, the system has already lost some of the benefit. AXIOM is most useful when the numeric choice becomes part of the architecture record, not a clever local trick hidden three modules down.
Verification beats hero numbers
Numerical formats attract hero numbers. Smaller. Faster. More efficient. Better. The words are cheap and usually arrive before the test harness, which is exactly the wrong order. For AXIOM, the responsible posture is to treat benchmarks as per-release evidence, not mythology. If the benchmark has not been rerun on current source, current compiler, current flags, and current hardware, it is not a public claim. It is a postcard from a previous afternoon.
What matters more is the verification route. Does encoding and decoding stay within the declared contract? Do operations normalize into a legal shape? Do edge cases around exponent boundaries behave intentionally? Do property tests cover the annoying values that humans forget because humans have hobbies? Does a high-precision oracle exist where comparison is meaningful? Can replay rebuild the same value path?
That last question is the reason this belongs in our stack. Dweve keeps building toward systems where computation leaves evidence: parsers with receipts, ledgers with typed events, retrieval with deterministic paths, data formats that do not haul a wagon of repeated keys, simulation and numeric layers that can replay. AXIOM fits because moving the point should not mean losing the receipt.
The lesson
The lesson of AXIOM is not that fixed-point was wrong. Fixed-point is still one of the cleanest tools we have. The lesson is that one fixed scale is not always enough, and the alternative does not have to be opaque floating behaviour. A value can carry a controlled exponent choice. The point can move while the contract stays visible.
That is the public story worth telling. Dweve AXIOM packs sign, exponent index and mantissa. It selects from explicit exponent lists. It uses integer-oriented arithmetic and normalizes results back into declared shapes. It has concrete, flexible, tensor, block, stratified, APoT and research paths in the codebase. It belongs under Numerus because deterministic arithmetic is not a side quest. It is part of how serious systems make the same answer twice.
The point moves. The responsibility does not. That is the useful bit.