La mitigación de errores de coma flotante consiste en minimizar las desviaciones causadas por el hecho de que un número real no puede, en general, representarse con precisión en un espacio fijo. Por definición, el error de coma flotante no puede eliminarse y, en el mejor de los casos, solo puede gestionarse.

Huberto M. Sierra señaló en su patente de 1956 ""Floating Decimal Point Arithmetic Control Means for Calculator"" (Medios de control aritmético de coma decimal flotante para calculadora):

Por lo tanto, en ciertas condiciones, la mayor parte de los dígitos de datos significativos pueden exceder la capacidad de los registros. En consecuencia, el resultado obtenido puede tener poco sentido, si no ser totalmente erróneo.

La Z1, desarrollada por Konrad Zuse en 1936, fue la primera computadora con coma flotante y, por lo tanto, era susceptible a errores de este tipo. Sin embargo, las primeras computadoras, con tiempos de operación medidos en milisegundos, no podían resolver problemas grandes y complejos y, por lo tanto, rara vez sufrían errores de coma flotante. Hoy en día, sin embargo, con el rendimiento de sistemas de supercomputadoras medido en operaciones de coma flotante por segundo, el error de coma flotante es una preocupación importante para quienes resuelven problemas computacionales.

Las siguientes secciones describen las ventajas y desventajas de diversos métodos para mitigar el error de coma flotante.

Análisis de errores numéricos Aunque no es el objetivo principal del análisis numérico, el análisis de errores numéricos es un campo dedicado al estudio y la minimización del error de redondeo de coma flotante.

Aritmética de Monte Carlo El análisis de errores mediante aritmética de Monte Carlo se realiza insertando repetidamente pequeños errores en los valores de los datos de un algoritmo y determinando el efecto relativo en los resultados.

Extensión de precisión La extensión de precisión consiste en utilizar representaciones de valores reales más amplias que la considerada inicialmente. El estándar IEEE 754 define la precisión como el número de dígitos disponibles para representar números reales. Un lenguaje de programación puede incluir precisión simple (32 bits), precisión doble (64 bits) y precisión cuádruple (128 bits). Si bien la extensión de la precisión reduce la probabilidad o la importancia de los errores, no es posible conocer a priori la exactitud real de los posibles resultados.

Aritmética de longitud variable La aritmética de longitud variable representa los números como una cadena de dígitos de longitud variable, limitada únicamente por la memoria disponible. Las operaciones aritméticas de longitud variable son considerablemente más lentas que las instrucciones de coma flotante de formato de longitud fija. Cuando el alto rendimiento no es un requisito, pero sí la alta precisión, la aritmética de longitud variable puede resultar útil, aunque también puede desconocerse la exactitud real del resultado.

Uso del término de error de una operación de coma flotante El algoritmo de coma flotante conocido como TwoSum o 2Sum, desarrollado por Knuth y Møller, y su versión más simple, aunque restringida, FastTwoSum o Fast2Sum (3 operaciones en lugar de 6), permiten obtener el término de error (exacto) de una suma de coma flotante redondeada al entero más cercano. También se puede obtener el término de error (exacto) de una multiplicación de coma flotante redondeada al entero más cercano en 2 operaciones con un algoritmo de multiplicación y suma fusionadas (FMA), o en 17 operaciones si el FMA no está disponible (con un algoritmo de Dekker). Estos términos de error se pueden utilizar en algoritmos para mejorar la precisión del resultado final, por ejemplo, con algoritmos de expansión de punto flotante o de compensación.

Las operaciones que proporcionan el resultado de una suma o multiplicación de coma flotante redondeado al número entero más cercano con su término de error (pero que difieren ligeramente de los algoritmos mencionados anteriormente) han sido estandarizadas y recomendadas en la norma IEEE 754-2019.

Elección de una base diferente Cambiar de base, en particular del sistema binario al decimal, puede ayudar a reducir el error y controlar mejor el redondeo en algunas aplicaciones, como las que se utilizan en finanzas.

Aritmética de intervalos La aritmética de intervalos es una técnica matemática que se utiliza para establecer límites al error de redondeo y al error de medición en cálculo computacional. Los valores son intervalos, que pueden representarse de diversas maneras, como:

inf-sup: un límite inferior y un límite superior para el valor verdadero

mid-rad: una aproximación y un límite de error (denominados punto medio y radio del intervalo)

triplex: una aproximación, un límite inferior y un límite superior para el error

<blockquote> En lugar de usar un único número de coma flotante como aproximación del valor de una variable real en el modelo matemático en estudio, la aritmética de intervalos reconoce la precisión limitada al asociar a la variable un conjunto de números reales como posibles valores. Para facilitar el almacenamiento y el cálculo, estos conjuntos se restringen a intervalos.``</blockquote>

La evaluación de expresiones aritméticas de intervalos puede proporcionar un amplio rango de valores, y puede sobreestimar seriamente los límites de error reales.

Números universales de Gustafson Los Unums (números universales) son una extensión de la aritmética de longitud variable propuesta por John Gustafson. Tienen campos de longitud variable el exponente, y la información del error se transporta en un solo bit, el ubit, que representa un posible error en el bit menos significativo de la mantisa (unidad en último lugar o ULP).

La eficacia de los unums'' fue cuestionada por William Kahan.

Coma flotante acotada La coma flotante acotada es un método propuesto y patentado por Alan Jorgensen. Su estructura de datos incluye la interpretación estándar IEEE 754, así como información sobre el error entre el verdadero valor real representado y el valor almacenado por la representación de coma flotante.

El sistema de la coma flotante acotada ha sido criticada por derivar del trabajo de Gustafson sobre unums y la aritmética de intervalos.

Referencias

Categoría:Aritmética computacional Categoría:Error