| 28 | } |
| 29 | |
| 30 | const std::pair<size_t, double> THistogramPointsAndBins::FindBinAndPartion(const double& percentile) const { |
| 31 | double targetSum = std::accumulate(Bins.begin(), Bins.end(), 0.0) * percentile / 100; |
| 32 | double currentSum = 0.0; |
| 33 | |
| 34 | for (size_t i = 0; i < Bins.size(); ++i) { |
| 35 | currentSum += Bins[i]; |
| 36 | if (currentSum >= targetSum) { |
| 37 | return {i, 1.0 - (currentSum - targetSum) / Bins[i]}; |
| 38 | } |
| 39 | } |
| 40 | return {Bins.size() - 1, 1.0}; |
| 41 | } |
| 42 | |
| 43 | bool THistogramPointsAndBins::IsEqual(const THistogramPointsAndBins& secondOperand, const double eps) const { |
| 44 | if (Points.size() != secondOperand.GetPoints().size() || Bins.size() != secondOperand.GetBins().size()) { |
no test coverage detected