Visual Studio 2008 Part 22at TECH
Visual Studio 2008 Part 22 - 暇つぶし2ch220:デフォルトの名無しさん
18/09/16 13:53:17.67 haV9TZ8e.net
>>214
なるほど、全く別の2つの理由で、精度が変わっている可能性(というより多分、確実)があると。
それは以下の2つ:
1. Debug版とRelease版では、最適化の結果、x87 FPU命令の使われ方が変わる。
  x87では、メモリに書き戻さずに st(0)~st(7)レジスタに入っている途中では、
 拡張倍精度の80BITで計算されるが、書き戻すとdoubleの場合でも64BITに丸め
 られる。なるべくメモリに書き戻さずにレジスタった方が高速なので、Release版
 では、80BITで計算される「期間」が多くなる。そのため、Debug版とRelese版では
 結果が僅かに違ってくる。
2. fpu control word が違っていて、st(0)~st(7)に入っていても、計算が
 80BITか、64BIT、32BITのどれで計算されるか異なったり、丸め方が四捨五入
 か、正負二種類の方向の切り捨てなどが変わっている。

そして、IDEから起動した場合と、コマンドラインから起動した場合で結果が違う
のは、「2.」の理由によるものではないかと。そして、実際に、インラインアセンブラ
で fpu control word を読み取ってみると、不安定な値が読み出されたと。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch