# Standard Deviation LINQ extension method (with overloads)

```public static class Extensions
{
public static double StdDevP(this IEnumerable<int> source)
{
return StdDevLogic(source, 0);
}

public static double StdDevP(this IEnumerable<double> source)
{
return StdDevLogic(source, 0);
}

public static double StdDevP(this IEnumerable<float> source)
{
return StdDevLogic(source, 0);
}

public static double StdDev(this IEnumerable<int> source)
{
return StdDevLogic(source);
}

public static double StdDev(this IEnumerable<double> source)
{
return StdDevLogic(source);
}

public static float StdDev(this IEnumerable<float> source)
{
return StdDevLogic(source);
}

private static double StdDevLogic(this IEnumerable<double> source, int buffer = 1)
{
if (source == null)
{ throw new ArgumentNullException("source"); }

var data = source.ToList();
var average = data.Average();
var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
return Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
}

private static double StdDevLogic(this IEnumerable<int> source, int buffer = 1)
{
return StdDevLogic(source.Select(x => (double)x));
}

private static float StdDevLogic(this IEnumerable<float> source, int buffer = 1)
{
if (source == null)
{ throw new ArgumentNullException("source"); }
var data = source.ToList();
var average = data.Average();
var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
return (float)Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
}
}```
Example:
```var nums1 = new[] { 11, 12, 13, 12, 13, 15, 12, 14, 15, 15, 12, 14, 15 };
//Prints out the standard deviation of the entire data set (population)
Console.WriteLine(nums1.StdDevP());
//Prints out the standard deviation of the entire data set, but makes allowances for missing data points.
Console.WriteLine(nums1.Take(10).StdDev());
var nums2 = new[] { 11.0, 12.0, 13.0, 12.0, 13.0, 15.0, 12.0, 14.0, 15.0, 15.0, 12.0, 14.0, 15.0 };
//Prints out the standard deviation of the entire data set (population)
Console.WriteLine(nums2.StdDevP());
//Prints out the standard deviation of the entire data set, but makes allowances for missing data points.
Console.WriteLine(nums2.Take(10).StdDev());
var nums3 = new[] { 11.0f, 12.0f, 13.0f, 12.0f, 13.0f, 15.0f, 12.0f, 14.0f, 15.0f, 15.0f, 12.0f, 14.0f, 15.0f };
//Prints out the standard deviation of the entire data set (population)
Console.WriteLine(nums3.StdDevP());
//Prints out the standard deviation of the entire data set, but makes allowances for missing data points.
Console.WriteLine(nums3.Take(10).StdDev());```

## Description

Typical standard deviation formula set in LINQ fluent syntax. For when Average, Min, and Max just aren't enough information. Works with int, double, float.

## Details

Double click on the code to select all.

;