ごとけんです

In message "[ruby-list:9162] Re: Matrix#to_i [Re: irb -m]"
    on 98/08/17, 石塚圭樹 <keiju / Rational.Com> writes:

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

>>Complex#image != 0 のときは例外を返すべきだし、

>本来の意味でのto_f, to_iの定義ですね. これは, Float, Integerを自然なし
>方で変換するメソッドということで良いともいます. 

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


>例えば,
>
>  Matrix#prec(Float)
>
>は各要素をto_fするし,
>
>  Complex#prec(Float)
>
>は, 実数部と虚数部をto_fするという意味になるわけですね?

はい、そういうつもりです。

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

良かった ^^;;

>ただ, prec(Float)っ
>て良く使うので, prec_fとかprecfぐらいの方が良いなと...

えっと、prec(Integer) も意味あると思うのですよ。
例えば現在の Rational では rational.rb を include した
時点から Integer#/ は自然な規則で Rational を返す訳で、
そうすると例えば

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 の引数に来る
可能性は十分あります(というかそんな人の気もひけるというか)。

>>だって、いまの Matrix のモデルだと
>>Matrix[[Matrix[[1111,1112],[1121,1122]],12],[21,22]]
>>なんてのも出来るんだもの。
>
>それと, 今までの議論て違う話しですよね?

いや、prec の対象となる再帰構造の例のつもりでした。
良くない例でしたが。

-- gotoken