On Sun, 09 Oct 2005 14:58:10 +0900
dune <FZH01112@...> さんwrote:
お疲れ様です。
> 原因は簡単に見つかって、N^2 ループの中の足し算の桁落ちでした。
> 伊理正夫・藤野和建の「数値計算の常識」という本の p18 に載っ
> ている、桁落ちを集めて再度足しこむ方法を試すとバッチリでした。
こんな方法があるのですね。これでなぜ桁落ちを再度足しこむことになるのか
はよくわからないのですが(^^;)僕も「常識」を勉強してみます(^^)v
> 素直に計算した (1) と比べて桁落ち対策版の (2) は 100 倍、精
> 度が上がってます(三角関数を一周期ぶん足しているので結果は 0
> になるのが正しい)。
>
> [実行結果]
> D:$ perl gomi2.pl 100000
> (1) +5.51e-013
> (2) +3.99e-015
C:\Scripts\Perl>perl nanashi.pl 100000
(1) +5.51e-013
(2) +5.15e-015
となりました。確認するとPXPerlとActivePerlの差でした。ライブラリのバージョ
ンの差かもしれませんが。
C:\Scripts\Perl>c:\perl5.8\bin\perl nanashi.pl 100000
(1) +5.51e-013
(2) +3.99e-015
藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/