🚧 Work in progress 🚧
- No additional dependencies apart from the standard library.
- Modern C++ (compiles with C++11 / C++14 / C++17).
- No special compiling or linking required. Simply download the single header file, include it in your code, and compile however you would.
-
Download the single-include header file to a location under your include path. Then
#include
it in your code:#include "BigInt.hpp" // the actual path may vary
-
Create objects of the
BigInt
class, and do what you got to do!BigInt num1, num2; num1 = 1234567890; num2 = "9876543210123456789098765432101234567890"; std::cout << num1 * num2 * 123456 << "\n"; // Output: 1505331490682966620443288524512589666204282352096057600
To get started, download a minimalistic project with the above example from the [release section][release_link].
All binary operators can have either an integer (upto signed long long int
),
a string (std::string
or a string literal), or another BigInt
as the second operand.
-
my_big_int = 1234567890; my_big_int = "123456789012345678901234567890"; my_big_int = other_big_int;
-
my_big_int = +other_big_int; // doesn't return the absolute value my_big_int = -other_big_int;
-
big_int_1 = big_int_2 + 1234567890; big_int_1 = big_int_2 - "123456789012345678901234567890"; big_int_1 = big_int_2 * big_int_3; big_int_1 = big_int_2 / 1234567890; big_int_1 = big_int_2 % "123456789012345678901234567890";
-
big_int_1 += big_int_2; big_int_1 -= 1234567890; big_int_1 *= "123456789012345678901234567890"; big_int_1 /= big_int_2; big_int_1 %= 1234567890;
-
some_big_int = ++my_big_int; // pre-increment some_big_int = --my_big_int; // pre-decrement some_big_int = my_big_int++; // post-increment some_big_int = my_big_int--; // post-decrement
-
if (big_int_1 < 1234567890 or big_int_1 > "123456789012345678901234567890" or big_int_1 <= big_int_2 or big_int_1 >= 1234567890 or big_int_1 == "123456789012345678901234567890" or big_int_1 != big_int_3) { ... }
-
std::cout << big_int_1 << ", " << big_int_2 << "\n"; output_file << big_int_1 << ", " << big_int_2 << "\n"; std::cin >> big_int_1 >> big_int_2; input_file >> big_int_1 >> big_int_2;
-
Convert a
BigInt
to either astring
,int
,long
, orlong long
.Note: If the
BigInt
is beyond the range of the target type, an out_of_range exception is thrown.some_str = my_big_int.to_string(); some_int = my_big_int.to_int(); some_long = my_big_int.to_long(); some_long_long = my_big_int.to_long_long();
-
-
Get the absolute value of a
BigInt
.my_big_int = abs(other_big_int);
-
Get a
BigInt
equal to 10x.my_big_int = big_pow10(5000); // my_big_int = 10^5000
-
Since this project is built as a library, there are no source files. However, there are unit tests for each header file that the project is split into.
- To compile the tests, run
make
. - To build and run the tests, run
make test
.
You will need to run make
at least once before you can run make test
.
Please read the contributing guidelines for details on how to contribute to the project.
This project is licensed under the terms of the MIT license.