El punto que mueve AXIOM
El punto se movió, el contrato no
La aritmética de punto fijo es atractiva porque es honesta. Eliges una escala, dices dónde vive el punto y la máquina deja de fingir que cada número es un pequeño pronóstico del tiempo. Eso hace que la reproducción sea más tranquila, que los objetivos integrados sean más fáciles de razonar y que las auditorías dependan menos de frases como «casi exacto». Encantador. También incompleto.
Una escala fija puede ser demasiado tosca. Si eliges una escala que maneja valores muy pequeños, los valores más grandes se quedan sin espacio. Si eliges una escala que maneja valores más grandes, los valores pequeños pierden detalle útil. Puedes dividir la carga de trabajo en varios tipos, pero ahora el código tiene un tipo diferente de desorden. Enhorabuena, el punto decimal ahora es un problema de personal.
AXIOM existe para los casos en los que el punto necesita moverse sin convertir la capa numérica de nuevo en una sopa de coma flotante. En el código de Dweve es una familia de punto variable adaptativo: cada valor concreto lleva un signo, un índice de lista de exponentes y una mantisa en una representación empaquetada de 32 bits. El exponente no es un estado de ánimo ambiental del hardware. Se selecciona de una lista explícita. La mantisa es una carga útil entera. El valor representado es signo por mantisa por dos elevado al exponente seleccionado negativo. Esa frase no es bonita, pero es todo el truco.
La parte importante no es que el punto se mueva. La coma flotante ya mueve el punto. La parte importante es que AXIOM lo mueve a través de una lista declarada que puede revisarse, probarse, especializarse y mantenerse determinista. El código no le pide a la plataforma que improvise una personalidad numérica. Le da al valor un contrato compacto y hace que la aritmética vuelva a ese contrato después de cada operación.
En el código fuente, la forma concreta es Axiom<M, E>. El ancho de la mantisa debe caber en la representación, con alias prácticos como Adp4, Adp8, Adp16, Adp23, AdpNN4 y AdpNN8. Esos nombres no son decoración. Te dicen cuánta carga útil y qué perfil de exponente se supone que debe usar el valor. Un valor con una lista de exponentes con forma de NN no es la misma promesa que un valor con una lista general más amplia. Tratarlos como iguales porque ambos parecen numéricos es así como los códigos serios empiezan a acumular folklore.
El punto variable no son vibraciones
La frase punto variable adaptativo puede sonar como si alguien hubiera renombrado la coma flotante para pasar una reunión de compras. Eso no es lo que está pasando. AXIOM no convierte el exponente en un efecto secundario invisible. El exponente se selecciona de una lista adjunta al tipo o a la estrategia. En el código fuente actual, las listas de exponentes concretas incluyen la estándar [16, 8, 4, 0], la densa [12, 8, 4, 0], la de pesos de redes neuronales [8, 6, 4, 0] y una lista fina [16, 14, 12, 10, 8, 6, 4, 0]. Esos son los valores actuales del código fuente, y esa distinción importa porque el código ha cambiado con el tiempo; las afirmaciones actuales deben seguir el código actual, no listas de exponentes obsoletas.
La lista es la decisión de producto. Una lista estándar da unas pocas bandas amplias. Una lista densa cambia dónde se sitúan las bandas. La lista NN está formada para datos similares a pesos. La lista fina ofrece más opciones cercanas. Nada de eso elimina el criterio. Mueve el criterio a un lugar donde la revisión del código pueda verlo.
Esta es la diferencia entre una representación adaptativa controlada y una excusa general. Un tipo de punto fijo dice que todo valor aquí usa esta escala. AXIOM dice que todo valor aquí elige de este conjunto declarado de escalas. Eso es un contrato más amplio, no uno ausente. El punto se mueve, pero se mueve sobre raíles. Muy holandés, la verdad. Hasta el punto decimal tiene infraestructura.
Vale la pena ser precisos sobre lo que AXIOM no es. No es aritmética racional exacta. No es una licencia para ignorar el análisis de rango. No es una afirmación de rendimiento. No es una garantía de que la lista de exponentes elegida se ajusta a tu carga de trabajo porque el acrónimo parecía enérgico. Aún necesitas entender los valores, el rango dinámico, el error aceptable, el objetivo de despliegue y los requisitos de reproducción. AXIOM hace que esas elecciones sean más inspeccionables. No hace que desaparezcan. Si acaso, hace que el pensamiento numérico perezoso sea más difícil de ocultar, que es donde suele empezar el griterío.
La aritmética tiene que volver a casa
Un formato numérico es fácil de dibujar y más difícil de hacer útil. La parte útil es la aritmética. La suma y la resta tienen que lidiar con valores que pueden estar en diferentes bandas de exponente. La multiplicación y la división tienen que hacer un trabajo más amplio de mantisa entera antes de devolver el resultado a la forma objetivo. Después de la operación, el valor tiene que normalizarse de nuevo a una opción de exponente disponible. Ese último paso importa porque una representación que no puede volver a casa es solo unas vacaciones en el extranjero con mejor marca.
La aritmética de AXIOM tiene por tanto un ritmo. Trae valores empaquetados. Alinea o amplía según sea necesario. Realiza la operación orientada a enteros. Normaliza. Guarda el resultado de nuevo en la forma declarada. Si no cabe, eso debería ser visible como un problema de representación, no delegado silenciosamente al humor de la máquina. El contrato es útil porque tiene bordes.
Esta es la misma razón por la que Numerus importa a su alrededor. La pila más amplia no intenta coleccionar formatos numéricos como sellos. Quiere aritmética que pueda sobrevivir a la reproducción, el despliegue embebido, la simulación, la compresión de modelos, las pruebas y las pistas de auditoría. AXIOM es una familia dentro de esa historia. Maneja un problema particular: valores cuya escala útil cambia, pero cuyo comportamiento aún tiene que ser determinista.
Esa es la frase aburrida que salva a los equipos más tarde: normaliza de nuevo a la forma. Suena a detalle de implementación hasta que una reproducción difiere, un umbral se invierte o un modelo comprimido se comporta de manera diferente en un objetivo más pequeño. Entonces se convierte en la frase que todos desearían que hubiera estado en el documento de arquitectura.
Por qué AXIOM se sitúa bajo Numerus
La historia pública de Numerus es deliberadamente más simple que el árbol de fuentes. La mayoría de los lectores quieren saber si la capa numérica puede ofrecer aritmética determinista, familias de punto fijo, comportamiento decimal, postura no_std, perfiles embebidos orientados a enteros, verificación y la misma respuesta dos veces. No necesitan cada tipo interno en la primera página. Eso no es secretismo. Es misericordia.
Debajo, la capa numérica común es más amplia. Incluye tipos de enteros binarios, ternarios, nativos y sub-byte, alias de punto fijo, tipos relacionados con float para trabajos de compatibilidad y AXIOM adaptativo. Los rasgos compartidos dan a esas familias una superficie común. Numerus envuelve entonces las piezas que deberían estar orientadas al producto: punto fijo binario y decimal, AXIOM, enteros, operaciones, superficies DSL y postura de verificación. Esta separación es saludable. Una base puede ser amplia sin que la página pública parezca el menú de un restaurante que ha perdido la confianza.
AXIOM merece su propio artículo porque no es solo otra entrada en esa lista. El punto fijo consiste en colocar el punto en un solo lugar. El punto fijo decimal trata de posiciones decimales exactas en base diez. Las formas binarias y ternarias se centran en vías compactas de pocos bits. AXIOM trata de hacer del punto una parte controlada del valor. Eso cambia la forma de pensar sobre la representación, la aritmética, las pruebas y el despliegue.
También cambia cómo deben acotarse las afirmaciones públicas. El rendimiento de AXIOM pertenece a los benchmarks actuales sobre el código actual, no a un folclore heredado. La pila más amplia no debería describirse como cero operaciones de coma flotante, porque las superficies de conversión y visualización pueden cruzar ese límite. La afirmación más segura y precisa es que la aritmética fija y adaptativa del núcleo está orientada a enteros y diseñada para un comportamiento determinista. Esa frase es menos llamativa. Bien. Las afirmaciones numéricas llamativas son la forma en que los paneles se convierten en generadores de disculpas.
Varias vías de cómputo, una familia
El valor empaquetado concreto es solo el principio. El código fuente contiene más de una forma de usar AXIOM porque las cargas de trabajo no son lo bastante educadas como para ajustarse a un solo diseño para siempre. Está la vía concreta empaquetada para listas de exponentes en tiempo de compilación. Está Flex<S> para el almacenamiento de exponentes en tiempo de ejecución sobre tamaños de almacenamiento de enteros. Hay formas de tensor y de bloque donde una estructura de exponentes compartida puede ser útil. Hay procesamiento estratificado. Está APoT, donde los valores pueden representarse como sumas de potencias de dos con signo, de modo que la multiplicación puede convertirse en desplazamientos y sumas. Hay código de investigación de perfiles y exponentes aprendidos a su alrededor.
Esa amplitud no es motivo para hacer afirmaciones exageradas. Es un motivo para ser cuidadoso con la carga de trabajo. Una vía de reproducción escalar, una vía de cuantización por lotes, una vía similar a un tensor y una vía de pesos APoT tienen presiones diferentes. La disposición de la memoria, la reutilización de exponentes, el rango, la normalización y la forma del hardware importan. AXIOM ofrece un vocabulario para esas decisiones. No exime a nadie de tomarlas.
Aquí es donde la ingeniería se vuelve interesante. APoT no es solo un truco de compresión simpático. Para valores adecuados, convierte la multiplicación en un problema de desplazamiento y suma. Las vías de tensor y de bloque pueden compartir estructura de exponentes cuando una carga de trabajo tiene suficiente forma. Flex mantiene disponible el almacenamiento de exponentes en tiempo de ejecución cuando las listas a nivel de tipo son demasiado rígidas. Ninguna de estas opciones debería elegirse porque el diagrama parecía bonito. La carga de trabajo elige, o el informe de errores elegirá más tarde y será mucho menos encantador al respecto.
Cómo revisar una elección de AXIOM
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.
Esa es la historia pública que merece contarse. Los paquetes Dweve AXIOM agrupan signo, índice de exponente y mantisa. Seleccionan de listas de exponentes explícitas. Usan aritmética orientada a enteros y normalizan los resultados de vuelta a las formas declaradas. Tiene rutas concretas, flexibles, de tensor, de bloque, estratificadas, APoT y de investigación en el código. Pertenece a Numerus porque la aritmética determinista no es una misión secundaria. Es parte de cómo los sistemas serios obtienen la misma respuesta dos veces.
El punto se mueve. La responsabilidad no. Eso es lo útil.