mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-05 03:40:01 -06:00
Bumps [github.com/blevesearch/bleve/v2](https://github.com/blevesearch/bleve) from 2.4.4 to 2.5.0. - [Release notes](https://github.com/blevesearch/bleve/releases) - [Commits](https://github.com/blevesearch/bleve/compare/v2.4.4...v2.5.0) --- updated-dependencies: - dependency-name: github.com/blevesearch/bleve/v2 dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
48 lines
672 B
Go
48 lines
672 B
Go
package bitset
|
|
|
|
import "math/bits"
|
|
|
|
func select64(w uint64, j uint) uint {
|
|
seen := 0
|
|
// Divide 64bit
|
|
part := w & 0xFFFFFFFF
|
|
n := uint(bits.OnesCount64(part))
|
|
if n <= j {
|
|
part = w >> 32
|
|
seen += 32
|
|
j -= n
|
|
}
|
|
ww := part
|
|
|
|
// Divide 32bit
|
|
part = ww & 0xFFFF
|
|
|
|
n = uint(bits.OnesCount64(part))
|
|
if n <= j {
|
|
part = ww >> 16
|
|
seen += 16
|
|
j -= n
|
|
}
|
|
ww = part
|
|
|
|
// Divide 16bit
|
|
part = ww & 0xFF
|
|
n = uint(bits.OnesCount64(part))
|
|
if n <= j {
|
|
part = ww >> 8
|
|
seen += 8
|
|
j -= n
|
|
}
|
|
ww = part
|
|
|
|
// Lookup in final byte
|
|
counter := 0
|
|
for ; counter < 8; counter++ {
|
|
j -= uint((ww >> counter) & 1)
|
|
if j+1 == 0 {
|
|
break
|
|
}
|
|
}
|
|
return uint(seen + counter)
|
|
}
|