ごとけんです

# 不必要にえぐちさんのお手を煩わせてしまってすみません __;
# [ruby-dev:4841]までは見つけていたけど、どう合意したのかを
# 見つけきれなかったのでした __;;;;

In message "[ruby-math:00052] Re: NaN"
    on 00/01/16, "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> writes:

>手元に、 fcomp の仕様が無いので良く分かりませんが、
>多分、そのまま比較してしまう?
>というと、x86CPUがIEEE準拠ではない?

リファレンス[*]によれば

 The FCOM instructions differ from the FUCOM instructions (section A.69)
 only in the way they handle quiet NaNs: FUCOM will handle them silently
 and set the condition code flags to an `unordered' result, whereas FCOM
 will generate an exception.

とありますから、FUCOM(Floating-Point Unordered Compare)系の
命令を使うべきです。ちなみに gcc はFUCOMPPを吐きます。

てなわけでIEEE754非準拠なのは、やっぱりVC++6.0のほうですね。
これはこれで残念なことですが。

[*] The Netwide Assembler: NASM, Appendix A: Intel x86
    Instruction Reference, Section A.35 FCOM, FCOMP, 
    FCOMPP, FCOMI, FCOMIP: Floating-Point Compare.
    http://acm.ewu.edu/cscd260/Documentation/nasmdoca.html#section-A.35

    詳細はIntelのサイト:
    http://developer.intel.com/design/intarch/techinfo/Pentium/fpu.htm

-- gotoken