Complete HyperLogLog++ Implementation
Written in D to use in C and other languages.
import hll;
// creates HLL++ counter with maximal allowed precision (18)
auto counter = HLL(18); // allocated size is less or equal to 2 ^^ (18 - 3) * 6 / 1024 = 192 KB
/// loop
counter.put(anArrayOrString);
// or
//counter.put(anUlong);
//counter.put(anUUID);
ulong count = counter.count;
BetterC mode allows to use D libraries without DRuntime and Phobos.
hll-d has C API. C/C++ headers can be found at the include/ directory.
git clone https://github.com/tamediadigital/hll-d
cd hll-d
dub build --build=betterC --config=static --compiler=ldc2 --force
gcc examples/example.c -Iinclude libhll-d.a
./a.out < examples/input.txt