けいじゅ@いしつかです.

In [ruby-dev:20810] the message: "[ruby-dev:20810] Rational 始めました。
", on Jul/23 12:30(JST) Shin-ichiro HARA writes:

>原です。

>すぐ公開しますが、その 1.8.0 preview4 前に rational.rb, mathn.rb で
>2つお願いしたいことがあります。
>
>(1) Rationa.new を公開してほしい。
>
>だだし、Rational.new(a, b) の意味は、現在の Rational(a, b) と同じ。
>Rational.new!(a, b) は、現在のまま。
>
>これは幾つか理由がありますが、さしあたって、クラス Rational の存在を知っ
>たユーザーが 2/3 を生成しようとして、Rational.new(2, 3) としてみるは自
>然で、それを禁止する事もないかなと思うからです。

これは, 以前は, allocateがなかったからです. 今はあるので, 

  Rational(a,b)

と同じにするのであれば, 公開してかまわないと思います.

>(2) mathn.rb で、@numerator, @denominator を使わず、Rational#numerator, 
>Rational#denominator を使ってほしい。

了解です. というか, 勝手にコミットしてください(^^;;;

>組み込みにしたとき、インスタンス変数を設定するとかなり速度が落ちるよう
>なので。

というか, インスタンス変数じゃない方が良いですよね. よりimutableになり
ますので.

>あと、気づいた事ですが、
>
>rational.rb では gcd に Stein のビット演算による方法を使っていますが、
>やっぱり遅いみたいです。C で書いても、特定の条件でのみユークリッドの方
>法より速いみたいです。その条件の判定を低コストでできるなら、内部で切り
>替えるのもいいかと思います。

これも, 以前指摘されて, 手元のバージョンでは直しているのですが, 他にも
いろいろと修正している間に(complex.rbも), 忙しくなってしまって, ホッタ
ラカシになってしまっています.

# 関係各位にはご迷惑をお掛けしています(__;;

>Rational が組み込みになるのと同時に組み込みにしたいのは、何でしょうか
>ね。一応、
>  Integer#gcd
>  Integer#lcm
>  Integer#to_r
>  Integer#quo の変更
>は欲しいですよね。他には?

rational.rbにあるの全部というのは?

>この際、Numeric#zero, Numeric#unity も作っちゃったらどうかな。

うーん. 私には議論している余力ないっす(^^;;

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju / ishitsuka.com <<---