New 64 bit cardinality estimation algorithm [1]. This fixes the spike in relative error when switching from linear counting to the HyperLogLog estimation.
Switch from 32 bit MurmurHash3 to 64 bit MurmurHash64A. Since 64 bits naturally supports much larger cardinalities large range correction is no longer necessary.
More efficiently store registers by using a combination of sparse and dense representations
Sparse representation stores only non-zero registers and is used when most of the registers are zero
Dense representation stores individual registers using 6 bits
Improved method for counting the number of leading zeroes
Deprecate the following methods: registers(), set_register(), set_registers(), murmur2_hash()
Added hash() for getting a MurmurHash64A hash
Added _get_register() to access individual registers
This introduces many changes:
registers()
,set_register()
,set_registers()
,murmur2_hash()
hash()
for getting a MurmurHash64A hash_get_register()
to access individual registerscardinality()
to integer[1] https://arxiv.org/abs/1702.01284