記事登録
2008年08月28日(木) 00時00分

グーグルの電卓機能が計算ミス読売新聞

 Googleの電卓機能で、一部の大きい数字の計算に問題が発生している。コンピュータの世界ではちらほら耳にするような話だが、とてつもなく大きい数字にちなんで名付けられた、超コンピュータマニアの会社にはあってはいけないことだろう。

 常時ではないが、一部の非常に大きい数字でエラーが発生する。例えば、2,999,999,999,999,999から2,999,999,999,999,998を引くと1になるが、Googleの電卓機能では0と表示される。

 しかし、切り捨てによって誤りが生じるというわけでもない。1,999,999,999,999,999引く1,999,999,999,999,995は0と、誤った答えが表示されるが、1,999,999,999,999,999引く1,999,999,999,999,993は6と、正しい答えが表示される。また、400,000,000,000,002引く400,000,000,000,001は0と、誤った答えが表示されるが、400,000,000,000,002引く400,000,000,000,000は2と、正しい答えが表示される。

 他人の不幸を喜ぶ人たちにとっては最高に楽しいことかもしれないが、Googleは、1の後にゼロが100個続く10の100乗(グーゴル)の計算も苦手なようだ。1グーゴル足す1引く1グーゴルの答えは1が正しいが、0になる。

Googleの立場での言い分

 確かに、正確さを維持しようとすれば、特殊な方法を使って数字をエンコードする必要があるため、この規模での計算は難しい。しかし、電卓を開発する人たちにとって幸いなことに、実世界では比較的まれな要件だ。2つの星の間の距離を測定する場合、数cmレベルの精度を得られるのはまれだ。また、このような精度が実際に意味を持つこともまれだ。

 多くの場合、大きい数字は、小さい数字(仮数)に10の乗数(指数)を掛けた2つの値による浮動小数点形式で表される。例えば、Googleの第2四半期の売り上げは12億5000万ドルだったが、「1,250,000,000ドル」、「1.25掛ける10の9乗ドル」、「1.25×10^9ドル」と表記することもできる。浮動小数点計算は大きな数の計算に便利だが、一般的に、最初の要素は限られた桁数の数字しか把握できないため、途中で若干の誤差が生じる。

 コンピュータでの正確な計算は、コンピュータが一般的に0または1の数字しかない2進数で計算をしていることに基づいている。一方、人は0から9までの数字を使った10進数計算を行う。正確性に問題が生じるのは、コンピュータが数字を2進数に変換して処理し、結果を10進数に戻して表示するためだ。

 実際、コンピュータ技術が普及してから数十年になるが、IBMの最新の基幹プロセッサである「Power6」が登場するまで、IBMでさえも、2進数に変換せずに10進数計算をすることはできなかった。

 普通の電卓では、大きい数字を処理しようとすると、すぐに計算できなくなってしまう。確かに、Googleには問題があるかもしれないが、ほとんどの電卓は、1,999,999,999,999,993という数字を入力することさえできず、もちろん計算もできない。また、正しく計算できるWolfram Researchの「Mathematica」のようなソフトウェアの市場は大きくない。

 Googleは計算ミスが起こることを認め、声明の中で、「Googleウェブ検索の電卓機能が一部の計算で正しく機能しないことを認識しており、この問題をさらに詳しく調べていく。今回の件で利用者に迷惑を掛けたことを申し訳なく思う」と述べた。

 大きな数字の計算は見かけによらず難しい。大きな数字であれば、答えが間違っていても、Googleを大目に見るべきではないだろうか。

Googleならもっとできるはずだ

 だが、それは違う。大きな数字にちなんだ社名を持つ会社であれば、もっと高い基準を保つべきだ。

 Googleが、大きいが精度の高い数字が含まれていることを検出し、その計算式をより高度な数学アルゴリズムを持つ別のサーバに送信した場合、計算が若干遅くなるかもしれない。検索エンジンが早ければユーザーがより多くの検索を行えるため、Googleにとってサーバの応答速度は非常に重要である。しかし、これはGoogleの中核となる企業文化、イメージに関わる問題だ。計算ミスをするGoogleは、星が余分にプリントされている星条旗に身を包む政治家のようなものだ。

 結局のところ、Googleは、新規株式公開で「2,718,281,828ドル」を調達することを決定し、自然対数の底である「e」を社名に持ち、数学の問題を解くことができる就職志望者を採用している企業なのである。

 Googleがアルゴリズムを修正できれば理想的だろう。Microsoftも、最近の「Excel」の計算機能の問題でアルゴリズムを修正した。さらに、Intelも1990年代、多額の費用をかけて、一部の「Pentium」プロセッサを悩ませた、有名な「FDIVバグ」の問題を修正した。

 ほかにもGoogleの電卓機能の限界を発見した人たちがいる。例えば、2.00135558564^1023は、Googleの電卓機能では、1.79769313×10^308と解釈される。しかし、これよりもごくわずかに大きい2.00135558565^1023になると、Googleはこれを計算問題ではなく検索と解釈する。

 このことから、わたしは次のような結論に達した。最後の例では、Googleは計算をあきらめ、人を惑わせることがないよう、単なる検索結果を表示する。これはいわゆる正常な故障モードだ。誤った結果を表示するよりは、結果を表示しない方がましだ。電卓を使うような複雑な計算こそ、上記の例と違って誤りに気づきにくい、ということを考えると、これは特に重要なことだ。(CNET Japan)

関連記事 Excelが計算間違い--マイクロソフトの月例パッチに不具合 - 2008/03/18 10:38:01

http://www.yomiuri.co.jp/net/cnet/20080828nt07.htm