stringtranslate.com

Mitigación de errores de punto flotante

La mitigación de errores de punto flotante consiste en minimizar los errores causados ​​por el hecho de que, en general, los números reales no pueden representarse con precisión en un espacio fijo. Por definición, los errores de punto flotante no pueden eliminarse y, en el mejor de los casos, solo pueden gestionarse.

Huberto M. Sierra señaló en su patente de 1956 "Medios de control aritmético de punto decimal flotante para calculadora": [1]

Por lo tanto, en determinadas circunstancias, la mayor parte de los dígitos de datos significativos pueden estar fuera de la capacidad de los registros, por lo que el resultado obtenido puede tener poco significado o incluso ser totalmente erróneo.

El Z1 , desarrollado por Konrad Zuse en 1936, fue el primer ordenador con aritmética de punto flotante y, por tanto, susceptible a errores de punto flotante. Sin embargo, los primeros ordenadores, con tiempos de operación medidos en milisegundos, eran incapaces de resolver problemas grandes y complejos [2] y, por tanto, rara vez se veían afectados por errores de punto flotante. Sin embargo, hoy en día, con el rendimiento de los sistemas de supercomputadoras medido en petaflops , los errores de punto flotante son una preocupación importante para los solucionadores de problemas computacionales.

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 foco principal del análisis numérico , [3] [4] : 5  el análisis de error numérico existe para el análisis y minimización del error de redondeo de punto flotante.

Aritmética de Monte Carlo

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

Ampliación de precisión

La extensión de la precisión es el uso de representaciones de valores reales más grandes que las consideradas inicialmente. El estándar IEEE 754 define la precisión como la cantidad 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 punto flotante con 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 [5] 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 una 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 una multiplicación-suma fusionada (FMA), o 17 operaciones si la 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 punto flotante o algoritmos compensados.

Las operaciones que dan el resultado de una suma o multiplicación de punto flotante redondeado al término de error más cercano (pero que difieren ligeramente de los algoritmos mencionados anteriormente) se han estandarizado y recomendado en el estándar IEEE 754-2019.

Elección de un radio diferente

Cambiar el radio , en particular de binario a decimal, puede ayudar a reducir el error y controlar mejor el redondeo en algunas aplicaciones, como las financieras .

Aritmética de intervalos

La aritmética de intervalos es una técnica matemática que se utiliza para poner límites a los errores de redondeo y de medición en los cálculos matemáticos . Los valores son intervalos, que pueden representarse de varias maneras, como: [6]

"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 en estudio, la aritmética de intervalos reconoce una precisión limitada al asociar con la variable un conjunto de números reales como valores posibles. Para facilitar el almacenamiento y el cálculo, estos conjuntos se limitan a intervalos". [7]

La evaluación de expresiones aritméticas de intervalos puede proporcionar un amplio rango de valores, [7] y puede sobrestimar seriamente los límites de error reales. [8] : 8 

Los unums de Gustafson

Los unums ("Números Universales") son una extensión de la aritmética de longitud variable propuesta por John Gustafson . [9] Los unums tienen campos de longitud variable para las longitudes del exponente y la mantisa y la información de error se transporta en un solo bit, el ubit, que representa un posible error en el bit menos significativo de la mantisa ( ULP ). [9] : 4 

La eficacia de los unums es cuestionada por William Kahan . [8]

Punto flotante acotado

El punto flotante acotado es un método propuesto y patentado por Alan Jorgensen. [10] La estructura de datos incluye la estructura de datos estándar IEEE 754 y su interpretación, así como información sobre el error entre el valor real verdadero representado y el valor almacenado por la representación de punto flotante. [11]

El punto flotante acotado ha sido criticado por ser un derivado del trabajo de Gustafson sobre unums y aritmética de intervalos. [10] [12]

Referencias

  1. ^ "Medios de control aritmético de punto decimal flotante para calculadora: Patente de Estados Unidos 3037701". FreePatentsOnline.com . 1962-06-05 . Consultado el 2022-01-21 .
  2. ^ "Historia del desarrollo de las computadoras y generación de computadoras". WikiEducator . Septiembre de 2014 . Consultado el 17 de febrero de 2018 .
  3. ^ Trefethen, Lloyd N. (1992). "La definición del análisis numérico" (PDF) . SIAM . Consultado el 16 de febrero de 2018 .
  4. ^ Higham, Nicholas John (2002). Precisión y estabilidad de algoritmos numéricos (2.ª edición). Sociedad de Matemáticas Industriales y Aplicadas (SIAM). ISBN 978-0-89871-521-7.
  5. ^ Richard Shewchuk, Jonathan (octubre de 1997). "Aritmética de punto flotante de precisión adaptativa y predicados geométricos rápidos y robustos" (PDF) . Geometría discreta y computacional . 18 (3): 305–363. doi :10.1007/PL00009321. S2CID  189937041 . Consultado el 14 de noviembre de 2022 .
  6. ^ "Estándar IEEE para aritmética de intervalos". IEEE STD 1788-2015 : 1–97. 30 de junio de 2015. doi :10.1109/IEEESTD.2015.7140721. ISBN 978-0-7381-9720-3.
  7. ^ ab 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. S2CID  15105694 . Consultado el 16 de febrero de 2018 . 
  8. ^ ab Kahan, William (julio de 2016). "Una crítica de THE END of ERROR — Unum Computation de John L. Gustafson y su A Radical Approach to Computation with Real Numbers" (PDF) . Consultado el 17 de febrero de 2018 .
  9. ^ ab Gustafson, John Leroy (4 de febrero de 2016) [5 de febrero de 2015]. El fin del error: Unum Computing. Chapman & Hall / CRC Computational Science . Vol. 24 (segunda edición corregida, primera edición). CRC Press . ISBN 978-1-4822-3986-7. Recuperado el 30 de mayo de 2016 .[1] [2]
  10. ^ ab Trader, Tiffany (17 de enero de 2018). "Inventor afirma haber resuelto el problema del error de punto flotante". HPCwire . Consultado el 1 de marzo de 2022 .
  11. ^ Patente estadounidense 11023230B2, Jorgensen, Alan A., "Aparato para calcular y retener un límite de error durante operaciones de punto flotante y métodos para ello", publicada el 1 de junio de 2021 
  12. ^ "¿Se ha solucionado el problema del error de punto flotante que existía hace décadas?". insideHPC . 2018-01-17 . Consultado el 2022-03-01 .