// Class implementation part of Exercise 31 solution
// (NDE, 2014-02-19)
#include <numeric>
#include <cmath>
#include "dataset.hpp"
using namespace std;
Dataset::Dataset(ifstream& infile)
{
double value;
while (infile >> value) {
data.push_back(value);
}
}
double Dataset::mean() const
{
double sum = accumulate(data.begin(), data.end(), 0.0);
return sum / data.size();
}
double Dataset::stdev() const
{
double m = mean();
double sum = 0.0;
vector<double>::const_iterator i = data.begin();
for (; i != data.end(); ++i) {
double dev = *i - m;
sum += dev*dev;
}
return sqrt(sum / data.size());
}