References

The following books, papers, and specifications inform the algorithms and interfaces used in the library:

  • Donald E. Knuth, The Art of Computer Programming Volume 2: Seminumerical Algorithms, 3rd edition, 1998, Section 4.3.1 Algorithm D (the multiprecision division used for divisors of two or more words).

  • Henry S. Warren Jr., Hacker’s Delight, 2nd edition, 2013 (bit-manipulation algorithms: leading and trailing zero counts, population count, rounding to powers of two, and the divlu long division of a two-word dividend).

  • Niels Moller and Torbjorn Granlund, Improved Division by Invariant Integers, IEEE Transactions on Computers, volume 60 number 2, 2011 (the reciprocal based 3 by 2 word division step used at run time for two-word divisors).

  • ISO/IEC, Programming Languages - C++ (the <bit>, <numeric>, <charconv>, and <format> interfaces mirrored by this library).

  • ISO/IEC 9899:2024 (C23), Programming Languages - C (the <stdckdint.h> checked-integer interface mirrored by ckd_add, ckd_sub, and ckd_mul).

  • Jan Schultke, P3724, Integer division (the rounding modes and the div_result interface mirrored by the div_* family).