diff options
Diffstat (limited to 'science/omnetpp/files/patch-src-sim-cstat.cc')
-rw-r--r-- | science/omnetpp/files/patch-src-sim-cstat.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/science/omnetpp/files/patch-src-sim-cstat.cc b/science/omnetpp/files/patch-src-sim-cstat.cc new file mode 100644 index 000000000000..554ed4def7d8 --- /dev/null +++ b/science/omnetpp/files/patch-src-sim-cstat.cc @@ -0,0 +1,65 @@ +--- src/sim/cstat.cc 2003-06-25 17:38:24.000000000 +0200 ++++ src/sim/cstat.cc 2004-11-19 12:23:03.000000000 +0100 +@@ -252,8 +252,31 @@ + + void cWeightedStdDev::collect2(double val, double weight) + { +- cStdDev::collect(weight*val); ++ // Lars Westerhoff: collect weight*val*val for sqrsum_samples for variance ++ ++ if (++num_samples <= 0) ++ { ++ // FIXME: num_samples overflow: issue warning and must stop collecting! ++ ev.printf("\a\nWARNING: (%s)%s: observation count overflow!\n\n",className(),fullPath()); ++ } ++ sum_samples+=weight*val; ++ sqrsum_samples+=weight*val*val; + sum_weights += weight; ++ ++ if (num_samples>1) ++ { ++ if (val<min_samples) ++ min_samples=val; ++ else if (val>max_samples) ++ max_samples=val; ++ } ++ else ++ { ++ min_samples=max_samples=val; ++ } ++ ++ if (transientDetectionObject()) td->collect(val); //NL ++ if (accuracyDetectionObject()) ra->collect(val); //NL + } + + void cWeightedStdDev::clearResult() +@@ -264,18 +287,18 @@ + + double cWeightedStdDev::variance() const + { +- throw new cException(this, "variance()/stddev() not implemented"); ++ // Lars Westerhoff + +- // if (sum_weights==0) +- // return 0.0; +- // else +- // { +- // double devsqr = (sqrsum_samples - sum_samples*sum_samples/sum_weights)/(sum_weights-1); +- // if (devsqr<=0) +- // return 0.0; +- // else +- // return devsqr; +- //} ++ if (sum_weights==0) ++ return 0.0; ++ else ++ { ++ double devsqr = (sqrsum_samples - sum_samples*sum_samples/sum_weights)/(sum_weights); // sum_weights-1 ??? ++ if (devsqr<=0) ++ return 0.0; ++ else ++ return devsqr; ++ } + } + + void cWeightedStdDev::saveToFile(FILE *f) const |