Constructive Calculator: una calculadora para iPhone que no redondea

Fuentes: No Rounding

Constructive Calculator es una calculadora para iPhone, actualmente en beta abierta en TestFlight, que realiza operaciones con números reales constructivos: en lugar de almacenar aproximaciones de ancho fijo, guarda funciones que producen dígitos exactos a cualquier precisión solicitada. Esto permite obtener resultados como la constante de Ramanujan, que durante doce decimales aparenta ser el entero 262.537.412.640.768.744 antes de divergir, o comprobar que exp(100) + 42 − exp(100) es exactamente 42, algo que en aritmética de doble precisión IEEE 754 devuelve 0 porque 42 queda fuera del rango representable.

El proyecto es un porte a Swift de la biblioteca com.hp.creals escrita por Hans Boehm en los años ochenta y noventa, la misma que alimenta la calculadora de Android. El autor delegó la traducción línea por línea del código a Opus 4.8 y dirigió la adaptación al ecosistema Apple, incluyendo la reescritura del modelo de concurrencia, la firma en TestFlight mediante GitHub Actions y la interfaz en SwiftUI con desplazamiento para obtener más dígitos. Un segundo modelo, Fable 5, realizó una revisión con contexto limpio y encontró errores de concurrencia, un problema de seguridad de memoria en la caché memoizada de π y un bloqueo de la interfaz al calcular factoriales grandes.

La aplicación incorpora la función de error y las distribuciones normales pnorm y qnorm implementadas desde cero, ya que no formaban parte de la biblioteca original. La principal limitación es que la igualdad entre números reales constructivos es indecidible, por lo que resultados como cos(π/3) = ½ se certifican como exactos, mientras que operaciones algebraicamente nulas, como la suma y resta descritas, devuelven el valor correcto pero se muestran como aproximaciones que pueden extenderse indefinidamente.