BigInteger
Yet another implementaion of arbitrary-precision integers in pure JavaScript. Small. Well tested.
Install / Use
/learn @Yaffle/BigIntegerREADME
BigInteger
Yet another BigInteger class in JavaScript This library performs arithmetic operations on integers of arbitrary size.
To use it from a web browser:
<script src="BigInteger.js"></script>
To use it from the node.js:
npm install Yaffle/BigInteger
Then:
var BigInteger = require("js-big-integer").BigInteger;
The API is terrible, but small integers are stored as primitive numbers, so operations on small integers are faster. The API was updated to match the API provided by https://github.com/GoogleChromeLabs/jsbi
Operation | BigInteger | Number | BigInt (https://github.com/tc39/proposal-bigint)
-----------------------|--------------------------------------|----------------------------------|---------------------------------------------------
Conversion from String | BigInteger.BigInt(string) | Number(string) | BigInt(string)
Conversion from Number | BigInteger.BigInt(number) | N/A | BigInt(number)
Conversion to String | a.toString(radix) | a.toString(radix) | a.toString(radix)
Conversion to Number | a.toNumber() | N/A | Number(bigint)
Addition | BigInteger.add(a, b) | a + b | a + b
Subtraction | BigInteger.subtract(a, b) | a - b | a - b
Multiplication | BigInteger.multiply(a, b) | 0 + a * b | a * b
Division | BigInteger.divide(a, b) | 0 + Math.trunc(a / b) | a / b
Remainder | BigInteger.remainder(a, b) | 0 + a % b | a % b
Exponentiation | BigInteger.exponentiate(a, b) | 0 + a**b | a**b
Negation | BigInteger.unaryMinus(a) | 0 - a | -a
Comparison | BigInteger.equal(a, b) | a === b | a === b
... | BigInteger.lessThan(a, b) | a < b | a < b
... | BigInteger.greaterThan(a, b) | a > b | a > b
... | BigInteger.notEqual(a, b) | a !== b | a !== b
... | BigInteger.lessThanOrEqual(a, b) | a <= b | a <= b
... | BigInteger.greaterThanOrEqual(a, b)| a >= b | a >= b
Signed Right Shift | BigInteger.signedRightShift(a, b) | a >> b | a >> b
Left Shift | BigInteger.leftShift(a, b) | a << b | a << b
Example
var factorial = function (n) {
var result = BigInteger.BigInt(1);
var i = 0;
while (++i <= n) {
result = BigInteger.multiply(result, BigInteger.BigInt(i));
}
return result;
};
console.log(factorial(30).toString(10));
Other pure JavaScript implementations:
- http://www.leemon.com/crypto/BigInt.html
- https://github.com/jtobey/javascript-bignum
- https://github.com/node-modules/node-biginteger
- https://github.com/vukicevic/crunch
- https://github.com/MikeMcl/bignumber.js
- https://github.com/peterolson/BigInteger.js
- https://github.com/silentmatt/javascript-biginteger
- http://www-cs-students.stanford.edu/~tjw/jsbn/
- https://github.com/Yaffle/BigInteger
- https://github.com/peteroupc/BigNumber
- https://github.com/indutny/bn.js
- https://github.com/dankogai/js-math-bigint
- https://github.com/defunctzombie/int
- https://github.com/dtrebbien/BigDecimal.js
- https://github.com/iriscouch/bigdecimal.js
- http://ofmind.net/doc/hapint
- https://github.com/GoogleChromeLabs/jsbi
- https://github.com/tabatkins/bignum
