stringtranslate.com

Mitigación de errores de punto flotante

La mitigación de errores de punto flotante es la minimización de los 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, sólo se puede gestionar.

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

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 Konrad Zuse en 1936, fue el primer ordenador con aritmética de punto flotante y, por tanto, era susceptible a errores de punto flotante. Sin embargo, las primeras computadoras, con tiempos de operación medidos en milisegundos, eran incapaces de resolver problemas grandes y complejos [2] y, por lo tanto, rara vez estaban plagados de errores de punto flotante. Sin embargo, hoy en día, con el rendimiento del sistema de supercomputadora medido en petaflops , el error de punto flotante es 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 enfoque principal del análisis numérico , [3] [4] : ​​5  el análisis de errores numéricos existe para el análisis y minimización del error de redondeo de punto flotante.

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 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 la inicialmente considerada. 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 exactitud 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 un suma de punto flotante redondeada al más cercano. También se puede obtener el término de error (exacto) de una multiplicación de punto flotante redondeada 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 redondeada 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 una base diferente

Cambiar la base , en particular de binaria 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 utilizada para poner límites a los errores de redondeo y de medición en el cálculo matemático . Los valores son intervalos, que se pueden representar de varias formas, como por ejemplo: [6]

"En lugar de utilizar un único número de punto flotante como aproximación al valor de una variable real en el modelo matemático bajo investigación, 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." [7]

La evaluación de la expresión aritmética de intervalos puede proporcionar una amplia gama de valores [7] y puede sobrestimar seriamente los verdaderos límites del error. [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 del significado , 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 significado ( ULP ). [9] : 4 

William Kahan cuestiona la eficacia de los unums . [8]

Punto flotante acotado

La coma flotante acotada es un método propuesto y patentado por Alan Jorgensen. [10] La estructura de datos incluye la estructura e interpretación de datos estándar IEEE 754 , 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 21 de enero de 2022 .
  2. ^ "Historia del desarrollo informático y generación de computadoras". WikiEducador . Septiembre de 2014 . Consultado el 17 de febrero de 2018 .
  3. ^ Trefethen, Lloyd N. (1992). "La definición de análisis numérico" (PDF) . SIAM . Consultado el 16 de febrero de 2018 .
  4. ^ Higham, Nicolás 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.
  5. ^ Richard Shewchuk, Jonathan (octubre de 1997). "Aritmética de coma 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. 2015-06-30. 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 EL FINAL del ERROR de John L. Gustafson: Unum Computation y su Un enfoque radical para la computación con números reales" (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 Ciencias Computacionales . vol. 24 (2ª impresión corregida, 1ª ed.). Prensa CRC . ISBN 978-1-4822-3986-7. Consultado el 30 de mayo de 2016 .[1] [2]
  10. ^ ab Trader, Tiffany (17 de enero de 2018). "El inventor afirma haber resuelto el problema de error de coma flotante". Cable HPC . 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 coma flotante y sus métodos", publicada el 1 de junio de 2021 
  12. ^ "¿Se ha resuelto el problema del error de coma flotante que data de décadas?". dentro de HPC . 2018-01-17 . Consultado el 1 de marzo de 2022 .