kmraの日記: Windowsの標準電卓で4の平方根が2でなかった仕様がようやく修正 2
日記 by
kmra
電卓は意外とバグ多いですね。
https://pc.watch.impress.co.jp/docs/news/1115607.html
米Microsoftは4月4日(現地時間)、Windows 10に標準搭載の電卓アプリで4や9などの整数の二乗数の平方根が正確でなかった仕様を修正した。
sqrt(4)-2としたときに-1.068281969439142e-19と表示されるらしい。
32桁精度の浮動少数計算が行なわれていた
ということですが、ふつーのdoubleで計算していないのはどのような理由だったんでしょうか?
MS BASICで (スコア:3)
昔sqrt(36)が6にならなかったバグ(仕様)があります。
これはsqrt(x)をexp(log(x)/2)(32bit float)でやっていたためと思われます。
sqrtくらいニュートン法でやればいいのに、わざわざ精度の悪い(収束の遅い)方法を取るのはまあ、コードを小さくしたかったのだろうと。
まあ、伝統かな。(と流行り言葉を出してみる。)
128bit浮動小数点数か (スコア:1)
想像ですが、内部計算で(特に数学関数なんかの)、値を2乗するとか指数・対数で扱うとかがあって、64bit浮動小数点数のままだと計算途中で頻繁にオーバーフロー・アンダーフローしちゃうから、128bitで計算してるとかじゃないでしょうかね。