La misma fórmula de bono (cupón 100, nominal 1000, y=4.3%, 12 años) implementada en cuatro plataformas float64 y en nuestra VM. Medimos bits (no decimales), divergencia y velocidad. Publicamos también lo que no nos favorece — la credibilidad es el producto.
Windows x64 · Node 24.14 · Python 3.12 · Rust 1.95 · 2026-09-10 · scripts reproducibles más abajo.
| Plataforma | P (bits) | ¿Igual al baseline? | ns/ejec |
|---|---|---|---|
| Node/V8, suma ascendente — baseline | 4097d707119bcbf5 | — | 175 |
| Node/V8, suma descendente | 4097d707119bcbf4 | NO — 1 ULP | 148 |
| Python/CPython | 4097d707119bcbf5 | sí | 1 605 |
| Rust nativo (powf) | 4097d707119bcbf5 | sí | 126 |
| Rust nativo (powi) | 4097d707119bcbf5 | sí | 127 |
| VMS7 — esta máquina (takum32, u32) | 5b7d7072 | clase takum | 1 339 251 |
| VMS7 — el edge de Cloudflare (otra máquina, otra infra) | 5b7d7072 | IDÉNTICO a local ✓ (steps 24195 en ambos) | — |
Decimales: float64 → 1525.7569031089054 · VMS7 → 1525.7569580078125.
1. Las tres plataformas float64 coincidieron en bits — los libm modernos convergen en pow. El mito del "float siempre diverge entre lenguajes" no se materializó aquí, y no lo vamos a fingir.
2. El orden de la suma sí dividió 1 ULP (asc vs desc: …bf5 vs …bf4). Ese es el peligro real: vectorización, paralelización o un refactor que reordene la acumulación cambia tu resultado en silencio — y un auditor no puede explicarlo después.
3. La VM dio bits idénticos en dos máquinas distintas: esta PC y el edge de Cloudflare (otra infraestructura completa). Mismo decimal, mismos steps — el receipt es la prueba, no la promesa.
4. El coste: VMS7 es ~800–7 600× más lenta que float64 nativo en esta carga. Absoluto: 1.34 ms por precio. Compras receipts y salida bit-estable entre máquinas con milisegundos que tu caso de uso no notará.
5. Honestidad de clases: takum32 tiene 20 bits de fracción (float64: 52). No competimos en precisión con float64 — competimos en determinismo verificable, receipts y rango acotado. Para precios en céntimos, la precisión sobra.
Node (el flag desc activa la acumulación descendente — la fila divergente):
node bond_node.mjs node bond_node.mjs desc python bond_python.py rustc -O bond_rust.rs -o bond_rust && ./bond_rust powf node vms7_local.mjs
Los scripts completos se publican con el repositorio (próxima apertura pública); la fórmula, los parámetros y el protocolo están íntegramente en esta página — cualquiera puede reimplementarlos. Y el precio EN PRODUCCIÓN con un solo comando: /verify — steps 24195, el mismo receipt que la fila del edge de arriba.