class Differential::Calculator::Totals

Value object that can capture basic calculations:

Constants

DIGITS

Attributes

a_sigma[R]
a_size[R]
b_sigma[R]
b_size[R]

Public Class Methods

new() click to toggle source
# File lib/differential/calculator/totals.rb, line 26
def initialize
  @a_sigma = BigDecimal(0, DIGITS)
  @a_size  = 0
  @b_sigma = BigDecimal(0, DIGITS)
  @b_size  = 0
end

Public Instance Methods

add(value, side) click to toggle source
# File lib/differential/calculator/totals.rb, line 37
def add(value, side)
  increment_sigma(value, side)
  increment_size(side)
end
delta() click to toggle source
# File lib/differential/calculator/totals.rb, line 33
def delta
  b_sigma - a_sigma
end

Private Instance Methods

increment_sigma(value, side) click to toggle source
# File lib/differential/calculator/totals.rb, line 44
def increment_sigma(value, side)
  case side
  when A
    @a_sigma += value
  when B
    @b_sigma += value
  else
    raise ArgumentError, "unknown side: #{side}"
  end

  nil
end
increment_size(side) click to toggle source
# File lib/differential/calculator/totals.rb, line 57
def increment_size(side)
  case side
  when A
    @a_size += 1.0
  when B
    @b_size += 1.0
  else
    raise ArgumentError, "unknown side: #{side}"
  end

  nil
end