けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :9171 ] the message: "[ruby-list:9171] Re: Matrix#to_i
[Re: irb -m] ", on Aug/17 18:57(JST) GOTO Kentaro writes:

>ごとけんです

>では Complex#to_i と Complex#to_f は解決ということで。

はい.

>>その, 精度という視点で考えるのは良い案だと思います. 
>良かった ^^;;

何か私も, 今までモヤモヤしていたものがすっきりした気がします(^^;;;

>>ただ, prec(Float)っ
>>て良く使うので, prec_fとかprecfぐらいの方が良いなと...
>
>えっと、prec(Integer) も意味あると思うのですよ。

ええ. prec_iとprec_fがあるといいなと...

>例えば現在の Rational では rational.rb を include した
>時点から Integer#/ は自然な規則で Rational を返す訳で、

# これは, mathn.rbをインクルードして初めてそのような動作をするようになっ
# ています. 

>そうすると例えば
>
>Complex(0.0,1.0).prec(Integer) / 3
>    ==> Complex(0,Rational(1,3))
>
>の場合 prec(Float) よりも精度が良いことになります。
>prec(Rational) はちょっと難しそうですが、Float を
>有理数として分母分子を計算するのはアリかも知れません。
>つまり (0.2).prec(Rational) # => Rational(1,5) みたく。

変換する意味があるかどうかは別ですけどね...

>それと、prec(klass) という仕様の方が良いと思うのは、
>将来、FinerFloat や DiophantineApproximation
>なんてものがあらわれた場合にも complex.rb や matrix.rb を
>さわらなくても良いことです。

これはどうなんでしょ? prec_fとかでも問題なくできると思いますが... それ
はともかく:

>また十分に制御された特殊な精度クラスは数値計算論では
>特に重要ですので、そのようなものが prec の引数に来る
>可能性は十分あります(というかそんな人の気もひけるというか)。

そうですね. それはいえると思います. そういう意味ではprec()もあった方が
良いと思います. ただ, 他の精度変換よりもFloat/Integerへの精度変換は非
常に多いと思うので, 別名(?)として用意されれば良いなと...

いちいち, 

  num.prec(Float) * num.prec(Float)

って書くのは長い....

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---