[ruby-dev:49911] 「正確なsum」について

From: "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date: 2016-12-22 14:34:26 UTC
List: ruby-dev #49911
きしもとです。関連した実装を書いていてサーベイ中に気がついたので……

Feature #12871 (および #10298 )の提案が意図している、Python の
math.fsum のような合計のメソッド、は、カハンさんのアルゴリズムの
ような、高精度の(誤差が緩和された)sum、というアプローチとは違って、
「正確な」(全てRationalで計算してからFloatに戻したような)sum です。

Python の math.fsum のドキュメントが参照しているのがこちらです。
https://code.activestate.com/recipes/393090/
(このmsumは完全に正確じゃないんじゃないかという気がしますが)

他に文献としてたとえばこういったのがあります。
Accurate Sum and Dot Product
https://dx.doi.org/10.1137/030601818

で、私見ですが、
・似ていますが「高精度な」と「正確な」は違うものなので、sum の改良
 ではなく( #10298 では float_sum という名前が提案されていますが)
 別の名前としたほうが良いのではないでしょうか?
・以下の理由から、2.4には含めないほうが良いのではないでしょうか?
 ・2.4のリリースはもうぎりぎり
 ・どうしても必要なら、実装しようと思えば、Rubyでユーザが実装できる
  ・(なので、内蔵ライブラリで実装されるとすれば、それなりの性能(?)
   が求められる?)

In This Thread

Prev Next