static AverageAndStandardDeviation averageAndStandardDeviation(double... a) { new averageAndStandardDeviation out; if (empty(a)) ret out; double avg = doubleAverage(a); double sum = 0; for i over a: sum += sqr(a[i]-avg); out.avg = avg; out.standardDeviation = sqrt(sum/l(a)); ret out; } static double standardDeviation(Collection a) { if (empty(a)) ret 0; double avg = doubleAverage(a), sum = 0; for (double d : a) sum += sqr(d-avg); ret sqrt(sum/l(a)); }