Today's $32$-bit processors can efficiently calculate with integers $<2^{32}$. They add/subtract in about 1 instruction cycle, multiply in about 10 cycles, and divide in about 40 cycles. (Numbers are approximate and vary between vendors and hardware configurations.)

To beat the hardware limit, one either uses special representations tailored to the problem at hand, or simply uses a software library that implements multiprecision integers. (Such integers have in the past also been called "large integers" or "big integers".)

Here is a (partial) list of existing multiprecision integer packages with comments. Please notify me with corrections and additions. For information on writing your own multiprecision integer package, see the bottom of the list. The list was last updated June 2001.

- libI by Ralf Dentzer in Germany
- Integer-2.1.3 Probably same as above, the "latest" version (1993), from ftp://ftp.iwr.uni-heidelberg.de. Here is a related e-mail .
- CLN (Class Library for Numbers) by Bruno Haible. The home page appears to be: CLN homepage. This is a C++ wrapper around GMP, but quite a fancy one at that!
- Victor Shoup's NTL, both a standalone C++ package and a C++ wrapper around GMP.
- Complete information about GMP, the GNU MultiPrecision package, is available in the GMP Manual, and the package can be downloaded from ftp://ftp.gnu.org.
- freelip_1.0.tar.gz by Lenstra, or freelip_1.1.tar.gz by Lenstra/Leyland. The maintainer is now Paul Leyland, and the primary repository supposedly is: freelip repository.
- There are some notes on special-purpose computations on Carey Bloodworth's pages.
- Implementing a multiprecision integer package was the case study for the College Board's Advanced Placement exam in computer science for 1999 and 2000. Their material is available from here. Note that their implementation is inefficient and incomplete. Their focus was on the C++ class structure. They use decimal representation, calculate with a single digit at a time, and do not implement division.

Remark: It would be nice if there were a single top-notch publically-maintained multiprecision integer package with a standardized interface having a runtime self-configuration that adjusts parameters and selects appropriate assembly code to achieve maximum performance on the given processor. The set of hardware/parameter combinations could be reduced (possibly to a singleton) at compile time, with a runtime default, but optionally allowing the final selection to be determined at runtime. Both single and vector-based operations should be supported in the interface, and the vector operations should maximize hardware pipelining. At the lowest level there should be maximally efficient support for both fixed-size and variable-size integers, at the higher levels supporting aliasing and other stuff (perhaps signs, perhaps rational numbers or floating point, perhaps operations beyond arithmetic). Beyond that, there should be super-high-level C++ wrappers giving access to both the low-level and intermediate level. For example, C++ templates are appropriate for accessing the fixed-size lowlevel stuff. Of existing package, GNU GMP comes closest to all this, but in many ways is far away. Of course, I'm not complaining, just recording my ideas, realizing that the impetus is on me to implement this if I want to see it done!