原です。

Rational は、メンテナがいるなら 1.8.1 あたりで組み込みにできる、
というまつもとさんの話なので、やってみようと思います。一応動くも
のができたのですが、いい加減な計測では

  Rational(355, 133) + Rational(355, 133) + ... + Rational(355, 133)

で 20 倍ぐらい、

  Rational(355, 133) * Rational(355, 133) * ... * Rational(355, 133)

で 60 倍ぐらい速いみたいなんで、価値はありそうです。他の数関係の
ライブラリにとっても Rational の存在を前提にできるメリットは大き
そうですし。


すぐ公開しますが、その 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) としてみるは自
然で、それを禁止する事もないかなと思うからです。


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

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


あと、気づいた事ですが、

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

Rational が組み込みになるのと同時に組み込みにしたいのは、何でしょうか
ね。一応、

  Integer#gcd
  Integer#lcm
  Integer#to_r
  Integer#quo の変更

は欲しいですよね。他には?

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