#include // argc is number of parameters, argv are command line options // main is int because of returning error code // The .psv file's first record is the number of variables int main(int argc,char * argv[]) { if (argc<2) cerr << "Usage -- readpsv root" << endl; //uistream uis(argv[1]+adstring(".psv")); uistream uis( (char*)(argv[1]+adstring(".psv")) ); uostream uos( (char*)(adstring("Mean")+argv[1]+adstring(".psv")) ); ofstream ofs( (char*)(argv[1]+adstring(".sum")) ); if (!(uis)) { cerr << "Can't open file" << argv[1]+adstring(".psv") << endl; exit(1); } int nvar, count=0; uis >> nvar; uos << nvar; dvector x(1,nvar), mean(1,nvar), stdev(1,nvar); for (int i=1; i<=nvar; i++) { mean(i)=0; stdev(i)=0; } uis >> x; while (!uis.eof()) { if (!(uis)) { cerr << "Error reading x" << endl; exit(1); break; } cout << setprecision(16) << x << endl; count=count+1; mean=mean+x; stdev=stdev+elem_prod(x,x); uis >> x; } mean=mean/count; uos << mean; stdev=pow( (stdev-count*elem_prod(mean,mean))/(count-1) , 0.5 ); ofs << "Means" << setprecision(8) << mean << endl; ofs << "Std devs" << setprecision(8) << stdev << endl; ofs << "Number of samples " << count << endl; exit(0); }