Class: Spreadshit::Functions
- Inherits:
-
Object
- Object
- Spreadshit::Functions
- Defined in:
- lib/spreadshit/functions.rb
Instance Method Summary collapse
- #average(*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) / args.size.to_f) end |
#date(year, month, date) ⇒ Object
40 41 42 |
# File 'lib/spreadshit/functions.rb', line 40 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
24 25 26 |
# File 'lib/spreadshit/functions.rb', line 24 def ln(number) Math.log to_number(number) end |
#sqrt(number) ⇒ Object
20 21 22 |
# File 'lib/spreadshit/functions.rb', line 20 def sqrt(number) Math.sqrt to_number(number) end |
#stdev(*args) ⇒ Object
36 37 38 |
# File 'lib/spreadshit/functions.rb', line 36 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 args.flatten.map { |arg| to_number(arg) }.reduce(:+) end |
#var(*args) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/spreadshit/functions.rb', line 28 def var(*args) average = average(*args) args.flatten.map { |arg| to_number(arg) }.reduce(0) do |variance, value| variance + (value - average) ** 2 end end |