Por @Alvy

Calculadora de Android

Está circulando mucho esta historia de Chad Nauseam que se publicó originalmente como hilo de Twitter titulada ¿Una app de una calculadora? Cualquiera puede hacer eso. Es un relato sumamente entretenido acerca de cómo Google encargó el desarrollo de la Calculadora original de Android a Hans-J. Boehm, un ingeniero que se obsesionó con el tema y con crear la calculadora perfecta.

El problema a resolver es que incluso crear una sencilla calculadora que funcione bien, bien y se vea de forma perfecta (y no muestre algo como 0,000000) no es tan fácil como parece. La conversión entre binario (coma flotante) y decimal complica las cosas y luego ciertos números, ya sea por grandes, pequeños o precisos, aún más.

Y es que no todo es como repartir la cuenta del restaurante entre un pequeño número de comensales. Expresiones como (10^100) + 1 − (10^100) deberían dar 1, no 0 como muestran algunas calculadoras. La cosa se complica cuando aparecen fracciones y números irracionales o transcendentales.

Boehm comenzó empleando bignums (números enteros sin límite de tamaño), luego pasó a fracciones de precisión arbitraria y después a números algebraicos, capaces de representar raíces cuadradas. Pero eso dejaba fuera a números transcendentales como π.

El caso es que poco a poco acabó construyendo un motor de evaluación aritmética y usando una representación híbrida: números expresados como el producto de un número racional por un número real, usando la llamada aritmética real recursiva (RRA) solo cuando era necesario. Para optimizar la velocidad añadieron una representación simbólica para valores como π, e y similares, dado que la complejidad de esos cálculos hacían la app demasiado lenta.

Esta historia está repleta de detalles matemáticos y técnicas aplicadas al desarrollo de software, en una especie de madriguera de conejo por la que se va profundizando cada vez más y más y que no parece tener fin. Aunque lo tuvo. El resultado es la calculadora actual, que puede dar respuestas exactas y «visualmente agradables» para los usuarios y al mismo tiempo aproximadas cuando no hay alternativas.

Relacionado:

Compartir en Flipboard Publicar