GCCについて part8at TECHGCCについて part8 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト2: ◆3.JjF77I26 07/10/13 00:58:22 2get 3:デフォルトの名無しさん 07/10/13 01:09:51 BE:328057362-2BP(100) >>1乙 4:デフォルトの名無しさん 07/10/17 11:28:31 x86です。 double d = 0.3; int i; i = d * 1000; とすると i=299になります。 d = d * 1000; i = d; とするとi=300になります。 Macのgccで試したら300になるので生成したコードを調べると SSE2インストラクションを使ってました。試しに-msse2でコンパイルすると両方とも300に なりました。 gccは3.2.2, 3.3.5, 4.1.1と試しましたが全部同じです。 manに書かれている以下の文が関係しているのでしょうか? ... -msse2 ... The resulting code should be considerably faster in the major- ity of cases and avoid the numerical instability problems of 387 code, この問題をどこか詳しく説明している文書はありますでしょうか? 5:デフォルトの名無しさん 07/10/17 11:56:17 x86は浮動小数点数レジスタが80ビットあり、演算はこの大きさで行われる メモリに書き戻されるタイミングで64ビットに切り捨てられるのだが、 コンパイラの最適化の具合によって メモリに書き戻されるタイミングが変わり、計算結果が変わることがある 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch