Comparing Elias-Fano split points

Theirs is from “On Elias-Fano for Rank Queries in FM-Indexes”:

https://helda.helsinki.fi/server/api/core/bitstreams/0643549b-d5f0-44f4-b618-aaf656018583/content

See also: https://observablehq.com/@yurivish/ef-split-points for a JS visualization of some of the discrepancies.

Clear[ef]
ef[numElements_,universeSize_, lowBitsPerElement_]:= (numElements + Floor[universeSize / (2^lowBitsPerElement)]) + numElements * lowBitsPerElement

Clear[mySplitPoint]
mySplitPoint[numElements_,universeSize_]:=If[numElements==0, 0, Floor[Log2[Max[1, universeSize/numElements]]]]

Clear[theirSplitPoint]
theirSplitPoint[numElements_,universeSize_]:=If[numElements==0, 0, Round[Log2[Max[1, universeSize*Log[2]/numElements]]]]

ef[25,51, mySplitPoint[25, 51]]

ef[25,51, theirSplitPoint[25, 51]]

(*
in the paper,

m = u;
n = n;
l = num low bits;
w = Ceiling[Log2[m]];
*)

Binomial[80,8]