defmodule SD do
  import Enum, only: [map: 2, sum: 1]
  import :math, only: [sqrt: 1, pow: 2]
  def standard_deviation(data) do
    m = mean(data)
    data |> variance(m) |> mean |> sqrt
  end
  def mean(data) do
    sum(data) / length(data)
  end
  def variance(data, mean) do
    for n <- data, do: pow(n - mean, 2)
  end
end
# usage
data = [1,2,3,4]
m = SD.mean(data) # => 2.5
sd = SD.standard_deviation(data) # => 1.118033988749895
		
		
	var m = data.Average();
var s = CalculateStdDev(data);
float CalculateStdDev(IEnumerable<float> values)
{
	double ret = 0;
	if (values.Count() > 0)
	{
		double avg = values.Average();
	      	double sum = values.Sum(d => Math.Pow(d - avg, 2));
	      	ret = Math.Sqrt((sum) / values.Count()-1);
	}
	return (float)ret;
}