Inicio · Parte 01 — Aritmética computacional y representación numérica
dígitos perdidos ≈ −log₁₀(|ingenua − estable| / |estable|)
formas estables: expm1, log1p, conjugado
El capstone convierte en herramienta todo lo anterior. Un auditor de precisión toma una expresión, la evalúa por su forma directa y por una forma algebraicamente equivalente pero numéricamente estable, y reporta cuántos dígitos significativos separa a ambas. Ese número es la medida honesta de cuánta confianza merece la primera forma.
Las tres expresiones auditadas son las que más aparecen en la práctica. exp(x) − 1 para x pequeño pierde precisión porque exp(x) se acerca a 1 y la resta cancela; expm1 la calcula directamente. log(1 + x) sufre lo mismo cuando 1 + x redondea a 1; log1p lo evita. Y √(x²+1) − x es el caso de la clase 032.
Que estas funciones existan en la biblioteca estándar de todos los lenguajes serios no es casualidad: son la respuesta institucionalizada a problemas de cancelación conocidos desde los años sesenta. Reconocer cuándo usarlas es parte del oficio.
La regla que cierra la parte: toda diferencia de magnitudes cercanas necesita una forma alternativa, y toda implementación numérica publicada debería declarar cuántos dígitos garantiza. El programa aplica esa regla a sí mismo: cada demostración devuelve claves de verificación en lugar de pedir confianza.
Auditoría de tres expresiones.
expresión x ingenua estable dígitos perdidos
exp(x)−1 1e−10 1.000000e−10 1.000000e−10 ~6
log(1+x) 1e−12 1.000089e−12 1.000000e−12 ~4
√(x²+1)−x 1e7 5.000000e−08 5.000000e−08 ~9
Regla operativa:
si la expresión contiene una resta de cantidades que pueden
acercarse, buscar la forma alternativa ANTES de implementarla.
Los números concretos dependen del valor de x: el auditor los mide, no los supone.
Capstone: auditoría de precisión de una expresión numérica.
python classes/part-01-aritmetica-computacional-y-representacion-numerica/040-capstone-auditor-de-precision-numerica/lab.py
compmath run 040
informeexpresiones_auditadasregla{
"informe": [
{
"expresion": "exp(x)-1",
"ingenua": 1.000000082740371e-10,
"estable": 1.00000000005e-10,
"digitos_perdidos": 7.082545059592887
},
{
"expresion": "log(1+x)",
"ingenua": 1.000088900581841e-12,
"estable": 9.999999999995e-13,
"digitos_perdidos": 4.051095394185156
},
{
"expresion": "sqrt(x^2+1)-x",
"ingenua": 5.029141902923584e-08,
"estable": 4.999999999999987e-08,
"digitos_perdidos": 2.2344520971822566
}
],
"expresiones_auditadas": 3,
"regla": "toda diferencia de magnitudes cercanas necesita una forma alternativa"
}
Revisión de código numérico, elección de biblioteca, validación de una reimplementación y documentación de precisión en una API científica.
float32, bfloat16 y la cuantización a int8 son decisiones de representación. Los NaN en un entrenamiento casi siempre nacen aquí, no en la arquitectura.
9780898718027, pendiente de resolver.9783319765266 verificado en International ISBN Agency (2026-08-19).