Big numbers library in c++ [closed]
I'm doing a project which requires really big numbers, up to 100 digits. I have read that java supports big integers (java.Math.BigInteger
), and I want to know if there is something like that in C++. So, here is my question: Is there a standard or non-standard c++ library which implements big integers?
Note: If there is no standard implementation for big integers, I would like a simple non-standard. Thanks in advance.
The GNU Multiple Precision Arithmetic Library does what you want http://gmplib.org/
Gnu MP is a C library but it has a C++ class Interface and if you are interested only in big integers, you may just deal with mpz_class
. Look at the sample below which I took from the page C++ Interface General
int main (void)
{
mpz_class a, b, c;
a = 1234;
b = "-5678";
c = a+b;
cout << "sum is " << c << "\n";
cout << "absolute value is " << abs(c) << "\n";
return 0;
}
Unfortunately, there is no standard library for big numbers. You said you are looking for a "simple" library, the simplest library I know of is InfInt. It consists of just one header file. Its usage is fairly simple. Here is a sample code:
InfInt myint1 = "15432154865413186646848435184100510168404641560358";
InfInt myint2 = 156341300544608LL;
myint1 *= --myint2 - 3;
std::cout << myint1 << std::endl;
You said you want a simple interface/implementation, here's one http://www.di-mgt.com.au/bigdigits.html. Personally I'd still go for GMP however.