summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-complex/mrblib/complex.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems/mruby-complex/mrblib/complex.rb')
-rw-r--r--mrbgems/mruby-complex/mrblib/complex.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/mrbgems/mruby-complex/mrblib/complex.rb b/mrbgems/mruby-complex/mrblib/complex.rb
index 67f940865..f54151c7b 100644
--- a/mrbgems/mruby-complex/mrblib/complex.rb
+++ b/mrbgems/mruby-complex/mrblib/complex.rb
@@ -97,6 +97,10 @@ class Complex < Numeric
end
alias_method :rect, :rectangular
+ def to_c
+ self
+ end
+
def to_r
raise RangeError.new "can't convert #{to_s} into Rational" unless imaginary.zero?
Rational(real, 1)
@@ -105,8 +109,8 @@ class Complex < Numeric
alias_method :imag, :imaginary
[Integer, Float].each do |cls|
- [:+, :-, :*, :/, :==].each do |op|
- cls.instance_eval do
+ cls.class_eval do
+ [:+, :-, :*, :/, :==].each do |op|
original_operator_name = :"__original_operator_#{op}_complex"
alias_method original_operator_name, op
define_method op do |rhs|
@@ -119,4 +123,10 @@ class Complex < Numeric
end
end
end
+ Numeric.class_eval do
+ def i
+ Complex(0, self)
+ end
+ end
+ undef i
end