package hyperloglog import ( "math" "math/bits" metro "github.com/dgryski/go-metro" ) var hash = hashFunc func alpha(m float64) float64 { switch m { case 16: return 0.673 case 32: return 0.697 case 64: return 0.709 } return 0.7213 / (1 + 1.079/m) } func getPosVal(x uint64, p uint8) (uint64, uint8) { i := bextr(x, 64-p, p) // {x63,...,x64-p} w := x<
> start) & ((1 << length) - 1) } func bextr32(v uint32, start, length uint8) uint32 { return (v >> start) & ((1 << length) - 1) } func hashFunc(e []byte) uint64 { return metro.Hash64(e, 1337) }