From: gotoken@... (GOTO Kentaro) Date: 1998-08-17T18:57:34+09:00 Subject: [ruby-list:9171] Re: Matrix#to_i [Re: irb -m] ごとけんです In message "[ruby-list:9162] Re: Matrix#to_i [Re: irb -m]" on 98/08/17, 石塚圭樹 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