| 1 | |
| 2 | C++ Big Integer Library |
| 3 | (see ChangeLog for version) |
| 4 | |
| 5 | http://mattmccutchen.net/bigint/ |
| 6 | |
| 7 | Written and maintained by Matt McCutchen <matt@mattmccutchen.net> |
| 8 | |
| 9 | You can use this library in a C++ program to do arithmetic on integers of size |
| 10 | limited only by your computer's memory. The library provides BigUnsigned and |
| 11 | BigInteger classes that represent nonnegative integers and signed integers, |
| 12 | respectively. Most of the C++ arithmetic operators are overloaded for these |
| 13 | classes, so big-integer calculations are as easy as: |
| 14 | |
| 15 | #include "BigIntegerLibrary.hh" |
| 16 | |
| 17 | BigInteger a = 65536; |
| 18 | cout << (a * a * a * a * a * a * a * a); |
| 19 | |
| 20 | (prints 340282366920938463463374607431768211456) |
| 21 | |
| 22 | The code in `sample.cc' demonstrates the most important features of the library. |
| 23 | To get started quickly, read the code and explanations in that file and run it. |
| 24 | If you want more detail or a feature not shown in `sample.cc', consult the |
| 25 | consult the actual header and source files, which are thoroughly commented. |
| 26 | |
| 27 | This library emphasizes ease of use and clarity of implementation over speed; |
| 28 | some users will prefer GMP (http://swox.com/gmp/), which is faster. The code is |
| 29 | intended to be reasonably portable across computers and modern C++ compilers; in |
| 30 | particular, it uses whatever word size the computer provides (32-bit, 64-bit, or |
| 31 | otherwise). |
| 32 | |
| 33 | Compiling programs that use the library |
| 34 | --------------------------------------- |
| 35 | The library consists of a folder full of C++ header files (`.hh') and source |
| 36 | files (`.cc'). `#include' header files and compile with source files as |
| 37 | necessary for your own programs. A Makefile is included that compiles the |
| 38 | library source files and the sample program and links them together; you can |
| 39 | easily customize the Makefile to replace the sample with your own program, or |
| 40 | you can write your own Makefile. |
| 41 | |
| 42 | Resources |
| 43 | --------- |
| 44 | The library's Web site (above) provides links to released versions, the current |
| 45 | development version, and a mailing list for release announcements, questions, |
| 46 | bug reports, and other discussion of the library. I would be delighted to hear |
| 47 | from you if you like this library and/or find a good use for it. |
| 48 | |
| 49 | Bugs and enhancements |
| 50 | --------------------- |
| 51 | The library has been tested by me and others but is by no means bug-free. If |
| 52 | you find a bug, please report it, whether it comes in the form of compiling |
| 53 | trouble, a mathematically inaccurate result, or a memory-management blooper |
| 54 | (since I use Java, these are altogether too common in my C++). I generally fix |
| 55 | all reported bugs. You are also welcome to request enhancements, but I am |
| 56 | unlikely to do substantial amounts of work on enhancements at this point. |
| 57 | |
| 58 | Legal |
| 59 | ----- |
| 60 | I, Matt McCutchen, the sole author of the original Big Integer Library, waive my |
| 61 | copyright to it, placing it in the public domain. The library comes with |
| 62 | absolutely no warranty. |
| 63 | |
| 64 | ~~~~ |