Current section

Files

Jump to
rivet_utils lib math.ex
Raw

lib/math.ex

defmodule Rivet.Utils.Math do
@doc """
iex> average([])
0.0
iex> average([30])
30.0
iex> average([30, 32, 20, 18, 23, 26, 27])
25.142857142857142
"""
def average([]), do: 0.0
def average(list),
do: Enum.sum(list) / length(list)
@doc """
iex> stddev([])
0.0
iex> stddev([30])
0.0
iex> stddev([2, 4, 4, 4, 5, 5, 7, 9])
2.0
"""
def stddev(list) do
mean = average(list)
variance =
Enum.map(list, &deviation(&1, mean))
|> average()
Float.pow(variance, 0.5)
end
def deviation(value, mean), do: Float.pow(value - mean, 2)
end