木村です. > 小野さん [FreeBSD-users-jp 91681] Re: long double の bug ? について > 結論から言えば、i386システム用のgccにおけるコン > パイルオプションなのではないでしょうか。 済みません.書き忘れていました.i386 での話です. -m96bit-long-double, -m128bit-long-double は確かに i386 用の option ですが,私が問題にしているのは,少なくとも FreeBSD 6.2 にて, この option の差異によって,計算結果に本来生じるべきでない差異が 現われることと,それが実行時でなくコンパイルの段階で生じていること です.
> 1) MacOSXネイティヴな環境 (OSX 10.5.2) > % gcc --version > i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465) > 2) FreeBSD/amd64 on VMWare Fusion > % gcc -v > Using built-in specs. > Confugured with: FreeBSD/amd64 system compiler > Thread model: posix > gcc version 3.4.6 [FreeBSD] 20060305 ちゃんと i386 と書かなかったのでお手間をとらせて申し訳 ありませんでした.お試しいただいた二つの環境では,この問題 は生じていないのですね.小野さんの Mac の結果を参考に,明日 (もう今日) gcc version 4 も試してみます. ところで,本題からはずれますが, > .LCFI1: > movabsq $4614256656552045848, %rax > movq %rax, -8(%rbp) > movabsq $-2958705157555305931, %rax movabsq されている二つの行はどちらも変数 lc の仮数部なのでしょうか? amd64 の sizeof(long double) っていくつなのでしょうか? Satoshi Kimura ([メールアドレス保護])