96 mMin = std::min( mMin, value );
97 mMax = std::max( mMax, value );
100 if ( mRequiresHisto )
101 mValueCount.insert( value, mValueCount.value( value, 0 ) + 1 );
103 if ( mRequiresAllValueStorage )
126 mFirst = std::numeric_limits<double>::quiet_NaN();
127 mLast = std::numeric_limits<double>::quiet_NaN();
128 mMin = std::numeric_limits<double>::quiet_NaN();
129 mMax = std::numeric_limits<double>::quiet_NaN();
130 mMean = std::numeric_limits<double>::quiet_NaN();
131 mMedian = std::numeric_limits<double>::quiet_NaN();
132 mStdev = std::numeric_limits<double>::quiet_NaN();
133 mSampleStdev = std::numeric_limits<double>::quiet_NaN();
134 mMinority = std::numeric_limits<double>::quiet_NaN();
135 mMajority = std::numeric_limits<double>::quiet_NaN();
136 mFirstQuartile = std::numeric_limits<double>::quiet_NaN();
137 mThirdQuartile = std::numeric_limits<double>::quiet_NaN();
141 mMean = mSum / mCount;
145 double sumSquared = 0;
146 const auto constMValues = mValues;
147 for (
const double value : constMValues )
149 const double diff = value - mMean;
150 sumSquared += diff * diff;
152 mStdev = std::pow( sumSquared / mValues.count(), 0.5 );
153 mSampleStdev = std::pow( sumSquared / ( mValues.count() - 1 ), 0.5 );
161 std::sort( mValues.begin(), mValues.end() );
162 const bool even = ( mCount % 2 ) < 1;
165 mMedian = ( mValues[mCount / 2 - 1] + mValues[mCount / 2] ) / 2.0;
169 mMedian = mValues[( mCount + 1 ) / 2 - 1];
176 if ( ( mCount % 2 ) < 1 )
178 const int halfCount = mCount / 2;
179 const bool even = ( halfCount % 2 ) < 1;
182 mFirstQuartile = ( mValues[halfCount / 2 - 1] + mValues[halfCount / 2] ) / 2.0;
186 mFirstQuartile = mValues[( halfCount + 1 ) / 2 - 1];
191 const int halfCount = mCount / 2 + 1;
192 const bool even = ( halfCount % 2 ) < 1;
195 mFirstQuartile = ( mValues[halfCount / 2 - 1] + mValues[halfCount / 2] ) / 2.0;
199 mFirstQuartile = mValues[( halfCount + 1 ) / 2 - 1];
207 if ( ( mCount % 2 ) < 1 )
209 const int halfCount = mCount / 2;
210 const bool even = ( halfCount % 2 ) < 1;
213 mThirdQuartile = ( mValues[ halfCount + halfCount / 2 - 1] + mValues[ halfCount + halfCount / 2] ) / 2.0;
217 mThirdQuartile = mValues[( halfCount + 1 ) / 2 - 1 + halfCount ];
222 const int halfCount = mCount / 2 + 1;
223 const bool even = ( halfCount % 2 ) < 1;
226 mThirdQuartile = ( mValues[ halfCount + halfCount / 2 - 2 ] + mValues[ halfCount + halfCount / 2 - 1 ] ) / 2.0;
230 mThirdQuartile = mValues[( halfCount + 1 ) / 2 - 2 + halfCount ];
237 QList<int> valueCounts = mValueCount.values();
241 mMinority = mValueCount.key( *std::min_element( valueCounts.begin(), valueCounts.end() ) );
245 mMajority = mValueCount.key( *std::max_element( valueCounts.begin(), valueCounts.end() ) );