三角関数の定義域を複素数に拡張

R6RS の (sin z) を実装する。三角関数の定義域を複素数に拡張するという話は習った覚えがない。きっと忘れたのだろう。

cos(ix) = (e^-x + e^x) / 2
sin(ix) = (e^-x - e^x) / 2i
sin(z)  = sin(x+iy) = sin(x)cos(iy) + sin(iy)cos(x)
        = sin(x) * ((e^-y + e^y) / 2) + cos(x) * ((e^-y - e^y) / 2i)
        = sin(x) * ((e^-y + e^y) / 2) + cos(x) * ((e^y - e^-y) / 2) * i