Class: Complex

Inherits:
Numeric show all
Defined in:
mruby/mrbgems/mruby-complex/mrblib/complex.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Numeric

#allbits?, #anybits?, #eql?, #finite?, #infinite?, #negative?, #nobits?, #nonzero?, #positive?, #zero?

Methods included from Comparable

#<, #<=, #==, #>, #>=, #between?, #clamp

Class Method Details

.polar(abs, arg = 0) ⇒ Object



2
3
4
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 2

def self.polar(abs, arg = 0)
  Complex(abs * Math.cos(arg), abs * Math.sin(arg))
end

Instance Method Details

#+@Object



14
15
16
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 14

def +@
  self
end

#-@Object



18
19
20
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 18

def -@
  Complex(-real, -imaginary)
end

#absObject Also known as: magnitude



22
23
24
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 22

def abs
  Math.hypot imaginary, real
end

#abs2Object



27
28
29
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 27

def abs2
  real * real + imaginary * imaginary
end

#argObject Also known as: angle, phase



31
32
33
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 31

def arg
  Math.atan2 imaginary, real
end

#conjugateObject Also known as: conj



37
38
39
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 37

def conjugate
  Complex(real, -imaginary)
end

#fdiv(numeric) ⇒ Object



42
43
44
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 42

def fdiv(numeric)
  Complex(real / numeric, imaginary / numeric)
end

#inspectObject



6
7
8
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 6

def inspect
  "(#{to_s})"
end

#polarObject



46
47
48
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 46

def polar
  [abs, arg]
end

#real?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 50

def real?
  false
end

#rectangularObject Also known as: rect



54
55
56
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 54

def rectangular
  [real, imaginary]
end

#to_cObject



59
60
61
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 59

def to_c
  self
end

#to_rObject



63
64
65
66
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 63

def to_r
  raise RangeError.new "can't convert #{to_s} into Rational" unless imaginary.zero?
  Rational(real, 1)
end

#to_sObject



10
11
12
# File 'mruby/mrbgems/mruby-complex/mrblib/complex.rb', line 10

def to_s
  "#{real}#{'+' unless imaginary < 0}#{imaginary}#{'*' unless imaginary.finite?}i"
end