Concurrent Clean : Realの割算に関する極めて微妙なバグ

Clean MLにあがっていた「初心者の質問」というメールの件を追いかけてみたら、極めて微妙なバグらしきものを見つけた。

Start = let n1 = 9.88131291682493E-324 / 10.0
            n2 = 9.88131291682493E-324 / 10.0
        in (n1 <> 0.0, n2 <> 0.0, n2)

これが、どう考えてもn1とn2は等しいのだが、(True, False, 0)という結果になる。
どうも、n2の方は比較までに一度A-stackを経由するのだけれど、n1の方はB-stack上だけで計算〜比較まで完了しているところに違いがあるみたい。
てなことをまとめて、MLに投げておいた。

      • -

(追記)
MLに回答が返ってきていました。やはり、80bitの問題が原因だったようです。