Example #1
0
            ReturnCode computeMeanSigma(Result &mean, Result &sigma, const Values &values, const Weights &weights)
            {
                MSS_BEGIN(ReturnCode);
                MSS(!values.empty());
                MSS(values.size() == weights.size());

                //Compute mean and the sum of the weights
                mean = 0.0;
                Result sumW = 0.0;
                typename Values::const_iterator value = values.begin();
                for (auto weight: weights)
                {
                    mean += *(value++)*weight;
                    sumW += weight;
                }
                mean /= sumW;

                //Compute sigma
                sigma = 0.0;
                typename Weights::const_iterator weight = weights.begin();
                for (auto value: values)
                    sigma += *(weight++)*(value-mean)*(value-mean);
                sigma = ::sqrt(sigma/sumW);

                MSS_END();
            }
Example #2
0
 ReturnCode computeMean(Mean &mean, const Values &values)
 {
     MSS_BEGIN(ReturnCode);
     MSS(!values.empty());
     mean = 0.0;
     for (auto value: values)
         mean += value;
     mean /= values.size();
     MSS_END();
 }
Example #3
0
 ReturnCode findMinMax(Result &mi, Result &ma, const Values &values)
 {
     MSS_BEGIN(ReturnCode);
     MSS(!values.empty());
     mi = ma = values.front();
     for (auto value: values)
         if (value < mi)
             mi = value;
         else if (value > ma)
             ma = value;
     MSS_END();
 }
Example #4
0
 ReturnCode computeMean(Mean &mean, const Values &values, const Weights &weights)
 {
     MSS_BEGIN(ReturnCode);
     MSS(!values.empty());
     MSS(values.size() == weights.size());
     mean = 0.0;
     Mean sumW = 0.0;
     typename Values::const_iterator value = values.begin();
     for (auto weight: weights)
     {
         mean += *(value++)*weight;
         sumW += weight;
     }
     mean /= sumW;
     MSS_END();
 }