La mitigación de errores de punto flotante consiste en minimizar 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 puede eliminarse y, en el mejor de los casos, solo puede 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 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 aritmética de punto flotante y, por lo tanto, susceptible a errores de punto flotante. Sin embargo, las primeras computadoras, con tiempos de operación medidos en milisegundos, no podían resolver problemas grandes y complejos [ 2 ] y, por consiguiente, rara vez sufrían errores de punto flotante. Hoy en día, sin embargo, con el rendimiento de los sistemas de supercomputación medido en petaflops , el error de punto 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 los errores de coma 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 la minimización del error de redondeo de punto flotante.
Aritmética de Monte Carlo
El análisis de errores mediante aritmética de Monte Carlo se realiza inyectando repetidamente pequeños errores en los valores de datos de un algoritmo y determinando el efecto relativo en los resultados.
Extensión de la 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 precisión reduce la probabilidad o la importancia de los errores, la exactitud real de los resultados aún se desconoce.
Aritmética de longitud variable
La aritmética de longitud variable representa los números como una cadena de dígitos cuya longitud está 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 fijo. Cuando no se requiere un alto rendimiento, pero sí una alta precisión, la aritmética de longitud variable puede resultar útil, aunque la exactitud real del resultado puede ser desconocida.
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), permite obtener el término de error (exacto) de una 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 usar en algoritmos para mejorar la precisión del resultado final, por ejemplo con expansiones de punto flotante o algoritmos compensados .
Las operaciones que proporcionan el resultado de una suma o multiplicación de punto 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 raíz diferente
Cambiar la base numérica , en particular de binaria a decimal, puede ayudar a reducir el error y a controlar mejor el redondeo en algunas aplicaciones, como las aplicaciones financieras .
aritmética de intervalos
La aritmética de intervalos es una técnica matemática que se utiliza para establecer 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 diversas maneras, como por ejemplo: [ 6 ]
- 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 (denominado punto medio y radio del intervalo);
- Triplex: una aproximación, un límite inferior y un límite superior del error.
En lugar de utilizar 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. [ 7 ]
La evaluación de expresiones aritméticas de intervalo puede proporcionar un amplio rango de valores, [ 7 ] y puede sobreestimar 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 el posible error en el bit menos significativo de la mantisa ( ULP ). [ 9 ] : 4
William Kahan cuestiona la eficacia de los unums . [ 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 verdadero valor real representado y el valor almacenado por la representación de punto flotante. [ 11 ]
El aritmético de punto flotante acotado ha sido criticado por derivar del trabajo de Gustafson sobre unums y aritmética de intervalos. [ 10 ] [ 12 ]
Referencias
- ↑ "Medios de control aritmético de punto decimal flotante para calculadora: Patente de Estados Unidos 3037701" . FreePatentsOnline.com . 5 de junio de 1962. Consultado el 21 de enero de 2022 .
- ↑ "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 . Recuperado el 16 de febrero de 2018 .
- ↑ Higham, Nicholas John (2002). Precisión y estabilidad de los algoritmos numéricos (2.ª ed.). Sociedad de Matemáticas Industriales y Aplicadas (SIAM). ISBN 978-0-89871-521-7.
- ↑ Richard Shewchuk, Jonathan (octubre de 1997). "Aritmética de punto flotante de precisión adaptativa y predicados geométricos robustos rápidos" (PDF) . Geometría discreta y computacional . 18 (3): 305–363 . doi : 10.1007/PL00009321 . S2CID 189937041. Consultado el 14 de noviembre de 2022 .
- ↑ "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.
- 1 2 Hickey, T.; Ju, Q.; van Emden, MH (septiembre de 2001). "Aritmética de intervalos: de los principios a la implementación" (PDF) . Journal of the ACM . 48 (5): 1038– 1068. CiteSeerX 10.1.1.43.8001 . doi : 10.1145/502102.502106 . S2CID 15105694. Recuperado el 16 de febrero de 2018 .
- 1 2 Kahan, William (julio de 2016). "Una crítica de EL FIN DEL ERROR: Computación Unum de John L. Gustafson y su Enfoque Radical para la Computación con Números Reales" (PDF) . Recuperado el 17 de febrero de 2018 .
- 1 2 Gustafson, John Leroy (04/02/2016) [05/02/2015]. El fin del error: Computación Unum . Chapman & Hall / CRC Computational Science . Vol. 24 (2.ª reimpresión corregida, 1.ª ed.). CRC Press . ISBN 978-1-4822-3986-7. Consultado el 30 de mayo de 2016 .
- 1 2 Trader, Tiffany (17 de enero de 2018). "Inventor afirma haber resuelto el problema del error de punto flotante" . HPCwire . Recuperado el 1 de marzo de 2022 .
- ↑ Patente estadounidense 11023230B2 , Jorgensen, Alan A., "Aparato para calcular y mantener un límite de error durante operaciones de punto flotante y sus métodos", emitida el 1 de junio de 2021.
- ↑ "¿Se ha resuelto el problema del error de punto flotante que lleva décadas sin resolverse?" . insideHPC . 17/01/2018 . Consultado el 01/03/2022 .
- Punto flotante
- aritmética informática
- Error