๐ง 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 big1 = 1234567890, big2; big2 = "9876543210123456789098765432101234567890"; std::cout << big1 * big2 * 123456 << "\n"; // Output: 1505331490682966620443288524512589666204282352096057600
-
The second operand can either be a
BigInt
, an integer (up tolong long
) or a string (std::string
or a string literal).big1 = 1234567890; big1 = "123456789012345678901234567890"; big1 = big2;
-
big1 = +big2; // doesn't return the absolute value big1 = -big2;
-
One of the operands has to be a
BigInt
and the other can be aBigInt
, an integer (up tolong long
) or a string (std::string
or a string literal).big1 = big2 + 1234567890; big1 = big2 - "123456789012345678901234567890"; big1 = big2 * big3; big1 = 1234567890 / big2; big1 = "123456789012345678901234567890" % big2;
-
The second operand can either be a
BigInt
, an integer (up tolong long
) or a string (std::string
or a string literal).big1 += big2; big1 -= 1234567890; big1 *= "123456789012345678901234567890"; big1 /= big2; big1 %= 1234567890;
-
big1 = ++big2; // pre-increment big1 = --big2; // pre-decrement big1 = big2++; // post-increment big1 = big2--; // post-decrement
-
One of the operands has to be a
BigInt
and the other can be aBigInt
, an integer (up tolong long
) or a string (std::string
or a string literal).if (big1 < 1234567890 or big1 > "123456789012345678901234567890" or big1 <= big2 or 1234567890 >= big1 or "123456789012345678901234567890" == big1 or big1 != big3) { ... }
-
std::cout << big1 << ", " << big2 << "\n"; output_file << big1 << ", " << big2 << "\n"; std::cin >> big1 >> big2; input_file >> big1 >> big2;
-
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 = big1.to_string(); some_int = big1.to_int(); some_long = big1.to_long(); some_long_long = big1.to_long_long();
-
-
Get the absolute value of a
BigInt
.big1 = abs(big2);
-
Get a
BigInt
equal to 10x.big1 = big_pow10(5000); // big1 = 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.