Class: Spreadshit::Functions

Inherits:
Object
  • Object
show all
Defined in:
lib/spreadshit/functions.rb

Instance Method Summary collapse

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