" 足し算の答えが一意に決まるなんて昔話になるかも、というお話。 確認した範囲では、MATLAB 7.8 (2009a, 64bit) に足し算をさせる(たとえばサイズが500,000x1の行列の各要素を全部足す)と、その答えは一意に決まらない。全く同一のデータについて同じPC・環境で繰り返し計算させて、ほぼ毎回違う答えが返ってくる。 これについてMathWorks社(の少なくとも一社員)の見解が書かれているページを見つけた。"2010-01-08 - potasiumchの日記
実数の足し算か。ずっと気になってたけど、やっぱり問題あるんだな。安全な順序で足すライブラリでもあるかと思ったんだが
ってゆーか、並列条件か。そりゃ、さらに悪条件だな。
てゆーか、最新版では解決してるんなら問題ないじゃん…
やっぱり、安全な加算のコードを一度自分用に書いておくか…と思ったが、ふと手元の本を見ると、 Kahanの補償付き総和法、というまさにそのものが載っていたのだった。随分前に読んだはずなのに、なんで完全に抜け落ちてたんだろ。
次にコード書く時は、忘れずにこれで積算しよう。
この手のは、古い本見るといろいろ載ってそうな予感…。しかし、どれがいいのかはちっとも判らなそうな悪い予感……。
あ、こんなのもあった。
wikipediaには、optimize に注意とまであった。親切だなぁ。