VC7.1のリリースビルドだとexp(-∞)が無効な値になるようなアセンブリ吐くじゃんか,ぶ〜ぶ〜ぶ〜.
// exp(x)のリリースビルドが吐くコード // st(0) <- x fldl2e; fmulp st(1), st; fld st(0); frndint; fxch st(1); fsub st, st(1); // x = -∞だとここが(-∞) - (-∞) f2xm1; fld1; faddp st(1),st; fscale; fstp st(1); // st(0) == exp(x)
まー,特異な値じゃなければ至極妥当なコードにゃんだけれど.-∞なんか入れるなバカってことかのー.
VC7.1のCRTの浮動少数演算ってどの規格が基準なんじゃろか?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_exp.asp