ごとけんです

In message "[ruby-list:8659] Re: sin(complex)"
    on 98/07/09, Shin-ichro Hara <sinara / blade.nagaokaut.ac.jp> writes:

>原です。

>sinh は
>
>  sinh(x) = (exp(x)-exp(-x)) / 2
>
>かな。ついでに

あう; またもやありがとうございます。
# 原先生と呼ばせて下さい ^^;;

>  exp(x + iy)= exp(x)(cos(y) + i sin(y))
>  cos(x + iy)= cos(x)cosh(y) - i sin(x)sinh(y)
>  sin(x + iy)= sin(x)cosh(y) + i cos(x)sinh(y)

どうもです。ぼくが計算してたのと同じです。

ところで、Complex#** を考えるとき、
数学的な定義によると、まず、exp の逆関数として
log を定義し、

  z**w = exp(w log(z))

で与えられます。ここで、 log は無限個の値を持つ
多価関数なので、 z**w も無限個の値を持つことに
なります。で、一つの値(主値)を決めるんですが、
この範囲はどんなライブラリに準拠するのが自然なん
でしょうか? 
FORTRAN あたりで標準化されてればそれに合わせるのが
よいと思います。

なお僕が自然だと思うのは、log(z) の虚部 arg(z) を
libm の atan2(x,y) の範囲に合わせるとゆー、
いまの complex.rb の仕様(?)と同じモノです。
が、この atan2 の範囲は標準化されてるのでしょうか? 
# IEEE の浮動点小数演算の規格の解説がどっか行ってしまった ;_;

-- gotoken