| 1355 | } |
| 1356 | |
| 1357 | float LeftBorder(const TMaybe<TVector<float>>& initialBorders) const { |
| 1358 | Y_ASSERT(BinStart < BinEnd); |
| 1359 | if (IsFirst()) { |
| 1360 | return *FeaturesStart; |
| 1361 | } |
| 1362 | if (initialBorders) { |
| 1363 | const auto possibleBorder = UpperBound(initialBorders->begin(), initialBorders->end(), (*(FeaturesStart + BinStart - 1))); |
| 1364 | if (possibleBorder != initialBorders->end() && (*possibleBorder) <= (*(FeaturesStart + BinStart))) { |
| 1365 | return (*possibleBorder); |
| 1366 | } |
| 1367 | } |
| 1368 | float borderValue = 0.5f * (*(FeaturesStart + BinStart - 1)); |
| 1369 | borderValue += 0.5f * (*(FeaturesStart + BinStart)); |
| 1370 | return borderValue; |
| 1371 | } |
| 1372 | |
| 1373 | bool IsFirst() const { |
| 1374 | return BinStart == 0; |
no test coverage detected