ふなばです。 ruby の標準ライブラリ Rational を便利につかわせてもらっていますが、速 度面で課題がないわけではありません。そこで、原さんの rational (http://raa.ruby-lang.org/project/rational/) を採用するというのはどう でしょう。 標準ライブラリのなかでも、Rational は重要なもので、よくつかわれるもの だと思います。もし速度面での改善が無意味でないならば、検討してみてほし いと思います。 ついでですが、いくつか気がついたことを書きます。 Rational(-13, 4).to_i は、-4 になりますが、ruby の to_i は truncate の はずなので、-3 にならないといけないのではないかと思います。 r = Rational(-13, 4) r.to_i => -4 r.to_f => -3.25 r.to_f.to_i => -3 以下、divmod は床をとったものと余りになる、たとえば Common Lisp でいえ ば、 (multiple-value-list (floor -13/4 1) => (-4 3/4) で、なおかつ、a.divmod(b) == [a.div(b), a % b] という前提で書きます。 原さんの rational は、r.divmod(1) が [-3, -1/4] になります (div と % も)。 ruby 1.8 では、-3.25.div(1) が -3 になります。1.9 では、-4 になります。