82 lines
3.6 KiB
Plaintext
82 lines
3.6 KiB
Plaintext
|
|
||
|
Note by Clifford Wolf:
|
||
|
This version of bigint was downloaded at 2012-08-29 from
|
||
|
https://mattmccutchen.net/bigint/bigint-2010.04.30.tar.bz2
|
||
|
|
||
|
Some minor changes were made to the source code (e.g. "using"
|
||
|
was added to access declarations to prohibit compiler warnings).
|
||
|
|
||
|
|
||
|
==============================================================================
|
||
|
|
||
|
C++ Big Integer Library
|
||
|
(see ChangeLog for version)
|
||
|
|
||
|
http://mattmccutchen.net/bigint/
|
||
|
|
||
|
Written and maintained by Matt McCutchen <matt@mattmccutchen.net>
|
||
|
|
||
|
You can use this library in a C++ program to do arithmetic on integers of size
|
||
|
limited only by your computer's memory. The library provides BigUnsigned and
|
||
|
BigInteger classes that represent nonnegative integers and signed integers,
|
||
|
respectively. Most of the C++ arithmetic operators are overloaded for these
|
||
|
classes, so big-integer calculations are as easy as:
|
||
|
|
||
|
#include "BigIntegerLibrary.hh"
|
||
|
|
||
|
BigInteger a = 65536;
|
||
|
cout << (a * a * a * a * a * a * a * a);
|
||
|
|
||
|
(prints 340282366920938463463374607431768211456)
|
||
|
|
||
|
The code in `sample.cc' demonstrates the most important features of the library.
|
||
|
To get started quickly, read the code and explanations in that file and run it.
|
||
|
If you want more detail or a feature not shown in `sample.cc', consult the
|
||
|
consult the actual header and source files, which are thoroughly commented.
|
||
|
|
||
|
This library emphasizes ease of use and clarity of implementation over speed;
|
||
|
some users will prefer GMP (http://swox.com/gmp/), which is faster. The code is
|
||
|
intended to be reasonably portable across computers and modern C++ compilers; in
|
||
|
particular, it uses whatever word size the computer provides (32-bit, 64-bit, or
|
||
|
otherwise).
|
||
|
|
||
|
Compiling programs that use the library
|
||
|
---------------------------------------
|
||
|
The library consists of a folder full of C++ header files (`.hh') and source
|
||
|
files (`.cc'). Your own programs should `#include' the necessary header files
|
||
|
and link with the source files. A makefile that builds the sample program
|
||
|
(`sample.cc') is included; you can adapt it to replace the sample with your own
|
||
|
program.
|
||
|
|
||
|
Alternatively, you can use your own build system or IDE. In that case, you must
|
||
|
put the library header files where the compiler will find them and arrange to
|
||
|
have your program linked with the library source files; otherwise, you will get
|
||
|
errors about missing header files or "undefined references". To learn how to do
|
||
|
this, consult the documentation for the build system or IDE; don't bother asking
|
||
|
me. Adding all the library files to your project will work in many IDEs but may
|
||
|
not be the most desirable approach.
|
||
|
|
||
|
Resources
|
||
|
---------
|
||
|
The library's Web site (above) provides links to released versions, the current
|
||
|
development version, and a mailing list for release announcements, questions,
|
||
|
bug reports, and other discussion of the library. I would be delighted to hear
|
||
|
from you if you like this library and/or find a good use for it.
|
||
|
|
||
|
Bugs and enhancements
|
||
|
---------------------
|
||
|
The library has been tested by me and others but is by no means bug-free. If
|
||
|
you find a bug, please report it, whether it comes in the form of compiling
|
||
|
trouble, a mathematically inaccurate result, or a memory-management blooper
|
||
|
(since I use Java, these are altogether too common in my C++). I generally fix
|
||
|
all reported bugs. You are also welcome to request enhancements, but I am
|
||
|
unlikely to do substantial amounts of work on enhancements at this point.
|
||
|
|
||
|
Legal
|
||
|
-----
|
||
|
I, Matt McCutchen, the sole author of the original Big Integer Library, waive my
|
||
|
copyright to it, placing it in the public domain. The library comes with
|
||
|
absolutely no warranty.
|
||
|
|
||
|
~~~~
|