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() const
bool get_sign() const
const BigInt& get_numerator() const
const 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&)