Deprecated alternate name
Deprecated alternate name
Simple helper for rounding-up integer-division
Simple helper for rounding-up integer-division
Divide [0, maxDepth] into N geometrically-evenly-spaced steps (of size ≈maxDepth^(1/N)).
Divide [0, maxDepth] into N geometrically-evenly-spaced steps (of size ≈maxDepth^(1/N)).
Until the k-th step is bigger than k, the whole number k is used in its stead.
Produce a set of "round numbers" between 0 and a provided N, inclusive.
Produce a set of "round numbers" between 0 and a provided N, inclusive.
Coverage is relatively dense but the total number of sampled/returned integers is still O(log(N)) in the input N; specifically, 35 integers are returned in each factor-of-10 window (detailed below).
The absolute difference between consecutive integers is non-decreasing over the entire range and, (after the [0,10] interval), no two consecutive integers returned are more than 10% different from one another.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, base case: include all of [0, 10]. 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, step by one from 10% to 20% of the next power of 10 (100 here). 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, step by two from 20% to 50% of the next power of 10. 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, step by five from 50% to 100% of the next power of 10.
…then repeat the [10, 95] portion, multiplied by powers of 10:
100, 110, 120, 130, 140, 150, 160, 170, 180, 190, this is 10x the "steps by one" section above. 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, likewise, 10x the "steps by two" from above.
…etc.