[表示 : 全て 最新50 1-99 101- 201- 301- 2ch.scのread.cgiへ]
Update time : 02/03 06:07 / Filesize : 144 KB / Number-of Response : 326
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Visual Studio 2008 Part 22



220 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 13:53:17.67 ID: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 を読み取ってみると、不安定な値が読み出されたと。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<144KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef