// // // avg, min, max, and sdev from a data file // // #include #include #include #include using namespace std; int main() { vector y; double yy; while (cin>>yy) { y.push_back(yy); while( !cin.eof() && cin.get() != '\n'); } double ymin = 1.E30; double ymax = -ymin; double ym = 0.0; double v = 0.0; double vc = 0.0; int np = y.size(); for ( int i = 0; i < np; i++ ) { ym += y[i]; ymin = y[i] < ymin ? y[i] : ymin ; ymax = y[i] > ymax ? y[i] : ymax ; } ym /= np; /* variance using correction term to reduce roundoff (see Numerical Recipes) */ for ( int i = 0; i < np; i++ ) { double t = y[i] - ym; v += t*t; } for ( int i = 0; i < np; i++ ) { double t = y[i] - ym; vc += t; } vc = vc * vc / np; v = (v - vc)/(np-1); double sdev = sqrt( v ); cout << " mean: " << setw(16) << setprecision(12) << ym << " /" << " min: " << setw(16) << setprecision(12) << ymin << " /" << " max: " << setw(16) << setprecision(12) << ymax << " /" << " sdev: " << setw(16) << setprecision(12) << sdev << endl; return 0; }