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) / 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