けいじゅ@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 <----