```
floor(ceil(2^k / d) * n / 2^k) = floor((2^k + r) / d * n / 2^k)
```
RHS = `floor(ceil(2^k / d) * n / 2^k)`
RHS = `floor((floor(2^k / d)+1) * n / 2^k)`
* While `2^k` can be divided by d with no remender it is equal to LHS
RHS = `floor((floor(2^k / d)) * n / 2^k + n/2^k)`
* `RHS=floor((2^k + r) / d * n / 2^k + n/2^k)`
* `RHS=floor((2^k) / d * n / 2^k+ r / d * n / 2^k + n/2^k)`
* `RHS=n/d+floor(((r / d) +1) * n / 2^k)`
RHS = `n/d+floor(n/2^k)`
refer to [jemalloc/internal/div.h](https://github.com/jemalloc/jemalloc/blob/dev/include/jemalloc/internal/div.h)
* We bound n < 2^32, and don't support dividing by one.
RHS = `n/d`
LHS = `floor((2^k + r) / d * n / 2^k)`
LHS = `floor(floor((2^k) / d) * n / 2^k)`
LHS = `n/d`