数列の和の計算にアルゴリズムなんて考える余地はあるのか?と思ったが、誤差についても考える場合、単純な方法以外にも複数のアルゴリズムが存在し使われているということを教えてもらった。
- [https://en.wikipedia.org/wiki/Kahan_summation_algorithm:title]
- [https://en.wikipedia.org/wiki/Pairwise_summation:title]
Kahan summation はより高い精度を達成できるが、pairwise summation のほうが高速である。NumPy の sum では pairwise summation algorithm が使われているようだ。
- [https://github.com/numpy/numpy/blob/88a66d8d0464caf57f40cf85a24156042e7ff0d7/numpy/core/src/umath/loops.c.src#L1524:title]
ちなみに、分散を計算する際には専用のアルゴリズムもある。
- [https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm:title]