えぐち@エスアンドイー です。

>>> In message [ruby-math:00081] Re: NaN again & + -0  
    On Wed, 19 Jan 2000 22:20:49 +0900, "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> said:

小林> 小林です。
小林> 
小林> ----- Original Message -----
小林> 送信者 : EGUCHI Osamu <eguchi / shizuokanet.ne.jp>
小林> 件名 : [ruby-math:00080] Re: NaN again & + -0 

小林> > これは、ビットパターン的にも +0.0 って事ですね。
小林> はい。

ソースコード中のリテラル -0.0 を正しく扱えないと言う事は、
他の部分でも -0 を考慮していない事を示唆しているようで、
かなりかなしいですね ;_;

小林> >   double pz = 0.0;
小林> >   double mz = -pz;
小林> >
小林> > ではダメでしょうか?
小林> >
小林> ありゃ、OKでした。
小林> 灯台下暗しというか...、気がつきませんでした。
小林> なんか、コンパイラーとの知恵比べのような感じですね。

これは、むしろたまたまと考えた方が良いでしょう。
# pz が自動変数の場合、不変式として畳まれてしまう可能性を否定できない。

小林> > その不具合のある表示はどんなコードでしたか?
小林> > もし printf() 系であってなら、 ruby の printf とかも
小林> > 影響を受けそうな気がします。
小林> >
小林> printf()では、結局-0.0は正しく表示できないようです(VC)。
小林> "%+.f" も "+0.0" となります。

これは、FreeBSD の libc と同じバグだ!
こうなると [ruby-math:00061] のパッチと
検出用の configure のコードを真剣に考えないと
いけないかも、、、

小林> > グローバル変数は、いつ値が変わるとも知れないので、
小林> > 式の縮退は不可能ですからね。(^^)
小林> なるほど! いただきます。

静的変数との組合せならば、いくら賢いコンパイラでも大丈夫
だと思いますが、将来リンカと結託して不変式を探すような
処理系が出て来ると怪しいかも。
#そういう処理系は、こんな初歩的なミスは犯さない、、といいなぁ ^^;;

	えぐち