Der Punkt, der sich bewegt

Fixed-point gives discipline, but one scale can waste precision. Dweve AXIOM lets each value choose from an explicit exponent list while staying packed,...

Der Punkt, der sich bewegt

Der Punkt hat sich verschoben, der Vertrag nicht

Festkommaarithmetik ist attraktiv, weil sie ehrlich ist. Man wählt eine Skala, man sagt, wo der Punkt liegt, und die Maschine hört auf, so zu tun, als wäre jede Zahl eine winzige Wettervorhersage. Das macht die Wiedergabe ruhiger, eingebettete Ziele leichter durchschaubar und Audits weniger abhängig von Formulierungen wie ungefähr richtig. Schön. Und unvollständig.

Eine feste Skala kann zu grob sein. Wählt man eine Skala, die sehr kleine Werte abdeckt, geht den größeren Werten der Platz aus. Wählt man eine Skala für größere Werte, verlieren die kleinen Werte nützliche Details. Man kann die Arbeit auf mehrere Typen verteilen, aber dann hat die Codebasis eine andere Art von Chaos. Herzlichen Glückwunsch, der Dezimalpunkt ist jetzt ein Personalproblem.

AXIOM existiert für die Fälle, in denen sich der Punkt verschieben muss, ohne die numerische Schicht wieder in eine Floating-Point-Suppe zu verwandeln. In der Dweve-Codebasis ist es eine adaptive Familie mit variablem Punkt: Jeder konkrete Wert trägt ein Vorzeichen, einen Exponentenlisten-Index und eine Mantisse in einer gepackten 32-Bit-Darstellung. Der Exponent ist keine vage Hardware-Stimmung. Er wird aus einer expliziten Liste ausgewählt. Die Mantisse ist eine ganzzahlige Nutzlast. Der dargestellte Wert ist Vorzeichen mal Mantisse mal zwei hoch minus dem gewählten Exponenten. Dieser Satz ist nicht hübsch, aber er ist der ganze Trick.

Das Wichtige ist nicht, dass sich der Punkt verschiebt. Gleitkommazahlen verschieben den Punkt bereits. Das Wichtige ist, dass AXIOM ihn durch eine deklarierte Liste verschiebt, die überprüft, getestet, spezialisiert und deterministisch gehalten werden kann. Der Code bittet die Plattform nicht, eine numerische Persönlichkeit zu improvisieren. Er gibt dem Wert einen kompakten Vertrag und bringt die Arithmetik nach jeder Operation zu diesem Vertrag zurück.

AXIOM ist kein magischer Dezimalpunkt. Der konkrete Wert ist ein gepacktes Wort mit Vorzeichen, Exponentenwahl und Mantisse. Die nützliche Disziplin besteht darin, dass jeder Teil eine Aufgabe hat.

Im Quellcode hat die konkrete Form die Gestalt Axiom<M, E>. Die Mantissenbreite muss zur Darstellung passen, mit praktischen Aliasen wie Adp4, Adp8, Adp16, Adp23, AdpNN4 und AdpNN8. Diese Namen sind keine Dekoration. Sie sagen, wie viel Nutzlast und welches Exponentenprofil der Wert verwenden soll. Ein Wert mit einer NN-förmigen Exponentenliste ist nicht dasselbe Versprechen wie ein Wert mit einer breiteren allgemeinen Liste. Sie wegen ihres numerischen Aussehens gleich zu behandeln, ist der Weg, auf dem ernsthafte Codebasen anfangen, Folklore zu sammeln.

Variabler Punkt ist keine Stimmung

Der Ausdruck adaptiver variabler Punkt kann klingen, als hätte jemand Gleitkommazahlen umbenannt, um die Beschaffung durch eine Besprechung zu bringen. Das ist nicht der Fall. AXIOM macht den Exponenten nicht zu einem unsichtbaren Nebeneffekt. Der Exponent wird aus einer Liste ausgewählt, die am Typ oder an der Strategie hängt. Im aktuellen Quellcode umfassen die konkreten Exponentenlisten die Standardliste [16, 8, 4, 0], die dichte Liste [12, 8, 4, 0], die Gewichte für neuronale Netze [8, 6, 4, 0] und eine feine Liste [16, 14, 12, 10, 8, 6, 4, 0]. Das sind die aktuellen Quellwerte, und diese Unterscheidung ist wichtig, weil sich der Quellcode im Laufe der Zeit geändert hat; aktuelle Aussagen sollten dem aktuellen Code folgen, nicht veralteten Exponentenlisten.

Die Liste ist die Produktentscheidung. Eine Standardliste bietet ein paar breite Bänder. Eine dichte Liste ändert, wo die Bänder liegen. Die NN-Liste ist für gewichtsartige Daten geformt. Die feine Liste bietet mehr nahe beieinanderliegende Optionen. Nichts davon entfernt das Urteilsvermögen. Es verschiebt das Urteilsvermögen an einen Ort, an dem die Codeüberprüfung es sehen kann.

