Class: Spreadshit::Functions
- Inherits:
-
Object
- Object
- Spreadshit::Functions
- Defined in:
- lib/spreadshit/functions.rb
Instance Method Summary collapse
- #average(*args) ⇒ Object
- #count(*args) ⇒ Object
- #date(year, month, date) ⇒ Object
- #divide(left, right) ⇒ Object
- #ln(number) ⇒ Object
- #sqrt(number) ⇒ Object
- #stdev(*args) ⇒ Object
- #sum(*args) ⇒ Object
- #var(*args) ⇒ Object
Instance Method Details
#average(*args) ⇒ Object
16 17 18 |
# File 'lib/spreadshit/functions.rb', line 16 def average(*args) to_number(sum(*args) / count(*args).to_f) end |
#count(*args) ⇒ Object
20 21 22 |
# File 'lib/spreadshit/functions.rb', line 20 def count(*args) args.size end |
#date(year, month, date) ⇒ Object
46 47 48 |
# File 'lib/spreadshit/functions.rb', line 46 def date(year, month, date) Date.new(year, month, date) end |
#divide(left, right) ⇒ Object
6 7 8 9 10 |
# File 'lib/spreadshit/functions.rb', line 6 def divide(left, right) right = to_number(right) return Float::NAN if right.zero? to_number(to_number(left) / right.to_f) end |
#ln(number) ⇒ Object
28 29 30 |
# File 'lib/spreadshit/functions.rb', line 28 def ln(number) Math.log to_number(number) end |
#sqrt(number) ⇒ Object
24 25 26 |
# File 'lib/spreadshit/functions.rb', line 24 def sqrt(number) Math.sqrt to_number(number) end |
#stdev(*args) ⇒ Object
42 43 44 |
# File 'lib/spreadshit/functions.rb', line 42 def stdev(*args) sqrt(var(*args)) end |
#sum(*args) ⇒ Object
12 13 14 |
# File 'lib/spreadshit/functions.rb', line 12 def sum(*args) to_number number_list(*args).reduce(:+) end |
#var(*args) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/spreadshit/functions.rb', line 32 def var(*args) mean = average(*args) distance_from_mean = number_list(*args).reduce(0) do |total, value| total + (value - mean) ** 2 end to_number(distance_from_mean / (count(*args) - 1).to_f) end |