C++相談室 part10
■ このスレッドは過去ログ倉庫に格納されています
0693620
NGNG>>668 などで指摘されている通り,double型(64ビット)の変数がレジスタ
(80ビット)に割り当てられた際に,余分な桁がまぎれこみ,計算結果に
違いが出たようです.
私が思いついたのは次の2つで,結局,2を選択しました.
1. g++のコンパイルの際に-ffloat-storeオプションをつける.
これにより,double型(64ビット)変数のレジスタ(80ビット)への割り
当てを抑制できました.
2. double型の変数をlong double型で宣言しなおす.
もともとlong double型は80ビットですので,レジスタに割り当てても
不要な桁が入りこまないようになります.
ちなみに,計算速度は,1,2で,大きな差はありませんでした.
■ このスレッドは過去ログ倉庫に格納されています