(begin, end int64, ikey uint32)
| 276 | } |
| 277 | |
| 278 | func (ra *roaringArray64) binarySearch(begin, end int64, ikey uint32) int { |
| 279 | low := begin |
| 280 | high := end - 1 |
| 281 | for low+16 <= high { |
| 282 | middleIndex := low + (high-low)/2 // avoid overflow |
| 283 | middleValue := ra.keys[middleIndex] |
| 284 | |
| 285 | if middleValue < ikey { |
| 286 | low = middleIndex + 1 |
| 287 | } else if middleValue > ikey { |
| 288 | high = middleIndex - 1 |
| 289 | } else { |
| 290 | return int(middleIndex) |
| 291 | } |
| 292 | } |
| 293 | for ; low <= high; low++ { |
| 294 | val := ra.keys[low] |
| 295 | if val >= ikey { |
| 296 | if val == ikey { |
| 297 | return int(low) |
| 298 | } |
| 299 | break |
| 300 | } |
| 301 | } |
| 302 | return -int(low + 1) |
| 303 | } |
| 304 | |
| 305 | func (ra *roaringArray64) equals(o interface{}) bool { |
| 306 | srb, ok := o.(roaringArray64) |
no outgoing calls
no test coverage detected