Python calcula con geometría: así es CasNum

Fuentes: GitHub - 0x0mer/CasNum

CasNum es una biblioteca de Python única que implementa aritmética de precisión arbitraria utilizando construcciones de compás y regla, una técnica geométrica ancestral. En lugar de depender de operaciones aritméticas tradicionales, CasNum representa los números como puntos en un plano y realiza cálculos como construcciones geométricas. Esto significa que la suma, la multiplicación, la división e incluso las operaciones lógicas se realizan a través de la manipulación de líneas, círculos y sus intersecciones, siguiendo estrictamente las reglas de la geometría euclidiana.

¿Cómo funciona? La biblioteca comienza con dos puntos básicos: el origen y una unidad. A partir de ahí, se aplican cinco construcciones fundamentales: trazar líneas, dibujar círculos, encontrar intersecciones de líneas, intersecciones de líneas y círculos, e intersecciones de círculos. Una operación como la suma se implementa encontrando el punto medio entre dos puntos y duplicándolo, mientras que la multiplicación y la división se basan en principios de semejanza de triángulos. Las operaciones lógicas son más complejas y no se ajustan tan limpiamente a un marco algebraico.

Casos de uso: El proyecto ha demostrado su utilidad en dos ejemplos concretos: un programa RSA (criptografía) y la integración en un emulador de Game Boy. La integración con PyBoy es particularmente notable, ya que permite que el Game Boy ejecute operaciones aritméticas y lógicas exclusivamente a través de construcciones de compás y regla. Esto resulta en un rendimiento significativamente más lento que el de un Game Boy normal, pero demuestra la viabilidad del enfoque.

Consideraciones: La principal limitación es el rendimiento. Los cálculos son extremadamente lentos en comparación con la aritmética tradicional, ya que cada operación implica múltiples construcciones geométricas. La biblioteca utiliza lru_cache de Python para almacenar en caché los resultados de los cálculos costosos, lo que puede mejorar el rendimiento en ejecuciones posteriores, pero también puede consumir mucha memoria. Además, la visualización de las construcciones geométricas puede ser intensiva en recursos, especialmente en ejemplos complejos como el programa RSA. Aunque no se puede resolver el problema de 'cuadrar el círculo' (una construcción geométrica imposible), CasNum ofrece una perspectiva fascinante sobre cómo se podrían realizar los cálculos utilizando solo herramientas geométricas básicas. La biblioteca requiere dependencias como sympy y pyglet (para visualización). Finalmente, el proyecto es una exploración conceptual más que una herramienta de cálculo práctica, destinada a aquellos que aprecian la elegancia y la complejidad inherentes a la aritmética geométrica.