D言語やPythonのように、複素数リテラルが欲しかったのですが、
無かったのでそれっぽい動きをさせるようにNumeric#iを定義してみました。

numeric_i.rb

ruby>>
require 'complex'

class Numeric
def i
self * Complex::I
end
end
<<--

これだけです。あとは以下のようにして使います。

ruby>>
require 'numeric_i'

1 + 1.i #=> Complex(1, 1)
(Math::E ** (Math::PI.i)).real #=> -1.0
<<--

(自分が)簡単に使えるように、GitHubでGemを作っておきました。
利用する場合は以下の手順で導入できます。

pre>>
gem sources -a http://gems.github.com
sudo gem install genki-numeric_i
<<--

名前空間のお陰で、シンプルなGemも気軽に公開できて良い時代ですね。

See Also

posted by genki genki on Thu 10 Jul 2008 at 20:15 with 0 comments