My thanks to the following people, without whom primecount wouldn’t be what it is today. (Please let me know if I’ve mistakenly omitted anyone.)
David Baugh
David was the most extensive user of primecount during early development. He reported numerous bugs and suggested a lot of useful features e.g. backup functionality & standalone flags for all deleglise-rivat formulas. David also broke many world records using primecount e.g. A006880, A006988, A122121, A040014.
Dana Jacobsen
Dana explained to me in great detail the optimizations used in his phi(x, a) implementation and also the implementation of the inverse logarithmic integral using Newton’s method.
Curtis Seizert
Curtis partially implemented Xavier Gourdon’s combinatorial prime counting algorithm and wrote a paper comparing the Deleglise-Rivat algorithm, Tomás Oliveira e Silva’s version of the Deleglise-Rivat algorithm and Gourdon’s algorithm. This improved my understanding of Gourdon’s algorithm.
Douglas Staple
After computing pi(10^26) using his own program Douglas Staple published a paper with his improvements to the Deleglise-Rivat algorithm. I use Douglas Staple’s improvements for the computation of the ordinary leaves and the multi-threading of the hard special leaves.
Christian Bau
Christian Bau wrote the first open source implementation of the extended Meissel-Lehmer prime counting algorithm in 2003. I use Christian’s FactorTable idea to reduce the memory usage and also his fast integer division trick (use 32-bit instead of 64-bit whenever possible).
Dennis Mitchell
Dennis wrote a highly optimized implementation (in 2016) of the meissel prime counting algorithm which was faster than primecount for x <= 1010. Dennis’s implementation replaced integer division by multiplication & bit shifts. After studying his implementation I also implemented this trick in primecount.
ridiculousfish
primecount uses ridiculousfish’s libdivide library to replace integer division by multiplication & bit shifts. This optimization speeds up the computation of the easy special leaves by about 40%. ridiculousfish added a branchfree divider to libdivide specifically for primecount.