Numerus a stejná odpověď dvakrát

Plovoucí čárka se snadno odbude, dokud nezmění test, simulaci, přehrání nebo rozhodovací cestu. Numerus považuje aritmetiku za infrastrukturu, která se musí...

Numerus a stejná odpověď dvakrát

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.

When a result enters a replay or audit path, the useful question is not whether two answers are close. It is whether the system can make the same answer twice.

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.

To na věci záleží, protože produktové systémy nejen počítají. Pamatují si. Přehrávají. Porovnávají. Vysvětlují. Pokud stejný výpočet přináší různé výsledky napříč podporovanými prostředími, rozdíl se stane součástí produktu, ať to někdo plánoval, nebo ne.

Jedna numerická knihovna je vlastně několik příslibů

Numerický základ není jedna věc. Je to soubor příslibů pro různé publikum. Vestavěný inženýr se stará o to, aby omezené cílové platformy zvládly relevantní profily zaměřené na celočíselnou aritmetiku, aniž by s sebou táhly pohodlný serverový běhový běh. Simulační inženýr se stará o to, aby přehrání dokázalo reprodukovat stav. Auditor se stará o to, aby bylo možné vysvětlit cestu k odpovědi. Vlastník produktu se stará o to, aby se věc nechovala jako nervózní kalkulačka, když se přesune z jednoho prostředí do druhého.

Veřejná stránka Numerus vyzdvihuje rodiny, na které se lidé ptají nejčastěji: Q-formát s pevnou řádovou čárkou, Decimal a AXIOM. Kódová základna je širší. common/numeric nese binární formy XNOR a POPCNT, ternární hodnoty, nativní a podbajtová celá čísla, aliasy s pevnou řádovou čárkou, malé formáty s plovoucí řádovou čárkou a adaptivní AXIOM. Fasáda Numerus pak kolem tohoto základu přidává produktově orientované povrchy pro desetinnou a aritmetickou práci. Toto rozdělení je důležité, protože se vyhýbá falešné eleganci nucení každého čísla do jednoho kostýmu.

Různé pracovní zátěže potřebují různé tvary čísel. Společným příslibem je deterministické chování napříč širším numerickým povrchem, ne jedna módní reprezentace pro všechno.

Toto je velmi evropský druh inženýrství v tom nejlepším smyslu. Méně dramatu, více smlouvy. Výpočet by měl říct, čím je. Rozsah by měl být známý. Desetinné chování by mělo být explicitní. Cílové omezení by měla být respektována. Výsledek by měl být reprodukovatelný. Nikdo k tomu nepotřebuje keynote. Potřebují, aby to fungovalo.

AXIOM si zaslouží vlastní článek, protože není jen dalším aliasem v seznamu. Je to adaptivní rodina s proměnnou řádovou čárkou od Dweve: znaménko, index exponentu a mantisa zabalené do kompaktní reprezentace, s výběrem seznamů exponentů pro obecná, hustá, jemnozrnná nebo data ve tvaru neuronové sítě. Tento příspěvek ho pouze umisťuje do mapy Numerus. Hlubší příběh je o tom, jak adaptivní výběr exponentu dává měnícím se velikostem více prostoru, aniž by se aritmetika znovu stala nedeterministickou.

Také to brání přehánění. Numerus nedělá každý numerický problém snadným. Neodstraňuje potřebu volit měřítka, rozsahy, chování zaokrouhlování, seznamy exponentů, šířky mantis nebo ověřovací domény. Aritmetiku s pevnou i proměnnou řádovou čárkou lze zneužít s velkým nadšením. Hodnota spočívá v tom, že zneužití je viditelnější. Explicitní numerická smlouva vám dá něco k přezkoumání. Skrytý předpoklad o plovoucí řádové čárce vám dá malého ducha do produkce.

Ověřování není odznak

Každá numerická knihovna se nakonec naučí, že slova jako správný a přesný jsou levná, dokud nejsou připojena k testovacímu zařízení. Správný kde? Přesný ve srovnání s čím? Nad kterou vstupní doménou? S jakým chováním zaokrouhlování? Ve které verzi? Pod kterými testy?

Materiály Numerus staví ověřování do popředí: CORDIC pouze s celými čísly pro transcendentální funkce, porovnání s vysoce přesným orákulem MPFR, testy vlastností a kontroly vydání. Přesné tvrzení je smysluplné pouze ve spojení s tímto mechanismem. Odznak, který říká přesný, je dekorace. Testovací zařízení, které porovnává, zmenšuje a selhává, je inženýrství.

Numerická důvěryhodnost by měla plynout z cesty přes oracle a z property testů, ne z grafu, který je sám sebou spokojený.

Tento rozdíl je důležitý, protože numerické chyby se často skrývají na okrajích. Střed domény se chová. Demo se chová. Běžné hodnoty se chovají. A pak přijde hraniční hodnota se svým zápisníkem. Záporné vstupy, hodnoty blízké nule, hranice přetečení, přechody měřítek, zaokrouhlovací remízy, hranice seznamu exponentů a opakované operace jsou místa, kde si numerické knihovny buď vydobudou důvěru, nebo začnou psát fikci.

Property testing je užitečný, protože lidé neumí předvídat všechny způsoby, jak může být číslo nepříjemné. Oracle s vysokou přesností je užitečný, protože implementace potřebuje referenci, která není sama sebou. Kontroly před vydáním jsou užitečné, protože ověřené tvrzení z minulého měsíce není zárukou pro měsíc tento. Software nezůstává správný jen ze slušnosti.

Determinismus patří do architektury, ne do poznámky pod čarou

