Muchas veces necesitamos precisión en los cálculos matemáticos que por alguna razón tenemos que hacer, particularmente si nos dedicamos a la programación. Existen una serie de bibliotecas de precisión «infinita», lo cual en términos reales quiere decir que los números no están supeditados al formato de números enteros o de punto flotante dentro de la computadora, sino que tienen tanta precisión como queramos, aunque el costo es un uso mucho mayor de la memoria y lo sabemos bien, esta es una de las partes más críticas de todo equipo de cómputo. Por ello, es interesante saber que hay una nueva herramienta, que es de la Universidad de Washington y que toma las expresiones que tengamos de punto flotante y las convierte en algo que permite hacer los mismos cálculos, pero con una mayor precisión.
La aritmética de punto flotante no es natural en los equipos de cómputo y tiene que manejarse a través de rutinas que nos hacen esta tarea de expresar nuestros números con decimales de forma tal que para nosotros, los seres humanos, nos parezcan naturales. Sin embargo, sabemos que este tipo de cálculos tiene siempre la posibilidad de un pequeño error debido al redondeo. Por ejemplo, si se quiere añadir un pequeño número a uno muy grande, el primero podría redondearse a cero y obtendríamos que A + 0 = A y no A + algo muy pequeño. Este tipo de problemas puede incluso modificar cómo funcionan algunos algoritmos o bien, perdernos en la lógica porque esperamos que un condicional se cumpla o no y a la hora de la verdad, precisamente por este redondeo, el programa no funciona como esperábamos.
Sin embargo, si uno ordena los valores de forma que los más pequeños estén juntos y después se sume al número más grande, se puede tener un error más pequeño que el que ocurre por redondeo. En la aritmética de punto flotante se puede frecuentemente mejorar la precisión de un cálculo reacomodando los términos de la expresión a calcular.
Hay una demostración en la web pero no es comparable con tener el programa completo, el cual se puede bajar e instalar.
Referencias: