Ruby 1.9.0 > Home > All Libraries > library mathn

library mathn

Abstract

rationalcomplex をシームレスに利用するようにするライブラリです。

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 される可能性を留意して書いて下されば、親切だと思います)。

参考

Classes/Modules

class Prime

Required Libraries

complex

複素数を扱うためのライブラリです。

matrix

行列を扱うためのライブラリです。

rational

有理数を扱うためのライブラリです。

Added/Redefined Methods

Bignum#/ Complex::Unify Fixnum#/ Integer.from_prime_division Integer.gcd2 Integer.prime_division Math.#rsqrt Math.#sqrt Rational#** Rational#inspect Rational#power2 Rational::Unify