File generation with SBT
11 years ago

public class StandardDeviation {
private double sumXis = Double.NaN, sumXis2 = Double.NaN;
private double n = Double.NaN;
private double stdev2 = Double.NaN;
private double result = Double.NaN;
public StandardDeviation() {
}
public double stdDev(final double[] xs) {
final int length = xs.length;
n = length;
double sdx1 = 0.0;
double sdx2 = 0.0;
for(int i = 0; i < length; i++) {
sdx1 += xs[i] * xs[i];
sdx2 += xs[i];
}
sumXis = sdx2;
sumXis2 = sdx1;
sdx2 = sdx2 * sdx2;
final double std2 = (length * sdx1 - sdx2) / (length * (length-1));
stdev2 = std2;
final double std = Math.sqrt(std2);
result = std;
return std;
}
public double stdDev(final double xs) {
final double stdev2n1 = (n * (n - 1.0) * stdev2 + n * xs * xs + sumXis2 - 2 * xs * sumXis)
/ (n * (n + 1));
sumXis += xs;
sumXis2 += xs * xs;
stdev2 = stdev2n1;
n += 1;
final double result = Math.sqrt(stdev2n1);
this.result = result;
return result;
}
public double getResult() {
return result;
}
}
.gif)