00001 #include <cmath> 00002 using namespace std; 00003 00004 class Comp { 00005 public: 00006 Comp(double tolerance) : tolerance(tolerance), n(0), sum(0), sum2(0) {} 00007 bool comp(double f1, double f2) { 00008 double diff = f1 - f2; 00009 ++n; 00010 sum += diff; 00011 sum2 += diff * diff; 00012 return (fabs(diff) > tolerance); 00013 } 00014 00015 double mean() {return sum/n;} 00016 double stddev() {return sqrt(sum2/n - mean() * mean());} 00017 bool setTolerance(double tolerance) { 00018 if (n==0) { 00019 this->tolerance = tolerance; 00020 return true; 00021 } 00022 return false; 00023 } 00024 00025 private: 00026 double tolerance; 00027 int n; 00028 double sum; 00029 double sum2; 00030 };