in aios/autil/autil/FlatHashmap.h [879:1264]
mod_function next_size_over(size_t &size) const {
// prime numbers generated by the following method:
// 1. start with a prime p = 2
// 2. go to wolfram alpha and get p = NextPrime(2 * p)
// 3. repeat 2. until you overflow 64 bits
// you now have large gaps which you would hit if somebody called reserve() with an unlucky number.
// 4. to fill the gaps for every prime p go to wolfram alpha and get ClosestPrime(p * 2^(1/3)) and
// ClosestPrime(p * 2^(2/3)) and put those in the gaps
// 5. get PrevPrime(2^64) and put it at the end
static constexpr const size_t prime_list[] = {2llu,
3llu,
5llu,
7llu,
11llu,
13llu,
17llu,
23llu,
29llu,
37llu,
47llu,
59llu,
73llu,
97llu,
127llu,
151llu,
197llu,
251llu,
313llu,
397llu,
499llu,
631llu,
797llu,
1009llu,
1259llu,
1597llu,
2011llu,
2539llu,
3203llu,
4027llu,
5087llu,
6421llu,
8089llu,
10193llu,
12853llu,
16193llu,
20399llu,
25717llu,
32401llu,
40823llu,
51437llu,
64811llu,
81649llu,
102877llu,
129607llu,
163307llu,
205759llu,
259229llu,
326617llu,
411527llu,
518509llu,
653267llu,
823117llu,
1037059llu,
1306601llu,
1646237llu,
2074129llu,
2613229llu,
3292489llu,
4148279llu,
5226491llu,
6584983llu,
8296553llu,
10453007llu,
13169977llu,
16593127llu,
20906033llu,
26339969llu,
33186281llu,
41812097llu,
52679969llu,
66372617llu,
83624237llu,
105359939llu,
132745199llu,
167248483llu,
210719881llu,
265490441llu,
334496971llu,
421439783llu,
530980861llu,
668993977llu,
842879579llu,
1061961721llu,
1337987929llu,
1685759167llu,
2123923447llu,
2675975881llu,
3371518343llu,
4247846927llu,
5351951779llu,
6743036717llu,
8495693897llu,
10703903591llu,
13486073473llu,
16991387857llu,
21407807219llu,
26972146961llu,
33982775741llu,
42815614441llu,
53944293929llu,
67965551447llu,
85631228929llu,
107888587883llu,
135931102921llu,
171262457903llu,
215777175787llu,
271862205833llu,
342524915839llu,
431554351609llu,
543724411781llu,
685049831731llu,
863108703229llu,
1087448823553llu,
1370099663459llu,
1726217406467llu,
2174897647073llu,
2740199326961llu,
3452434812973llu,
4349795294267llu,
5480398654009llu,
6904869625999llu,
8699590588571llu,
10960797308051llu,
13809739252051llu,
17399181177241llu,
21921594616111llu,
27619478504183llu,
34798362354533llu,
43843189232363llu,
55238957008387llu,
69596724709081llu,
87686378464759llu,
110477914016779llu,
139193449418173llu,
175372756929481llu,
220955828033581llu,
278386898836457llu,
350745513859007llu,
441911656067171llu,
556773797672909llu,
701491027718027llu,
883823312134381llu,
1113547595345903llu,
1402982055436147llu,
1767646624268779llu,
2227095190691797llu,
2805964110872297llu,
3535293248537579llu,
4454190381383713llu,
5611928221744609llu,
7070586497075177llu,
8908380762767489llu,
11223856443489329llu,
14141172994150357llu,
17816761525534927llu,
22447712886978529llu,
28282345988300791llu,
35633523051069991llu,
44895425773957261llu,
56564691976601587llu,
71267046102139967llu,
89790851547914507llu,
113129383953203213llu,
142534092204280003llu,
179581703095829107llu,
226258767906406483llu,
285068184408560057llu,
359163406191658253llu,
452517535812813007llu,
570136368817120201llu,
718326812383316683llu,
905035071625626043llu,
1140272737634240411llu,
1436653624766633509llu,
1810070143251252131llu,
2280545475268481167llu,
2873307249533267101llu,
3620140286502504283llu,
4561090950536962147llu,
5746614499066534157llu,
7240280573005008577llu,
9122181901073924329llu,
11493228998133068689llu,
14480561146010017169llu,
18446744073709551557llu};
static constexpr size_t (*const mod_functions[])(size_t) = {&mod0,
&mod2,
&mod3,
&mod5,
&mod7,
&mod11,
&mod13,
&mod17,
&mod23,
&mod29,
&mod37,
&mod47,
&mod59,
&mod73,
&mod97,
&mod127,
&mod151,
&mod197,
&mod251,
&mod313,
&mod397,
&mod499,
&mod631,
&mod797,
&mod1009,
&mod1259,
&mod1597,
&mod2011,
&mod2539,
&mod3203,
&mod4027,
&mod5087,
&mod6421,
&mod8089,
&mod10193,
&mod12853,
&mod16193,
&mod20399,
&mod25717,
&mod32401,
&mod40823,
&mod51437,
&mod64811,
&mod81649,
&mod102877,
&mod129607,
&mod163307,
&mod205759,
&mod259229,
&mod326617,
&mod411527,
&mod518509,
&mod653267,
&mod823117,
&mod1037059,
&mod1306601,
&mod1646237,
&mod2074129,
&mod2613229,
&mod3292489,
&mod4148279,
&mod5226491,
&mod6584983,
&mod8296553,
&mod10453007,
&mod13169977,
&mod16593127,
&mod20906033,
&mod26339969,
&mod33186281,
&mod41812097,
&mod52679969,
&mod66372617,
&mod83624237,
&mod105359939,
&mod132745199,
&mod167248483,
&mod210719881,
&mod265490441,
&mod334496971,
&mod421439783,
&mod530980861,
&mod668993977,
&mod842879579,
&mod1061961721,
&mod1337987929,
&mod1685759167,
&mod2123923447,
&mod2675975881,
&mod3371518343,
&mod4247846927,
&mod5351951779,
&mod6743036717,
&mod8495693897,
&mod10703903591,
&mod13486073473,
&mod16991387857,
&mod21407807219,
&mod26972146961,
&mod33982775741,
&mod42815614441,
&mod53944293929,
&mod67965551447,
&mod85631228929,
&mod107888587883,
&mod135931102921,
&mod171262457903,
&mod215777175787,
&mod271862205833,
&mod342524915839,
&mod431554351609,
&mod543724411781,
&mod685049831731,
&mod863108703229,
&mod1087448823553,
&mod1370099663459,
&mod1726217406467,
&mod2174897647073,
&mod2740199326961,
&mod3452434812973,
&mod4349795294267,
&mod5480398654009,
&mod6904869625999,
&mod8699590588571,
&mod10960797308051,
&mod13809739252051,
&mod17399181177241,
&mod21921594616111,
&mod27619478504183,
&mod34798362354533,
&mod43843189232363,
&mod55238957008387,
&mod69596724709081,
&mod87686378464759,
&mod110477914016779,
&mod139193449418173,
&mod175372756929481,
&mod220955828033581,
&mod278386898836457,
&mod350745513859007,
&mod441911656067171,
&mod556773797672909,
&mod701491027718027,
&mod883823312134381,
&mod1113547595345903,
&mod1402982055436147,
&mod1767646624268779,
&mod2227095190691797,
&mod2805964110872297,
&mod3535293248537579,
&mod4454190381383713,
&mod5611928221744609,
&mod7070586497075177,
&mod8908380762767489,
&mod11223856443489329,
&mod14141172994150357,
&mod17816761525534927,
&mod22447712886978529,
&mod28282345988300791,
&mod35633523051069991,
&mod44895425773957261,
&mod56564691976601587,
&mod71267046102139967,
&mod89790851547914507,
&mod113129383953203213,
&mod142534092204280003,
&mod179581703095829107,
&mod226258767906406483,
&mod285068184408560057,
&mod359163406191658253,
&mod452517535812813007,
&mod570136368817120201,
&mod718326812383316683,
&mod905035071625626043,
&mod1140272737634240411,
&mod1436653624766633509,
&mod1810070143251252131,
&mod2280545475268481167,
&mod2873307249533267101,
&mod3620140286502504283,
&mod4561090950536962147,
&mod5746614499066534157,
&mod7240280573005008577,
&mod9122181901073924329,
&mod11493228998133068689,
&mod14480561146010017169,
&mod18446744073709551557};
const size_t *found = std::lower_bound(std::begin(prime_list), std::end(prime_list) - 1, size);
size = *found;
return mod_functions[1 + found - prime_list];
}