Commit | Line | Data |
---|---|---|
00c6448a MM |
1 | |
2 | C++ Big Integer Library | |
3 | (see ChangeLog for version) | |
4 | ||
3e132790 | 5 | http://mattmccutchen.net/bigint/ |
00c6448a | 6 | |
3e132790 | 7 | Written and maintained by Matt McCutchen <matt@mattmccutchen.net> |
00c6448a MM |
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 | |
2531c4e3 | 25 | consult the actual header and source files, which are thoroughly commented. |
00c6448a | 26 | |
2531c4e3 MM |
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). | |
3e132790 | 32 | |
00c6448a MM |
33 | Compiling programs that use the library |
34 | --------------------------------------- | |
35 | The library consists of a folder full of C++ header files (`.hh') and source | |
7ff315b8 MM |
36 | files (`.cc'). Your own programs should `#include' the necessary header files |
37 | and link with the source files. A makefile that builds the sample program | |
38 | (`sample.cc') is included; you can adapt it to replace the sample with your own | |
39 | program. | |
40 | ||
41 | Alternatively, you can use your own build system or IDE. In that case, you must | |
42 | put the library header files where the compiler will find them and arrange to | |
43 | have your program linked with the library source files; otherwise, you will get | |
44 | errors about missing header files or "undefined references". To learn how to do | |
45 | this, consult the documentation for the build system or IDE; don't bother asking | |
46 | me. Adding all the library files to your project will work in many IDEs but may | |
47 | not be the most desirable approach. | |
00c6448a | 48 | |
2531c4e3 MM |
49 | Resources |
50 | --------- | |
51 | The library's Web site (above) provides links to released versions, the current | |
52 | development version, and a mailing list for release announcements, questions, | |
53 | bug reports, and other discussion of the library. I would be delighted to hear | |
54 | from you if you like this library and/or find a good use for it. | |
55 | ||
00c6448a MM |
56 | Bugs and enhancements |
57 | --------------------- | |
58 | The library has been tested by me and others but is by no means bug-free. If | |
2531c4e3 MM |
59 | you find a bug, please report it, whether it comes in the form of compiling |
60 | trouble, a mathematically inaccurate result, or a memory-management blooper | |
61 | (since I use Java, these are altogether too common in my C++). I generally fix | |
62 | all reported bugs. You are also welcome to request enhancements, but I am | |
63 | unlikely to do substantial amounts of work on enhancements at this point. | |
00c6448a MM |
64 | |
65 | Legal | |
66 | ----- | |
67 | I, Matt McCutchen, the sole author of the original Big Integer Library, waive my | |
68 | copyright to it, placing it in the public domain. The library comes with | |
69 | absolutely no warranty. | |
70 | ||
71 | ~~~~ |