けいじゅ@SHLジャパンです. 

In [ruby-list :01873 ] the message: "[ruby-list:1873] Re: Rational and Complex ", on Jan/26 00:12(JST) 
matz / caelum.co.jp (Yukihiro Matsumoto)  writes: 
>
>石塚さんがComplex作った時にsqrtの拡張もしてくれたようですが,
>それもBignumはFloatに変換してから計算するみたいですね.

私は, もともとあるrubyの方針を変えないようにしましたので, complex.rbで
のsqrtの実装は, Floatになるようにしました. これは後で話すような理由に
もよります.

ただし, mathn.rbをインクルードした場合は, より数学的に正しい動きを行な
うように実装しました.

どのように実装されているかというと:
Fixnum/Bignum -> Fixnum, Bignum(それらが整数で開平できる時)
              -> Float(正の数で上記以外)
              -> Complex(負の数の場合)
                 要素 -> Fixnum, Bignum(それらで開平できる時)
                      -> Float(開平できない時)
Float         -> Float(正の数)
              -> Complex(負の数の場合, 要素はFloat)
Rational      -> Rational(分子分母が開平できる場合)
              -> Float(正の数で上記以外)
              -> Complex(負の数の場合)
                 要素 -> Ratinal(分子分母が開平できる時)
                      -> Float(開平できない時)
Complex       -> Complex
                 要素 -> Fixnum,Bignum(要素を整数として開平できる時)
                      -> Float(要素が整数として開平できない時)

このようにクラスがかなりダイナミックに変わりますので,
complex.rb/ratinal.rbには組み込むことを止めました. 

__
..........................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju / shljapan.co.jp <----