...

Source file src/github.com/bits-and-blooms/bitset/popcnt_19.go

Documentation: github.com/bits-and-blooms/bitset

     1  // +build go1.9
     2  
     3  package bitset
     4  
     5  import "math/bits"
     6  
     7  func popcntSlice(s []uint64) uint64 {
     8  	var cnt int
     9  	for _, x := range s {
    10  		cnt += bits.OnesCount64(x)
    11  	}
    12  	return uint64(cnt)
    13  }
    14  
    15  func popcntMaskSlice(s, m []uint64) uint64 {
    16  	var cnt int
    17  	for i := range s {
    18  		cnt += bits.OnesCount64(s[i] &^ m[i])
    19  	}
    20  	return uint64(cnt)
    21  }
    22  
    23  func popcntAndSlice(s, m []uint64) uint64 {
    24  	var cnt int
    25  	for i := range s {
    26  		cnt += bits.OnesCount64(s[i] & m[i])
    27  	}
    28  	return uint64(cnt)
    29  }
    30  
    31  func popcntOrSlice(s, m []uint64) uint64 {
    32  	var cnt int
    33  	for i := range s {
    34  		cnt += bits.OnesCount64(s[i] | m[i])
    35  	}
    36  	return uint64(cnt)
    37  }
    38  
    39  func popcntXorSlice(s, m []uint64) uint64 {
    40  	var cnt int
    41  	for i := range s {
    42  		cnt += bits.OnesCount64(s[i] ^ m[i])
    43  	}
    44  	return uint64(cnt)
    45  }
    46  

View as plain text