public static double StandardDeviation(IEnumerable‹double› sequence) { (int Count, double Sum, double SumOfSquares) computation = ComputeSumsAnSumOfSquares(sequence); var variance = computation.SumOfSquares - computation.Sum * computation.Sum / computation.Count; return Math.Sqrt(variance / computation.Count); } private static (int Count, double Sum, double SumOfSquares) ComputeSumsAnSumOfSquares(IEnumerable‹double› sequence) { var computation = (count: 0, sum: 0.0, sumOfSquares: 0.0); foreach (var item in sequence) { computation.count++; computation.sum += item; computation.sumOfSquares += item * item; } return computation; }