D言語やPythonのように、複素数リテラルが欲しかったのですが、 無かったのでそれっぽい動きをさせるようにNumeric#iを定義してみました。
numeric_i.
1 require 'complex' 2 3 class Numeric 4 def i 5 self * Complex::I 6 end 7 end
これだけです。あとは以下のようにして使います。
1 require 'numeric_i' 2 3 1 + 1.i #=> Complex(1, 1) 4 (Math::E ** (Math::PI.i)).real #=> -1.0
(自分が)簡単に使えるように、GitHubでGemを作っておきました。 利用する場合は以下の手順で導入できます。
1 gem sources -a http://gems.github.c om 2 sudo gem install genki-nume ric_i
名前空間のお陰で、シンプルなGemも気軽に公開できて良い時代ですね。
See Also
posted by
genki
on Thu 10 Jul 2008
at 22:21