Articulo de referencia

2Suma

2Sum [ 1 ] es un algoritmo de punto flotante para calcular el error de redondeo exacto en una operación de suma de punto flotante. 2Sum y su variante Fast2Sum fueron publicados ...

2Sum [ 1 ] es un algoritmo de punto flotante para calcular el error de redondeo exacto en una operación de suma de punto flotante.

2Sum y su variante Fast2Sum fueron publicados por primera vez por Ole Møller en 1965. [ 2 ] Fast2Sum se usa a menudo implícitamente en otros algoritmos, como los algoritmos de suma compensada ; [ 1 ] el algoritmo de suma de Kahan se publicó por primera vez en 1965, [ 3 ] y Fast2Sum fue posteriormente factorizado por Dekker en 1971 para algoritmos de aritmética doble-doble . [ 4 ] Los nombres 2Sum y Fast2Sum parecen haber sido aplicados retroactivamente por Shewchuk en 1997. [ 5 ]

Algoritmo

Dados dos números de punto flotantea{\displaystyle a}yb{\displaystyle b}, 2Sum calcula la suma de punto flotantes:=ab{\displaystyle s:=a\oplus b}redondeado al más cercano y el error de punto flotantet:=a+b(ab){\displaystyle t:=a+b-(a\oplus b)}de modo ques+t=a+b{\displaystyle s+t=a+b}, dónde{\displaystyle \oplus }y{\displaystyle \ominus }denotan respectivamente la suma y la resta redondeadas al más cercano. El errort{\displaystyle t}es en sí mismo un número de punto flotante.

Introduce números de punto flotantea,b{\displaystyle a,b}
Salida suma redondeadas=ab{\displaystyle s=a\oplus b}y error exactot=a+b(ab){\displaystyle t=a+b-(a\oplus b)}
  1. s:=ab{\displaystyle s:=a\oplus b}
  2. a:=sb{\displaystyle a':=s\ominus b}
  3. b:=sa{\displaystyle b':=s\ominus a'}
  4. δa:=aa{\displaystyle \delta _{a}:=a\ominus a'}
  5. δb:=bb{\displaystyle \delta _{b}:=b\ominus b'}
  6. t:=δaδb{\displaystyle t:=\delta _{a}\oplus \delta _{b}}
  7. devolver(s,t){\displaystyle (s,t)}

Siempre que la aritmética de punto flotante se redondee correctamente al más cercano (con los empates resueltos de cualquier manera), como es el valor predeterminado en IEEE 754 , y siempre que la suma no se desborde y, si se desborda, se desborde gradualmente , se puede demostrar ques+t=a+b{\displaystyle s+t=a+b}. [ 1 ] [ 6 ] [ 2 ]

Una variante de 2Sum llamada Fast2Sum utiliza solo tres operaciones de punto flotante, para aritmética de punto flotante en base 2 o base 3, bajo el supuesto de que el exponente dea{\displaystyle a}es al menos tan grande como el exponente deb{\displaystyle b}, como cuando|a||b|{\displaystyle \left|a\right|\geq \left|b\right|}: [ 1 ] [ 6 ] [ 7 ] [ 4 ]

Introduce números de coma flotante de base 2 o base 3.a{\displaystyle a}yb{\displaystyle b}donde al menos uno es cero, o que tienen exponentes normalizadosmiamib{\displaystyle e_{a}\geq e_{b}}
Salida suma redondeadas=ab{\displaystyle s=a\oplus b}y error exactot=a+b(ab){\displaystyle t=a+b-(a\oplus b)}
  1. s:=ab{\displaystyle s:=a\oplus b}
  2. z=sa{\displaystyle z=s\ominus a}
  3. t=bz{\displaystyle t=b\ominus z}
  4. devolver(s,t){\displaystyle (s,t)}

Aunque no se cumplan las condiciones, 2Sum y Fast2Sum suelen proporcionar aproximaciones razonables al error, es decirs+ta+b{\displaystyle s+t\approx a+b}, lo que permite que los algoritmos para la suma compensada, el producto escalar, etc., tengan un error bajo incluso si las entradas no están ordenadas o el modo de redondeo es inusual. [ 1 ] [ 2 ]

Se utilizan variantes más complejas de 2Sum y Fast2Sum para modos de redondeo distintos del redondeo al más cercano. [ 1 ]

Véase también

Referencias

  1. 1 2 3 4 5 6 Müller, Jean-Michel; Brunie, Nicolás; de Dinechin, Florent; Jeannerod, Claude-Pierre; Joldes, Mioara; Lefèvre, Vicente; Melquiond, Guillaume; Revol, Nathalie ; Torres, Serge (2018). Manual de aritmética de coma flotante (2ª  ed.). Cham, Suiza: Birkhäuser. págs. 104-111 . doi : 10.1007/978-3-319-76526-6 . ISBN  978-3-319-76525-9Archivado del original el 28 de abril de 2023. Consultado el 20 de septiembre de 2020 .
  2. 1 2 3 Møller, Ole (marzo de 1965). "Cuasi doble precisión en la suma de punto flotante". BIT Numerical Mathematics . 5 : 37–50 . doi : 10.1007/BF01975722 . S2CID 119991676 . 
  3. Kahan, W. (enero de 1965). "Observaciones adicionales sobre la reducción de errores de truncamiento" . Communications of the ACM . 8 (1). Association for Computing Machinery: 40. doi : 10.1145/363707.363723 . ISSN 0001-0782 . S2CID 22584810 .  
  4. 1 2 Dekker, TJ (junio de 1971). " Una técnica de punto flotante para extender la precisión disponible" . Numerische Mathematik . 18 (3): 224–242 . doi : 10.1007/BF01397083 . S2CID 63218464. Archivado del original el 19 de julio de 2020. Recuperado el 24 de septiembre de 2020 . 
  5. Shewchuk, Jonathan Richard (octubre de 1997). "Aritmética de punto flotante de precisión adaptativa y predicados geométricos robustos rápidos" . Geometría discreta y computacional . 18 (3): 305– 363. doi : 10.1007/PL00009321 .
  6. 1 2 Knuth, Donald E. (1998). El arte de la programación informática, Volumen II: Algoritmos seminuméricos (3.ª ed.). Addison–Wesley. pág. 236. ISBN   978-0-201-89684-8Archivado del original el 16 de julio de 2017. Consultado el 20 de septiembre de 2020 .
  7. Sterbenz, Pat H. (1974). Floating-Point Computation . Englewood Cliffs, NJ, Estados Unidos: Prentice-Hall. pp. 138–143 . ISBN  0-13-322495-3.