(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))); }