Ruby 1.9.0 > Home > All Libraries > library mathn
rational と complex をシームレスに利用するようにするライブラリです。
Integer や Float に比べ Rational は誤差無しで表現できる範囲が大きいため、 数値の演算において Rational をシームレスに利用したいことがあります。
例:
1/2 -> Rational(1,2) 2 * Rational(1,2) -> 1 (Fixnum)
また、Complex も演算結果の表現範囲を広げるのに利用できます。
例:
Complex(0,-1)**2 -> -1 (Fixnum) Complex(1,-1) - Complex(0,-1) -> 1 (Fixnum)
require 'mathn' すると上の様な動作を行なうようになります。 つまり、Rational (や Rationalを含む Complex) と Integer (Fixnum と Bignum) との間の関係を、 ちょうど Bignum と Fixnum との間のような関係にします。 具体的には、Rational のインスタンスが整数ならば、それは自動的に Integer (Fixnum または Bignum)となり、また、整数/整数の結果、 割り切れない時は Rational が返るようになります。 後者は、整数のメソッド「/」が整商(.div)でなく、 商(.quo)を返すようになる、ということを意味します。
なお、この挙動は、グローバルに影響を与えます。 つまり、(Ruby で書かれた)汎用ライブラリを require していた場合、 ライブラリ中の動作も、上のように変更されることになります。 他人の書いたライブラリを使う時は、ご注意下さい (逆に、汎用ライブラリの作者の方々は、この mathn が require される可能性を留意して書いて下されば、親切だと思います)。
| class Prime |
| complex | 複素数を扱うためのライブラリです。 |
| matrix | 行列を扱うためのライブラリです。 |
| rational | 有理数を扱うためのライブラリです。 |
Bignum#/
Complex::Unify
Fixnum#/
Integer.from_prime_division
Integer.gcd2
Integer.prime_division
Math.#rsqrt
Math.#sqrt
Rational#**
Rational#inspect
Rational#power2
Rational::Unify