How to add 2 arbitrarily sized integers in C++?

Here’s an example showing how to use the OpenSSL bignum implementation for arbitrary-precision arithmetic. My example does 264 + 265. I’m using Linux. #include <cstdio> #include <openssl/crypto.h> #include <openssl/bn.h> int main(int argc, char *argv[]) { static const char num1[] = “18446744073709551616”; static const char num2[] = “36893488147419103232”; BIGNUM *bn1 = NULL; BIGNUM *bn2 = NULL; … Read more

How to deal with big numbers in javascript [duplicate]

While looking for an big integer library for an ElGamal crypto implementation I tested several libraries with the following results: I recommend this one: Tom Wu’s jsbn.js ( Comprehensive set of functions and fast Leemon Baird’s big integer library ( Comprehensive set of functions and pretty fast BUT: Negative number representation is buggy! bignumber.js ( … Read more

Working with large numbers in PHP

For some reason, there are two standard libraries in PHP handling the arbitrary length/precision numbers: BC Math and GMP. I personally prefer GMP, as it’s fresher and has richer API. Based on GMP I’ve implemented Decimal2 class for storing and processing currency amounts (like USD 100.25). A lot of mod calculations there w/o any problems. … Read more

How to implement big int in C++

A fun challenge. 🙂 I assume that you want integers of arbitrary length. I suggest the following approach: Consider the binary nature of the datatype “int”. Think about using simple binary operations to emulate what the circuits in your CPU do when they add things. In case you are interested more in-depth, consider reading this … Read more

What is the standard solution in JavaScript for handling big numbers (BigNum)?

Update(2019-08-19): BigInt is now part of Firefox and Chrome; you no longer need a library: const bigInt1 = 1111111111111111111111111111111n; const bigInt2 = BigInt(“1111111111111111111111111111111″) console.log((bigInt1 + bigInt2)+””) Original answer: If you need arbitrary-precision decimal numbers, use Javascript-bignum, as it is correct and fast.