class FinancialMath::GeometricProgression
Attributes
initial_value[R]
ratio[R]
times[R]
Public Class Methods
new(args)
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 5 def initialize(args) @initial_value = args.fetch(:initial_value, 1) @ratio = args.fetch(:ratio, 0) @times = args.fetch(:times, 1) end
Public Instance Methods
infinite_decreasing_sum()
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 25 def infinite_decreasing_sum initial_value / (1 - ratio) end
last_item()
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 11 def last_item (initial_value * ratio**(times - 1)).round(2) end
sum()
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 15 def sum if ratio > 1 growing_progression elsif ratio < 1 decreasing_progression elsif ratio == 1 raise ZeroDivisionError, "ratio can't be equal to one" end end
Private Instance Methods
decreasing_progression()
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 35 def decreasing_progression (initial_value * (1.0 - ratio**times) / (1.0 - ratio)).round(2) end
growing_progression()
click to toggle source
# File lib/financial_math/geometric_progression.rb, line 31 def growing_progression (initial_value * (ratio**times - 1.0) / (ratio - 1.0)).round(2) end