Je lákavé považovat deterministickou aritmetiku za detail na úrovni knihovny. Právě tam ji mnoho týmů ztratí. Než produkt potřebuje přehrání, numerické předpoklady jsou už rozptýlené napříč službami, notebooky, vestavěnými cíli, nástroji pro modely a integračními testy. Pak se z determinismu stane dodatečná úprava. Dodatečné úpravy jsou místa, kde rozpočty získávají charakter.

Správný okamžik pro rozhodnutí o numerickém postoji je brzy. Potřebuje tato zátěž bitově stabilní přehrání? Přechází přes stroje? Přechází přes architektury? Podporuje regulované rozhodnutí? Napájí simulaci? Stává se trénovacími daty, vstupem pro inferenci, výstupem komprese modelu nebo stavem digitálního dvojčete? Pokud ano, aritmetika je architektonická.

Numerus zapadá vedle FMI a Twin právě z tohoto důvodu. FMI se stará o deterministická simulační jádra a výměnu modelů. Twin se stará o přehrávání provozního nebo fyzického stavu v čase. Ledger zaznamenává provozní události. Trace nese doklady o výpočtech, které lze přehrát. Tyto vrstvy se uklidní, jen když numerická vrstva pod nimi nedriftuje jako nákupní vozík s jedním špatným kolečkem.

V systémech s umělou inteligencí je to ještě konkrétnější. Kvantizace, skórování, řazení, simulace, omezení, kalibrace, komprese a přehrání používají čísla. Pokud se tato čísla chovají v různých prostředích odlišně, nemusí být model viníkem. Je prostě nejviditelnějším podezřelým. Pohodlné, ale ne vždy správné.

Malé stroje nejsou občané druhé kategorie

Mnoho architektur pro AI a simulace tiše předpokládá pohodlný stroj. Bude tam server. Bude tam GPU. Bude dost paměti. Bude cloudová služba. Bude účet, který někoho donutí vymyslet sousloví strategická investice.

Skutečné systémy jsou méně uklizené. Některé výpočty musí běžet na vestavěných cílech. Některé žijí na okraji. Některé sedí v zařízeních bez jednotky s plovoucí řádovou čárkou. Některé potřebují kompatibilitu s no_std. Některé musí fungovat, i když síť není pozvána. Pokud se numerický základ chová jen v pohodlném případě, není to základ. Je to nábytek.

Stejná numerická smlouva musí přežít omezení nasazení, ne jen vývojářský notebook, kde je všeho dostatek a je teplo.

Celá číselná aritmetika zde pomáhá, protože snižuje závislost na chování pohyblivé řádové čárky specifickém pro danou platformu tam, kde to pracovní zátěž umožňuje. Povrchy kompatibilní s no_std pomáhají, protože ne každé prostředí má standardní knihovní vymoženosti serverového procesu. Nejde o nostalgii po menších strojích. Jde o kontrolu nad tím, která numerická smlouva se dostane do omezených cílů.

Toto není nostalgie po menších strojích. Je to kontrola. Pokud je výpočet součástí produktu, produkt by neměl vyžadovat to nejpohodlnější prostředí jen proto, aby byl důvěryhodný.

Nudný příklad je ten důležitý

Představte si výpočet dávkování, výpočet tarifu, krok simulace, přehrávanou hodnotu senzoru nebo práh komprese modelu. Nic z toho nezní okouzlující. Dobře. Okouzlující je obvykle místo, kde začíná mávnutí rukou. Nudné příklady jsou místem, kde si numerická determinističnost vydělá na svou existenci.

Pokud se výsledek použije jednou a zapomene se na něj, malá odchylka nemusí vadit. Pokud se výsledek zaznamená a přehraje, vadí. Pokud se porovnává napříč prostředími, vadí. Pokud ovlivňuje pozdější rozhodnutí, vadí. Pokud se zákazník, auditor nebo inženýr může zeptat, proč se tato hodnota objevila, rozhodně vadí. V tu chvíli výpočet přestává být vnitřním implementačním detailem. Stává se součástí příběhu, který produkt vypráví.

Proto Numerus není jen matematická knihovna v abstraktním smyslu. Je součástí architektury důkazů. Dává ostatním systémům klidnější numerickou vrstvu, na které mohou stát. Reed dokáže analyzovat zdroj s účtenkami. Ledger dokáže zaznamenávat události. BitWeave dokáže učinit vyhledávání deterministickým. HEDL dokáže učinit strukturovaná data méně plýtvavými. Numerus činí aritmetiku méně kluzkou. Každý kus odstraňuje jedno místo, kde by se systém jinak jen pokrčil rameny.

Ponaučení

Ponaučení z Numerus je, že čísla jsou chováním produktu. Ne jen implementačním detailem. Ne jen matematikou. Chováním. Pokud stejný vstup může při přesunu do jiného podporovaného prostředí vyprodukovat jinou odpověď, tento rozdíl nyní patří produktu.

Deterministická aritmetika není vždy nutná. Když je nutná, měla by být navržena od začátku, ne vyprošena do existence později. Vyberte explicitní číselné rodiny. Ověřujte proti orákulu. Testujte okrajové případy. Respektujte omezení nasazení. Myslete na přehrávání dřív, než první hlášení o incidentu učiní všechny náhle filozofickými.

Numerus je užitečný, protože mění aritmetiku na smlouvu, na kterou se může zbytek zásobníku spolehnout. Binární, ternární, celočíselná, pevná, pohyblivá řádová čárka, Decimal a AXIOM nejsou slogany. Jsou to způsoby, jak tvarovat čísla tak, aby se stejná odpověď mohla objevit dvakrát, záměrně. AXIOM má svůj vlastní hlubší příběh, protože je částí, kde se samotný bod začíná pohybovat, zatímco smlouva zůstává deterministická. To není efektní. Je to lepší než efektní. Je to ten druh nudy, který vážným systémům umožní v noci spát.