diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /media/webrtc/signaling/src/media-conduit/RunningStat.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'media/webrtc/signaling/src/media-conduit/RunningStat.h')
-rw-r--r-- | media/webrtc/signaling/src/media-conduit/RunningStat.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/media/webrtc/signaling/src/media-conduit/RunningStat.h b/media/webrtc/signaling/src/media-conduit/RunningStat.h new file mode 100644 index 000000000..1d0cdbeca --- /dev/null +++ b/media/webrtc/signaling/src/media-conduit/RunningStat.h @@ -0,0 +1,66 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +/* Adapted from "Accurately computing running variance - John D. Cook" + http://www.johndcook.com/standard_deviation.html */ + +#ifndef RUNNING_STAT_H_ +#define RUNNING_STAT_H_ +#include <math.h> + +namespace mozilla { + +class RunningStat +{ +public: + RunningStat() : mN(0) {} + + void Clear() + { + mN = 0; + } + + void Push(double x) + { + mN++; + + // See Knuth TAOCP vol 2, 3rd edition, page 232 + if (mN == 1) + { + mOldM = mNewM = x; + mOldS = 0.0; + } else { + mNewM = mOldM + (x - mOldM) / mN; + mNewS = mOldS + (x - mOldM) * (x - mNewM); + + // set up for next iteration + mOldM = mNewM; + mOldS = mNewS; + } + } + + int NumDataValues() const + { + return mN; + } + + double Mean() const + { + return (mN > 0) ? mNewM : 0.0; + } + + double Variance() const + { + return (mN > 1) ? mNewS / (mN - 1) : 0.0; + } + + double StandardDeviation() const + { + return sqrt(Variance()); + } + +private: + int mN; + double mOldM, mNewM, mOldS, mNewS; +}; +} +#endif //RUNNING_STAT_H_ |