Das ist der Unterschied zwischen einer kontrollierten adaptiven Darstellung und einer allgemeinen Ausrede. Ein Festkommatyp sagt, dass jeder Wert hier diese Skala verwendet. AXIOM sagt, dass jeder Wert hier aus dieser deklarierten Menge von Skalen wählt. Das ist ein größerer Vertrag, kein fehlender. Der Punkt bewegt sich, aber er bewegt sich auf Schienen. Sehr niederländisch, wirklich. Selbst das Dezimalkomma hat eine Infrastruktur.

Festkomma ergibt ein einheitliches Raster. AXIOM ergibt eine deklarierte Menge von Exponentenbändern. Diese zusätzliche Wahl ist nur nützlich, weil sie explizit bleibt.

Es lohnt sich, präzise zu sein, was AXIOM nicht ist. Es ist keine exakte rationale Arithmetik. Es ist keine Lizenz, die Bereichsanalyse zu ignorieren. Es ist keine Benchmark-Behauptung. Es ist keine Garantie, dass die gewählte Exponentenliste zu Ihrer Arbeitslast passt, nur weil das Akronym energisch klang. Sie müssen die Werte, den Dynamikbereich, den akzeptablen Fehler, das Einsatzziel und die Wiedergabeanforderungen weiterhin verstehen. AXIOM macht diese Entscheidungen besser überprüfbar. Es lässt sie nicht verschwinden. Wenn überhaupt, macht es faules numerisches Denken schwerer zu verbergen, und genau dort beginnt normalerweise das Geschrei.

Arithmetik muss nach Hause kommen

Ein Zahlenformat ist leicht zu zeichnen und schwerer nutzbar zu machen. Der nutzbare Teil ist die Arithmetik. Addition und Subtraktion müssen mit Werten umgehen, die auf verschiedenen Exponentenbändern liegen können. Multiplikation und Division müssen breitere ganzzahlige Mantissenarbeit leisten, bevor das Ergebnis in die Zielform zurückgeführt wird. Nach der Operation muss der Wert wieder in eine verfügbare Exponentenwahl normalisiert werden. Dieser letzte Schritt ist wichtig, denn eine Darstellung, die nicht nach Hause kommen kann, ist nur ein Urlaub im Ausland mit besserem Branding.

AXIOM-Arithmetik hat daher einen Rhythmus. Gepackte Werte hereinholen. Nach Bedarf ausrichten oder erweitern. Die ganzzahlige Operation durchführen. Normalisieren. Das Ergebnis in der deklarierten Form speichern. Wenn es nicht passt, sollte das als Darstellungsproblem sichtbar sein, nicht stillschweigend der Stimmung der Maschine überlassen werden. Der Vertrag ist nützlich, weil er Kanten hat.

Das ist auch der Grund, warum Numerus darum herum wichtig ist. Der breitere Stack versucht nicht, Zahlenformate wie Briefmarken zu sammeln. Er will Arithmetik, die Wiedergabe, eingebettete Bereitstellung, Simulation, Modellkompression, Tests und Prüfpfade übersteht. AXIOM ist eine Familie in dieser Geschichte. Es behandelt ein bestimmtes Problem: Werte, deren nutzbare Skala sich ändert, deren Verhalten aber dennoch deterministisch sein muss.

Die Operation ist nicht abgeschlossen, wenn die Mantissen berührt wurden. Das Ergebnis muss in eine deklarierte AXIOM-Form zurückkehren, sonst hat die Darstellung aufgehört, ein Vertrag zu sein.

Das ist der langweilige Satz, der Teams später rettet: zurück in die Form normalisieren. Es klingt nach Implementierungsdetail, bis eine Wiedergabe abweicht, ein Schwellenwert umkippt oder ein komprimiertes Modell sich auf einem kleineren Ziel anders verhält. Dann wird es zu dem Satz, von dem sich alle wünschen, er stünde im Architekturdokument.

Warum AXIOM unter Numerus sitzt

Die öffentliche Numerus-Geschichte ist bewusst einfacher als der Quellbaum. Die meisten Leser möchten wissen, ob die numerische Schicht deterministische Arithmetik, Festkomma-Familien, Dezimalverhalten, no_std-Haltung, ganzzahlorientierte eingebettete Profile, Verifikation und zweimal dieselbe Antwort bieten kann. Sie brauchen nicht jeden internen Typ auf der ersten Seite. Das ist keine Geheimnistuerei. Das ist Barmherzigkeit.

Darunter ist die gemeinsame numerische Ebene breiter. Sie umfasst binäre, ternäre, native und Sub-Byte-Integer-Typen, Festkomma-Aliase, Gleitkomma-bezogene Typen für Kompatibilitätsarbeit und adaptives AXIOM. Die gemeinsamen Traits geben diesen Familien eine einheitliche Oberfläche. Numerus bündelt dann die Teile, die produktorientiert sein sollen: binäres und dezimales Festkomma, AXIOM, Integer, Operationen, DSL-Oberflächen und Verifikationshaltung. Diese Trennung ist gesund. Eine Grundlage kann breit sein, ohne dass die öffentliche Seite wie eine Speisekarte eines Restaurants wirkt, das das Vertrauen verloren hat.

