La mitigación de errores de coma flotante es la minimización de errores causados por el hecho de que los números reales, en general, no pueden representarse con precisión en un espacio fijo. Por definición, el error de punto flotante no se puede eliminar y, en el mejor de los casos, solo se puede gestionar.
HM Sierra señaló en su patente de 1956 "Medios de control aritmético de coma decimal flotante para calculadora":
Por lo tanto, en algunas condiciones, la mayor parte de los dígitos de datos significativos pueden estar más allá de la capacidad de los registros. Por tanto, el resultado obtenido puede tener poco significado si no totalmente erróneo.
El Z1 , desarrollado por Zuse en 1936, fue la primera computadora con aritmética de punto flotante y, por lo tanto, fue susceptible al error de punto flotante. Sin embargo, las primeras computadoras, con tiempos de operación medidos en milisegundos, eran incapaces de resolver problemas grandes y complejos [1] y, por lo tanto, rara vez estaban plagados de errores de punto flotante. Hoy, sin embargo, con el rendimiento del sistema de supercomputadoras medido en petaflops, (10 15) operaciones de punto flotante por segundo, el error de punto flotante es una preocupación importante para los solucionadores de problemas computacionales. Además, hay dos tipos de error de punto flotante, cancelación y redondeo. La cancelación se produce al restar dos números similares y el redondeo se produce cuando los bits significativos no se pueden guardar y se redondean o truncan. El error de cancelación es exponencial en relación con el error de redondeo.
Las siguientes secciones describen las fortalezas y debilidades de varios medios para mitigar el error de punto flotante.
Análisis de errores numéricos
Aunque no es el enfoque principal del análisis numérico , [2] [3] : 5 existe un análisis de error numérico para el análisis y la minimización del error de redondeo de punto flotante. El análisis de errores numéricos generalmente no tiene en cuenta el error de cancelación. [3] : 5
Aritmética de Montecarlo
El análisis de errores mediante la aritmética de Monte Carlo se logra inyectando 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 la precisión es el uso de representaciones de valores reales más grandes 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 hace que los efectos del error sean menos probables o menos importantes, aún se desconoce la verdadera precisión de los 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 no se requiere un alto rendimiento, pero sí una alta precisión, la aritmética de longitud variable puede resultar útil, aunque es posible que no se conozca la precisión real del resultado.
Uso del término de error de una operación de punto flotante
El algoritmo de punto flotante conocido como TwoSum [4] o 2Sum , debido a Knuth y Møller, y su versión más simple pero restringida FastTwoSum o Fast2Sum (3 operaciones en lugar de 6), permiten obtener el término de error (exacto) de un suma de punto flotante redondeado al más cercano. También se puede obtener el término de error (exacto) de una multiplicación de punto flotante redondeado al más cercano en 2 operaciones con un FMA , o 17 operaciones si el FMA no está disponible (con un algoritmo debido a Dekker). Estos términos de error se pueden utilizar en algoritmos para mejorar la precisión del resultado final, por ejemplo, con expansiones de coma flotante o algoritmos compensados .
Las operaciones que dan el resultado de una suma o multiplicación de punto flotante redondeado al más cercano con su término de error (pero que difieren ligeramente de los algoritmos mencionados anteriormente) se han estandarizado y recomendado en el estándar IEEE 754-2019.
Elección de una base diferente
Cambiar la base, en particular de binario a decimal, puede ayudar a reducir el error y controlar mejor el redondeo en algunas aplicaciones, como las aplicaciones financieras .
Aritmética de intervalos
La aritmética de intervalos es un algoritmo para limitar los errores de redondeo y medición. El algoritmo da como resultado dos números de punto flotante que representan los límites mínimo y máximo para el valor real representado.
"En lugar de utilizar un único número de punto flotante como aproximación del valor de una variable real en el modelo matemático que se investiga, la aritmética de intervalos reconoce una precisión limitada al asociar con la variable un conjunto de valores reales como posibles valores. Para facilitar el almacenamiento y el cálculo , estos conjuntos están restringidos a intervalos ". [5]
La evaluación de la expresión aritmética de intervalo puede proporcionar una amplia gama de valores, [5] y puede sobrestimar seriamente los límites de error verdaderos. [6] : 8
Unums de Gustafson
Unums ("números universales") son una extensión de la aritmética de longitud variable propuesta por John Gustafson . [7] Los unums tienen campos de longitud variable para las longitudes de exponente y significante y la información de error se transporta en un solo bit, el ubit, que representa un posible error en el bit menos significativo del significando ( ULP ). [7] : 4
William Kahan cuestiona la eficacia de los unums . [6]
Referencias
- ^ "Historia del desarrollo informático y generación de computadoras" . WikiEducator . Septiembre de 2014 . Consultado el 17 de febrero de 2018 .
- ^ Trefethen, Lloyd N. (1992). "La definición de análisis numérico" (PDF) . SIAM . Consultado el 16 de febrero de 2018 .
- ^ a b Higham, Nicholas John (2002). Precisión y estabilidad de algoritmos numéricos (2 ed.). Sociedad de Matemática Industrial y Aplicada (SIAM). ISBN 978-0-89871-521-7.
- ^ https://people.eecs.berkeley.edu/~jrs/papers/robustr.pdf
- ^ a b Hickey, T .; Ju, Q .; van Emden, MH (septiembre de 2001). "Aritmética de intervalos: de los principios a la implementación" (PDF) . Revista de la ACM . 48 (5): 1038–1068. CiteSeerX 10.1.1.43.8001 . doi : 10.1145 / 502102.502106 . Consultado el 16 de febrero de 2018 .
- ^ a b Kahan, William (julio de 2016). "Una crítica de John L. Gustafson EL FINAL DEL ERROR - Computación Unum y su Enfoque radical de la computación con números reales" (PDF) . Consultado el 17 de febrero de 2018 .
- ^ a b Gustafson, John Leroy (4 de febrero de 2016) [5 de febrero de 2015]. El fin del error: Unum Computing . Chapman & Hall / CRC Computational Science . 24 (2ª impresión corregida, 1ª ed.). Prensa CRC . ISBN 978-1-4822-3986-7. Consultado el 30 de mayo de 2016 . [1] [2]