bigint is a lightweight C++ library for working with large integers and fractions. It is designed with simplicity in mind, requiring only a single header and a single implementation file.
- Supports arbitrarily large integers
- Fractional (rational) number support
- Minimalistic and easy to integrate
- No external dependencies
- 43 functions
Simply include the provided files and start using big integers and big fractions effortlessly in your C++ projects.
#include <string> // std::string
#include "bigint.h"
int main()
{
BigInt a("1");
BigInt b{"2"}; // uniform initialization
BigInt c = "-3"; // conversion constructor, const char* to BigInt
BigInt d = {"4"};
std::string s{"5"};
BigInt e = s; // conversion constructor, std::string to BigInt
BigInt f(s);
BigInt g; // 0
const char* h = "6";
BigInt i = h; // conversion constructor, const char* to BigInt
BigInt j(h);
BigInt k(a); // copy constructor
BigFrac l(a, b); // 1/2
BigFrac m{c, d}; // -3/4
BigFrac n("1", "3");
BigFrac o = {s, "3"}; // 5/3
BigFrac p; // 0/1
BigFrac q = {"5", "15"}; // 1/3 auto simplifying
}#include <iostream>
#include "bigint.h"
int main()
{
BigInt a("42");
std::cout << a << std::endl;
BigFrac c("-1", "2");
std::cout << c << std::endl;
std::cout << BigInt("100") << std::endl;
std::cout << BigFrac("2", "7") << std::endl;
}const std::string& get_value() constbool get_sign() constconst BigInt& get_numerator() constconst BigInt& get_denominator() const#include <iostream>
#include <string>
#include "bigint.h"
int main()
{
BigInt a("42");
std::string value = a.get_value(); // value = "42"
bool sign = a.get_sign(); // sign = false
BigFrac b("3", "7");
BigInt num = b.get_numerator(); // num = "3"
BigInt den = b.get_denominator(); // den = "7"
}Operators +, - (both binary and unary), *, /, %, and ^ are overloaded for convenience. However, alternative representations are also provided: Add, Subtract, Minus, Multiply, Divide, Remainder, and Pow.
BigInt Add(const BigInt& x, const BigInt& y)BigInt Subtract(const BigInt&, const BigInt&)BigInt Minus(const BigInt&)BigInt Multiply(const BigInt&, const BigInt&)BigInt Divide(const BigInt&, const BigInt&)BigInt Remainder(const BigInt&, const BigInt&)BigInt Pow(const BigInt&, const int)BigInt Abs(const BigInt&)BigInt Factorial(const int)BigInt GCD(const BigInt&, const BigInt&)BigInt LCM(const BigInt&, const BigInt&)BigInt ISqrt(const BigInt&)BigInt Fibonacci(const int)BigInt Binomial(const int, const int)bool EvenQ(const BigInt&)bool OddQ(const BigInt&)std::size_t IntegerLength(const BigInt&)std::string Approx(const BigInt&, const std::size_t = 10ull)bool EqualQ(const BigInt&, const BigInt&)bool NotEqualQ(const BigInt&, const BigInt&)bool GreaterQ(const BigInt&, const BigInt&)bool LessQ(const BigInt&, const BigInt&)bool GreaterEqualQ(const BigInt&, const BigInt&)bool LessEqualQ(const BigInt&, const BigInt&)BigFrac Add(const BigFrac&, const BigFrac&)BigFrac Subtract(const BigFrac&, const BigFrac&)BigFrac Minus(const BigFrac&)BigFrac Multiply(const BigFrac&, const BigFrac&)BigFrac Divide(const BigFrac&, const BigFrac&)BigFrac Pow(const BigFrac&, const int)BigFrac Abs(const BigFrac&)BigFrac Harmonic(const int)std::string Approx(const BigFrac&)bool EqualQ(const BigFrac&, const BigFrac&)bool NotEqualQ(const BigFrac&, const BigFrac&)bool GreaterQ(const BigFrac&, const BigFrac&)bool LessQ(const BigFrac&, const BigFrac&)bool GreaterEqualQ(const BigFrac&, const BigFrac&)bool LessEqualQ(const BigFrac&, const BigFrac&)