js-big-integer
v3.0.26
Published
Yet another class for arbitrary-precision integers in pure JavaScript. Small. Well tested.
Downloads
2,903
Maintainers
Readme
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