(exp +inf.0+0.0i)

Mosh は (exp +inf.0+0.0i) に対して +inf.0+nan.0i を返すのはバグではないか?と指摘を受けた。
各処理系での結果は以下の通り。

mosh> (exp +inf.0+0.0i)
+inf.0+nan.0i

Ypsilon 0.9.6-trunk/r455 Copyright (c) 2009 Y.Fujita, LittleWing Company Limited.
> (exp +inf.0+0.0i)
+inf.0+nan.0i

Ikarus Scheme version 0.0.4-rc1+, 64-bit (revision 1773, build 2009-05-13)
Copyright (c) 2006-2009 Abdulaziz Ghuloum

> (exp +inf.0+0.0i)
+inf.0+nan.0i
>

gosh> (exp +inf.0+0.0i)
+inf.0


もう数学はさっぱり忘れてしまったので自信がないのだが、直感的には +inf.0 が自然のように思えるのだが。
ちなみに現在の exp の実装はこんな感じ。

    Object exp() const
    {
        const double re = Arithmetic::realToDouble(real());
        const double im = Arithmetic::realToDouble(imag());
        const double r = ::exp(re);
        return Object::makeCompnum(Object::makeFlonum(r * ::cos(im)),  Object::makeFlonum(r * ::sin(im)));
    }