class DualNumber
Constants
- VERSION
Attributes
dual[RW]
real[RW]
Public Class Methods
new(real:, dual:)
click to toggle source
# File lib/dual_number.rb, line 5 def initialize(real:, dual:) self.real = real self.dual = dual end
Public Instance Methods
*(argument)
click to toggle source
# File lib/dual_number.rb, line 38 def *(argument) with_dual_number(argument) do |other| DualNumber.new \ real: real * other.real, dual: real * other.dual + dual * other.real end end
**(power)
click to toggle source
# File lib/dual_number.rb, line 58 def **(power) DualNumber.new \ real: real ** power, dual: power * dual * (real ** (power - 1)) end
+(argument)
click to toggle source
# File lib/dual_number.rb, line 22 def +(argument) with_dual_number(argument) do |other| DualNumber.new \ real: real + other.real, dual: dual + other.dual end end
-(argument)
click to toggle source
# File lib/dual_number.rb, line 30 def -(argument) with_dual_number(argument) do |other| DualNumber.new \ real: real - other.real, dual: dual - other.dual end end
-@()
click to toggle source
# File lib/dual_number.rb, line 54 def -@ self * -1 end
/(argument)
click to toggle source
# File lib/dual_number.rb, line 46 def /(argument) with_dual_number(argument) do |other| DualNumber.new \ real: real / other.real, dual: (dual * other.real - real * other.dual) / (other.real * other.real) end end
==(other)
click to toggle source
# File lib/dual_number.rb, line 18 def ==(other) other.instance_of?(DualNumber) && [real, dual] == [other.real, other.dual] end
coerce(other)
click to toggle source
# File lib/dual_number.rb, line 64 def coerce(other) [DualNumber(other), self] end
inspect()
click to toggle source
# File lib/dual_number.rb, line 14 def inspect "(#{to_s})" end
to_s()
click to toggle source
# File lib/dual_number.rb, line 10 def to_s [real, (dual < 0 ? '-' : '+'), dual.abs, 'ε'].join end
Private Instance Methods
with_dual_number(argument) { |DualNumber(argument)| ... }
click to toggle source
# File lib/dual_number.rb, line 70 def with_dual_number(argument) yield DualNumber(argument) end