[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:78159] Re: optimization and accuracy with gcc


<200101022006.PAA27129 _at_ subaru.gsfc.nasa.gov>の記事において
ebisawa _at_ subaru.gsfc.nasa.govさんは書きました。

>海老沢@グリーンベルトです。
>
># 以前に関連した話題で投稿したことがあるのですが。。
>
>大きなプログラムをSolarisからLinuxに移植していて、
>計算精度に由来するエラーが起きていることがわかりました。
>問題になっている部分を取り出して、簡略したプログラムを
>最後につけます。やっていることは単純で、3次元単位ベクトル
>を極座標(alpha, delta)で与え、その長さを計算するということです。
>当然長さは1でなくてはいけません。最適化パラメーターを変えてこの
>プログラムをコンパイル、実行すると、結果が変わってきます。
>

>このように最適化によって計算精度が変わってくるのは、
>そういうもんなんでしょうかねえ。問題となっているのは、
>このベクトルの長さをacosにいれていて、引数が1.0より
>大きいときに落ちる、ということです。上の例では最適化を
>はずすしたら正しく動作していますが(ベクトルの長さが1)、
>そうならない場合もあります。最適化をはずすだけでは
>問題は解決しない、と。

根本的な解決ではありませんが,Plamo2.1 の gcc 2.95.2 では,
acos に入れても落ちないようです.また,ご存知とは思いますが,
long double の実数を表示するならば %Lf が適当かと.もっとも 
acos が double なので意味ありませんが.

------------------------------------------------------------------- 
     mmm     mmm     | matuda _at_ film.s.dendai.ac.jp 
  ((^_^)) <- ->    | 松田七美男@東京電機大学  物質工学科  教授 
    {   } ({   })  | 〒101 千代田区神田錦町2-2
    _I I_    _I_     | Tel:03(5280)3402  Fax:03(5280)3570

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: