Sha256: f12a292418c66ea8fb1e7ec1952501e844f120001cec7eee179efeff9febc03d

Contents?: true

Size: 920 Bytes

Versions: 129

Compression:

Stored size: 920 Bytes

Contents

class ComplexNumber
  attr_reader :real, :imaginary

  def initialize(real, imaginary = 0)
    @real = real
    @imaginary = imaginary
  end

  def ==(other)
     (self - other).abs < 1e-15
  end

  def +(other)
    self.class.new(@real + other.real, @imaginary + other.imaginary)
  end

  def -(other)
    self.class.new(@real - other.real, @imaginary - other.imaginary)
  end

  def *(other)
    self.class.new(@real * other.real - @imaginary * other.imaginary,
         @real * other.imaginary + @imaginary * other.real)
  end

  def /(other)
    self*other.inv
  end

  def abs
    Math.sqrt((self*self.conjugate).real)
  end

  def conjugate
    self.class.new(@real, -@imaginary)
  end

  def inv
   self.class.new(@real / abs**2, -@imaginary / abs**2)
  end

  def exp
   self.class.new(Math.exp(@real)) * self.class.new(Math.cos(@imaginary), Math.sin(@imaginary))
  end
end

module BookKeeping
  VERSION = 1
end

Version data entries

129 entries across 129 versions & 1 rubygems

Version Path
trackler-2.2.1.159 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.158 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.157 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.156 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.155 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.154 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.153 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.152 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.151 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.150 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.149 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.148 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.147 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.146 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.145 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.144 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.143 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.142 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.141 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb
trackler-2.2.1.140 tracks/ruby/exercises/complex-numbers/.meta/solutions/complex_numbers.rb