AXIOM verdient einen eigenen Artikel, weil es nicht nur ein weiterer Eintrag in dieser Liste ist. Festkomma bedeutet, den Punkt an einer Stelle zu setzen. Dezimales Festkomma bedeutet exakte Stellen zur Basis zehn. Binäre und ternäre Formen bedeuten kompakte Pfade mit wenigen Bits. Bei AXIOM geht es darum, den Punkt zu einem kontrollierten Teil des Werts zu machen. Das verändert die Sichtweise auf Darstellung, Arithmetik, Tests und Bereitstellung.

Es verändert auch, wie öffentliche Behauptungen abgegrenzt werden sollten. Die AXIOM-Leistung gehört zu aktuellen Benchmarks auf aktuellem Code, nicht zu überlieferter Folklore. Der breitere Stack sollte nicht als null Gleitkomma-Operationen beschrieben werden, denn Konvertierungs- und Anzeigeoberflächen können diese Grenze überschreiten. Die sicherere und genauere Aussage ist, dass die zentrale feste und adaptive Arithmetik integer-orientiert und auf deterministisches Verhalten ausgelegt ist. Dieser Satz ist weniger auffällig. Gut. Auffällige Zahlenbehauptungen sind der Grund, warum Dashboards zu Entschuldigungsgeneratoren werden.

Mehrere Rechenpfade, eine Familie

Der konkrete gepackte Wert ist nur der Anfang. Der Quellcode enthält mehr als eine Möglichkeit, AXIOM zu nutzen, denn Arbeitslasten sind nicht höflich genug, um für immer in ein Layout zu passen. Es gibt den gepackten konkreten Pfad für Exponentenlisten zur Compilezeit. Es gibt Flex<S> für die Speicherung von Exponenten zur Laufzeit über Integer-Speichergrößen. Es gibt Tensor- und Blockformen, bei denen eine gemeinsame Exponentenstruktur nützlich sein kann. Es gibt stratifizierte Verarbeitung. Es gibt APoT, bei dem Werte als Summen vorzeichenbehafteter Zweierpotenzen dargestellt werden können, sodass Multiplikation zu Verschiebungen und Additionen werden kann. Es gibt Profiling- und gelernte Exponentenforschungscode darum herum.

Diese Vielfalt ist kein Grund für wilde Behauptungen. Sie ist ein Grund, bei der Arbeitslast vorsichtig zu sein. Ein Skalar-Wiedergabepfad, ein Batch-Quantisierungspfad, ein tensorartiger Pfad und ein APoT-Gewichtspfad haben unterschiedliche Belastungen. Speicherlayout, Exponentenwiederverwendung, Bereich, Normalisierung und Hardwareform sind alle wichtig. AXIOM bietet ein Vokabular für diese Entscheidungen. Es entbindet niemanden davon, sie zu treffen.

AXIOM ist eine Familie von Rechenpfaden. Gepackte Werte, flexible Exponentenspeicherung, Tensor- oder Blocklayouts und APoT-Verschiebungs-Additionspfade sind verschiedene Werkzeuge, nicht eine Marketingfolie.

Hier wird die Technik interessant. APoT ist nicht nur ein hübscher Kompressionstrick. Für geeignete Werte verwandelt es Multiplikation in ein Verschiebungs- und Additionsproblem. Tensor- und Blockpfade können eine Exponentenstruktur teilen, wenn eine Arbeitslast genug Form hat. Flex hält die Speicherung von Exponenten zur Laufzeit verfügbar, wenn Typlisten zu starr sind. Keines davon sollte ausgewählt werden, weil das Diagramm schön aussah. Die Arbeitslast wählt, oder der Fehlerbericht wird später wählen und dabei deutlich weniger charmant sein.

So prüfen Sie eine AXIOM-Entscheidung

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.

Das ist die öffentliche Geschichte, die es wert ist, erzählt zu werden. Dweve AXIOM bündelt Vorzeichen, Exponentenindex und Mantisse. Es wählt aus expliziten Exponentenlisten aus. Es verwendet ganzzahlig orientierte Arithmetik und normalisiert Ergebnisse zurück in deklarierte Formen. Es hat konkrete, flexible, Tensor-, Block-, stratifizierte, APoT- und Forschungs-Pfade im Codebestand. Es gehört unter Numerus, weil deterministische Arithmetik kein Nebenschauplatz ist. Es ist Teil davon, wie ernsthafte Systeme zweimal dieselbe Antwort liefern.

Der Punkt verschiebt sich. Die Verantwortung nicht. Das ist der nützliche Teil.