Socket
Socket
Sign inDemoInstall

big-integer

Package Overview
Dependencies
Maintainers
1
Versions
102
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

big-integer - npm Package Compare versions

Comparing version 1.2.13 to 1.2.14

573

BigInteger.js

@@ -1,2 +0,3 @@

var bigInt = (function () {
"use strict";
var bigInt = (function () {
var base = 10000000, logBase = 7;

@@ -8,56 +9,229 @@ var sign = {

var normalize = function (first, second) {
var a = first.value, b = second.value;
var length = a.length > b.length ? a.length : b.length;
for (var i = 0; i < length; i++) {
a[i] = a[i] || 0;
b[i] = b[i] || 0;
function BigInteger(value, sign) {
this.value = value;
this.sign = sign;
}
BigInteger.prototype.negate = function () {
return new BigInteger(this.value, !this.sign);
};
BigInteger.prototype.abs = function () {
return new BigInteger(this.value, sign.positive);
};
BigInteger.prototype.add = function (n) {
n = parseInput(n);
if (this.sign !== n.sign) {
if (this.sign === sign.positive) return this.abs().subtract(n.abs());
return n.abs().subtract(this.abs());
}
for (var i = length - 1; i >= 0; i--) {
if (a[i] === 0 && b[i] === 0) {
a.pop();
b.pop();
} else break;
var a = this.value, b = n.value;
var result = [],
carry = 0,
length = Math.max(a.length, b.length);
for (var i = 0; i < length || carry > 0; i++) {
var sum = (a[i] || 0) + (b[i] || 0) + carry;
carry = sum >= base ? 1 : 0;
sum -= carry * base;
result.push(sum);
}
if (!a.length) a = [0], b = [0];
first.value = a;
second.value = b;
return new BigInteger(result, this.sign);
};
BigInteger.prototype.plus = function (n) {
return this.add(n);
};
BigInteger.prototype.subtract = function (n) {
n = parseInput(n);
if (this.sign !== n.sign) return this.add(n.negate());
if (this.sign === sign.negative) return n.negate().subtract(this.negate());
if (this.compare(n) < 0) return n.subtract(this).negate();
var a = this.value, b = n.value;
var result = [],
borrow = 0,
length = Math.max(a.length, b.length);
for (var i = 0; i < length; i++) {
var ai = a[i] || 0, bi = b[i] || 0;
var tmp = ai - borrow;
borrow = tmp < bi ? 1 : 0;
var minuend = (borrow * base) + tmp - bi;
result.push(minuend);
}
return new BigInteger(result, sign.positive);
};
BigInteger.prototype.minus = function (n) {
return this.subtract(n);
};
BigInteger.prototype.multiply = function (n) {
n = parseInput(n);
var sign = this.sign !== n.sign;
var parse = function (text, first) {
if (typeof text === "object") return text;
text += "";
var s = sign.positive, value = [];
if (text[0] === "-") {
s = sign.negative;
text = text.slice(1);
var a = this.value, b = n.value;
var length = Math.max(a.length, b.length);
var resultSum = [];
for (var i = 0; i < length; i++) {
resultSum[i] = [];
var j = i;
while (j--) {
resultSum[i].push(0);
}
}
var text = text.split(/e/i);
if (text.length > 2) throw new Error("Invalid integer");
if (text[1]) {
var exp = text[1];
if (exp[0] === "+") exp = exp.slice(1);
exp = parse(exp);
if (exp.lesser(0)) throw new Error("Cannot include negative exponent part for integers");
while (exp.notEquals(0)) {
text[0] += "0";
exp = exp.prev();
var carry = 0;
for (var i = 0; i < a.length; i++) {
var x = a[i];
for (var j = 0; j < b.length || carry > 0; j++) {
var y = b[j];
var product = y ? (x * y) + carry : carry;
carry = product > base ? Math.floor(product / base) : 0;
product -= carry * base;
resultSum[i].push(product);
}
}
text = text[0];
if (text === "-0") text = "0";
var isValid = /^([0-9][0-9]*)$/.test(text);
if (!isValid) throw new Error("Invalid integer");
while (text.length) {
var divider = text.length > logBase ? text.length - logBase : 0;
value.push(+text.slice(divider));
text = text.slice(0, divider);
var max = -1;
for (var i = 0; i < resultSum.length; i++) {
var len = resultSum[i].length;
if (len > max) max = len;
}
var val = bigInt(value, s);
if (first) normalize(first, val);
return val;
var result = [], carry = 0;
for (var i = 0; i < max || carry > 0; i++) {
var sum = carry;
for (var j = 0; j < resultSum.length; j++) {
sum += resultSum[j][i] || 0;
}
carry = sum > base ? Math.floor(sum / base) : 0;
sum -= carry * base;
result.push(sum);
}
return new BigInteger(result, sign);
};
BigInteger.prototype.times = function (n) {
return this.multiply(n);
};
BigInteger.prototype.divmod = function (n) {
n = parseInput(n);
var sign = this.sign !== n.sign;
if (this.equals(0)) return {
quotient: new BigInteger([0], sign.positive),
remainder: new BigInteger([0], sign.positive)
};
if (n.equals(0)) throw new Error("Cannot divide by zero");
var a = this.value, b = n.value;
var result = [], remainder = [];
for (var i = a.length - 1; i >= 0; i--) {
var m = [a[i]].concat(remainder);
var quotient = goesInto(b, m);
result.push(quotient.result);
remainder = quotient.remainder;
}
result.reverse();
return {
quotient: new BigInteger(result, sign),
remainder: new BigInteger(remainder, this.sign)
};
};
BigInteger.prototype.divide = function (n) {
return this.divmod(n).quotient;
};
BigInteger.prototype.over = function (n) {
return this.divide(n);
};
BigInteger.prototype.mod = function (n) {
return this.divmod(n).remainder;
};
BigInteger.prototype.remainder = function (n) {
return this.mod(n);
};
BigInteger.prototype.pow = function (n) {
n = parseInput(n);
var a = this, b = n, r = ONE;
if (b.equals(0)) return r;
if (a.equals(0) || b.lesser(0)) return ZERO;
while (true) {
if (b.mod(2).equals(1)) {
r = r.times(a);
}
b = b.over(2);
if (b.equals(0)) break;
a = a.times(a);
}
return r;
};
BigInteger.prototype.next = function () {
return this.add(1);
};
BigInteger.prototype.prev = function () {
return this.subtract(1);
};
BigInteger.prototype.compare = function (n) {
var first = this, second = parseInput(n);
if (first.value.length === 1 && second.value.length === 1 && first.value[0] === 0 && second.value[0] === 0) return 0;
if (second.sign !== first.sign) return first.sign === sign.positive ? 1 : -1;
var multiplier = first.sign === sign.positive ? 1 : -1;
var a = first.value, b = second.value,
length = Math.max(a.length, b.length) - 1;
for (var i = length; i >= 0; i--) {
var ai = (a[i] || 0), bi = (b[i] || 0);
if (ai > bi) return 1 * multiplier;
if (bi > ai) return -1 * multiplier;
}
return 0;
};
BigInteger.prototype.compareTo = function (n) {
return this.compare(n);
};
BigInteger.prototype.compareAbs = function (n) {
return this.abs().compare(n.abs());
};
BigInteger.prototype.equals = function (n) {
return this.compare(n) === 0;
};
BigInteger.prototype.notEquals = function (n) {
return !this.equals(n);
};
BigInteger.prototype.lesser = function (n) {
return this.compare(n) < 0;
};
BigInteger.prototype.greater = function (n) {
return this.compare(n) > 0;
};
BigInteger.prototype.greaterOrEquals = function (n) {
return this.compare(n) >= 0;
};
BigInteger.prototype.lesserOrEquals = function (n) {
return this.compare(n) <= 0;
};
BigInteger.prototype.isPositive = function () {
return this.sign === sign.positive;
};
BigInteger.prototype.isNegative = function () {
return this.sign === sign.negative;
};
BigInteger.prototype.isEven = function () {
return this.value[0] % 2 === 0;
};
BigInteger.prototype.isOdd = function () {
return this.value[0] % 2 === 1;
};
BigInteger.prototype.toString = function (b) {
var first = this;
var str = "", len = first.value.length;
while (len--) {
if (first.value[len].toString().length === 8) str += first.value[len];
else str += (base.toString() + first.value[len]).slice(-logBase);
}
while (str[0] === "0") {
str = str.slice(1);
}
if (!str.length) str = "0";
if (str === "0") return str;
var s = first.sign === sign.positive ? "" : "-";
return s + str;
};
BigInteger.prototype.toJSNumber = function () {
return +this.toString();
};
BigInteger.prototype.valueOf = function () {
return this.toJSNumber();
};
var goesInto = function (a, b) {
var a = bigInt(a, sign.positive), b = bigInt(b, sign.positive);
var a = new BigInteger(a, sign.positive), b = new BigInteger(b, sign.positive);
if (a.equals(0)) throw new Error("Cannot divide by 0");

@@ -67,3 +241,3 @@ var n = 0;

var inc = 1;
var c = bigInt(a.value, sign.positive), t = c.times(10);
var c = a, t = c.times(10);
while (t.lesser(b)) {

@@ -86,262 +260,45 @@ c = t;

var bigInt = function (value, s) {
var self = {
value: value,
sign: s
};
var o = {
value: value,
sign: s,
negate: function (m) {
var first = m || self;
return bigInt(first.value, !first.sign);
},
abs: function (m) {
var first = m || self;
return bigInt(first.value, sign.positive);
},
add: function (n, m) {
var s, first = self, second;
if (m) (first = parse(n)) && (second = parse(m));
else second = parse(n, first);
s = first.sign;
if (first.sign !== second.sign) {
first = bigInt(first.value, sign.positive);
second = bigInt(second.value, sign.positive);
return s === sign.positive ?
o.subtract(first, second) :
o.subtract(second, first);
}
normalize(first, second);
var a = first.value, b = second.value;
var result = [],
carry = 0;
for (var i = 0; i < a.length || carry > 0; i++) {
var sum = (a[i] || 0) + (b[i] || 0) + carry;
carry = sum >= base ? 1 : 0;
sum -= carry * base;
result.push(sum);
}
return bigInt(result, s);
},
plus: function (n, m) {
return o.add(n, m);
},
subtract: function (n, m) {
var first = self, second;
if (m) (first = parse(n)) && (second = parse(m));
else second = parse(n, first);
if (first.sign !== second.sign) return o.add(first, o.negate(second));
if (first.sign === sign.negative) return o.subtract(o.negate(second), o.negate(first));
if (o.compare(first, second) === -1) return o.negate(o.subtract(second, first));
var a = first.value, b = second.value;
var result = [],
borrow = 0;
for (var i = 0; i < a.length; i++) {
var tmp = a[i] - borrow;
borrow = tmp < b[i] ? 1 : 0;
var minuend = (borrow * base) + tmp - b[i];
result.push(minuend);
}
return bigInt(result, sign.positive);
},
minus: function (n, m) {
return o.subtract(n, m);
},
multiply: function (n, m) {
var s, first = self, second;
if (m) (first = parse(n)) && (second = parse(m));
else second = parse(n, first);
s = first.sign !== second.sign;
var a = first.value, b = second.value;
var resultSum = [];
for (var i = 0; i < a.length; i++) {
resultSum[i] = [];
var j = i;
while (j--) {
resultSum[i].push(0);
}
}
var carry = 0;
for (var i = 0; i < a.length; i++) {
var x = a[i];
for (var j = 0; j < b.length || carry > 0; j++) {
var y = b[j];
var product = y ? (x * y) + carry : carry;
carry = product > base ? Math.floor(product / base) : 0;
product -= carry * base;
resultSum[i].push(product);
}
}
var max = -1;
for (var i = 0; i < resultSum.length; i++) {
var len = resultSum[i].length;
if (len > max) max = len;
}
var result = [], carry = 0;
for (var i = 0; i < max || carry > 0; i++) {
var sum = carry;
for (var j = 0; j < resultSum.length; j++) {
sum += resultSum[j][i] || 0;
}
carry = sum > base ? Math.floor(sum / base) : 0;
sum -= carry * base;
result.push(sum);
}
return bigInt(result, s);
},
times: function (n, m) {
return o.multiply(n, m);
},
divmod: function (n, m) {
var s, first = self, second;
if (m) (first = parse(n)) && (second = parse(m));
else second = parse(n, first);
s = first.sign !== second.sign;
if (bigInt(first.value, first.sign).equals(0)) return {
quotient: bigInt([0], sign.positive),
remainder: bigInt([0], sign.positive)
};
if (second.equals(0)) throw new Error("Cannot divide by zero");
var a = first.value, b = second.value;
var result = [], remainder = [];
for (var i = a.length - 1; i >= 0; i--) {
var n = [a[i]].concat(remainder);
var quotient = goesInto(b, n);
result.push(quotient.result);
remainder = quotient.remainder;
}
result.reverse();
return {
quotient: bigInt(result, s),
remainder: bigInt(remainder, first.sign)
};
},
divide: function (n, m) {
return o.divmod(n, m).quotient;
},
over: function (n, m) {
return o.divide(n, m);
},
mod: function (n, m) {
return o.divmod(n, m).remainder;
},
remainder: function(n, m) {
return o.mod(n, m);
},
pow: function (n, m) {
var first = self, second;
if (m) (first = parse(n)) && (second = parse(m));
else second = parse(n, first);
var a = first, b = second;
if (bigInt(a.value, a.sign).equals(0)) return ZERO;
if (b.lesser(0)) return ZERO;
if (b.equals(0)) return ONE;
var result = bigInt(a.value, a.sign);
var ZERO = new BigInteger([0], sign.positive);
var ONE = new BigInteger([1], sign.positive);
var MINUS_ONE = new BigInteger([1], sign.negative);
if (b.mod(2).equals(0)) {
var c = result.pow(b.over(2));
return c.times(c);
} else {
return result.times(result.pow(b.minus(1)));
}
},
next: function (m) {
var first = m || self;
return o.add(first, 1);
},
prev: function (m) {
var first = m || self;
return o.subtract(first, 1);
},
compare: function (n, m) {
var first = self, second;
if (m) (first = parse(n)) && (second = parse(m, first));
else second = parse(n, first);
normalize(first, second);
if (first.value.length === 1 && second.value.length === 1 && first.value[0] === 0 && second.value[0] === 0) return 0;
if (second.sign !== first.sign) return first.sign === sign.positive ? 1 : -1;
var multiplier = first.sign === sign.positive ? 1 : -1;
var a = first.value, b = second.value;
for (var i = a.length - 1; i >= 0; i--) {
if (a[i] > b[i]) return 1 * multiplier;
if (b[i] > a[i]) return -1 * multiplier;
}
return 0;
},
compareTo: function(n, m) {
return o.compare(n, m);
},
compareAbs: function (n, m) {
var first = self, second;
if (m) (first = parse(n)) && (second = parse(m, first));
else second = parse(n, first);
first.sign = second.sign = sign.positive;
return o.compare(first, second);
},
equals: function (n, m) {
return o.compare(n, m) === 0;
},
notEquals: function (n, m) {
return !o.equals(n, m);
},
lesser: function (n, m) {
return o.compare(n, m) < 0;
},
greater: function (n, m) {
return o.compare(n, m) > 0;
},
greaterOrEquals: function (n, m) {
return o.compare(n, m) >= 0;
},
lesserOrEquals: function (n, m) {
return o.compare(n, m) <= 0;
},
isPositive: function (m) {
var first = m || self;
return first.sign === sign.positive;
},
isNegative: function (m) {
var first = m || self;
return first.sign === sign.negative;
},
isEven: function (m) {
var first = m || self;
return first.value[0] % 2 === 0;
},
isOdd: function (m) {
var first = m || self;
return first.value[0] % 2 === 1;
},
toString: function (m) {
var first = m || self;
var str = "", len = first.value.length;
while (len--) {
if (first.value[len].toString().length === 8) str += first.value[len];
else str += (base.toString() + first.value[len]).slice(-logBase);
}
while (str[0] === "0") {
str = str.slice(1);
}
if (!str.length) str = "0";
if (str === "0") return str;
var s = first.sign === sign.positive ? "" : "-";
return s + str;
},
toJSNumber: function (m) {
return +o.toString(m);
},
valueOf: function (m) {
return o.toJSNumber(m);
function parseInput(text) {
if (typeof text === "object") return text;
if (Math.abs(+text) < base && +text === (+text | 0)) {
var value = +text;
return new BigInteger([Math.abs(value)], (value < 0 || (1 / value) === -Infinity));
}
text += "";
var s = sign.positive, value = [];
if (text[0] === "-") {
s = sign.negative;
text = text.slice(1);
}
var text = text.split(/e/i);
if (text.length > 2) throw new Error("Invalid integer");
if (text[1]) {
var exp = text[1];
if (exp[0] === "+") exp = exp.slice(1);
exp = parseInput(exp);
if (exp.lesser(0)) throw new Error("Cannot include negative exponent part for integers");
while (exp.notEquals(0)) {
text[0] += "0";
exp = exp.prev();
}
};
return o;
};
}
text = text[0];
if (text === "-0") text = "0";
var isValid = /^([0-9][0-9]*)$/.test(text);
if (!isValid) throw new Error("Invalid integer");
while (text.length) {
var divider = text.length > logBase ? text.length - logBase : 0;
value.push(+text.slice(divider));
text = text.slice(0, divider);
}
return new BigInteger(value, s);
}
var ZERO = bigInt([0], sign.positive);
var ONE = bigInt([1], sign.positive);
var MINUS_ONE = bigInt([1], sign.negative);
var parseBase = function (text, base) {
base = parse(base);
base = parseInput(base);
var val = ZERO;

@@ -357,8 +314,8 @@ var digits = [];

}
if (/[0-9]/.test(c)) digits.push(parse(c));
else if (/[a-z]/.test(c)) digits.push(parse(c.charCodeAt(0) - 87));
if (/[0-9]/.test(c)) digits.push(parseInput(c));
else if (/[a-z]/.test(c)) digits.push(parseInput(c.charCodeAt(0) - 87));
else if (c === "<") {
var start = i;
do i++; while (text[i] !== ">");
digits.push(parse(text.slice(start + 1, i)));
do { i++; } while (text[i] !== ">");
digits.push(parseInput(text.slice(start + 1, i)));
}

@@ -375,3 +332,3 @@ else throw new Error(c + " is not a valid character");

return isNegative ? val.negate() : val;
}
};

@@ -381,3 +338,3 @@ var fnReturn = function (a, b) {

if (typeof b !== "undefined") return parseBase(a, b);
return parse(a);
return parseInput(a);
};

@@ -392,2 +349,2 @@ fnReturn.zero = ZERO;

module.exports = bigInt;
}
}

@@ -1,1 +0,1 @@

var bigInt=function(){var e=1e7,t=7,n={positive:!1,negative:!0},r=function(e,t){var n=e.value,r=t.value,i=n.length>r.length?n.length:r.length;for(var s=0;s<i;s++)n[s]=n[s]||0,r[s]=r[s]||0;for(var s=i-1;s>=0;s--){if(n[s]!==0||r[s]!==0)break;n.pop(),r.pop()}n.length||(n=[0],r=[0]),e.value=n,t.value=r},i=function(e,s){if(typeof e=="object")return e;e+="";var u=n.positive,a=[];e[0]==="-"&&(u=n.negative,e=e.slice(1));var e=e.split(/e/i);if(e.length>2)throw new Error("Invalid integer");if(e[1]){var f=e[1];f[0]==="+"&&(f=f.slice(1)),f=i(f);if(f.lesser(0))throw new Error("Cannot include negative exponent part for integers");while(f.notEquals(0))e[0]+="0",f=f.prev()}e=e[0],e==="-0"&&(e="0");var l=/^([0-9][0-9]*)$/.test(e);if(!l)throw new Error("Invalid integer");while(e.length){var c=e.length>t?e.length-t:0;a.push(+e.slice(c)),e=e.slice(0,c)}var h=o(a,u);return s&&r(s,h),h},s=function(e,t){var e=o(e,n.positive),t=o(t,n.positive);if(e.equals(0))throw new Error("Cannot divide by 0");var r=0;do{var i=1,s=o(e.value,n.positive),u=s.times(10);while(u.lesser(t))s=u,i*=10,u=u.times(10);while(s.lesserOrEquals(t))t=t.minus(s),r+=i}while(e.lesserOrEquals(t));return{remainder:t.value,result:r}},o=function(f,l){var c={value:f,sign:l},h={value:f,sign:l,negate:function(e){var t=e||c;return o(t.value,!t.sign)},abs:function(e){var t=e||c;return o(t.value,n.positive)},add:function(t,s){var u,a=c,f;s?(a=i(t))&&(f=i(s)):f=i(t,a),u=a.sign;if(a.sign!==f.sign)return a=o(a.value,n.positive),f=o(f.value,n.positive),u===n.positive?h.subtract(a,f):h.subtract(f,a);r(a,f);var l=a.value,p=f.value,d=[],v=0;for(var m=0;m<l.length||v>0;m++){var g=(l[m]||0)+(p[m]||0)+v;v=g>=e?1:0,g-=v*e,d.push(g)}return o(d,u)},plus:function(e,t){return h.add(e,t)},subtract:function(t,r){var s=c,u;r?(s=i(t))&&(u=i(r)):u=i(t,s);if(s.sign!==u.sign)return h.add(s,h.negate(u));if(s.sign===n.negative)return h.subtract(h.negate(u),h.negate(s));if(h.compare(s,u)===-1)return h.negate(h.subtract(u,s));var a=s.value,f=u.value,l=[],p=0;for(var d=0;d<a.length;d++){var v=a[d]-p;p=v<f[d]?1:0;var m=p*e+v-f[d];l.push(m)}return o(l,n.positive)},minus:function(e,t){return h.subtract(e,t)},multiply:function(t,n){var r,s=c,u;n?(s=i(t))&&(u=i(n)):u=i(t,s),r=s.sign!==u.sign;var a=s.value,f=u.value,l=[];for(var h=0;h<a.length;h++){l[h]=[];var p=h;while(p--)l[h].push(0)}var d=0;for(var h=0;h<a.length;h++){var v=a[h];for(var p=0;p<f.length||d>0;p++){var m=f[p],g=m?v*m+d:d;d=g>e?Math.floor(g/e):0,g-=d*e,l[h].push(g)}}var y=-1;for(var h=0;h<l.length;h++){var b=l[h].length;b>y&&(y=b)}var w=[],d=0;for(var h=0;h<y||d>0;h++){var E=d;for(var p=0;p<l.length;p++)E+=l[p][h]||0;d=E>e?Math.floor(E/e):0,E-=d*e,w.push(E)}return o(w,r)},times:function(e,t){return h.multiply(e,t)},divmod:function(e,t){var r,u=c,a;t?(u=i(e))&&(a=i(t)):a=i(e,u),r=u.sign!==a.sign;if(o(u.value,u.sign).equals(0))return{quotient:o([0],n.positive),remainder:o([0],n.positive)};if(a.equals(0))throw new Error("Cannot divide by zero");var f=u.value,l=a.value,h=[],p=[];for(var d=f.length-1;d>=0;d--){var e=[f[d]].concat(p),v=s(l,e);h.push(v.result),p=v.remainder}return h.reverse(),{quotient:o(h,r),remainder:o(p,u.sign)}},divide:function(e,t){return h.divmod(e,t).quotient},over:function(e,t){return h.divide(e,t)},mod:function(e,t){return h.divmod(e,t).remainder},remainder:function(e,t){return h.mod(e,t)},pow:function(e,t){var n=c,r;t?(n=i(e))&&(r=i(t)):r=i(e,n);var s=n,f=r;if(o(s.value,s.sign).equals(0))return u;if(f.lesser(0))return u;if(f.equals(0))return a;var l=o(s.value,s.sign);if(f.mod(2).equals(0)){var h=l.pow(f.over(2));return h.times(h)}return l.times(l.pow(f.minus(1)))},next:function(e){var t=e||c;return h.add(t,1)},prev:function(e){var t=e||c;return h.subtract(t,1)},compare:function(e,t){var s=c,o;t?(s=i(e))&&(o=i(t,s)):o=i(e,s),r(s,o);if(s.value.length===1&&o.value.length===1&&s.value[0]===0&&o.value[0]===0)return 0;if(o.sign!==s.sign)return s.sign===n.positive?1:-1;var u=s.sign===n.positive?1:-1,a=s.value,f=o.value;for(var l=a.length-1;l>=0;l--){if(a[l]>f[l])return 1*u;if(f[l]>a[l])return-1*u}return 0},compareTo:function(e,t){return h.compare(e,t)},compareAbs:function(e,t){var r=c,s;return t?(r=i(e))&&(s=i(t,r)):s=i(e,r),r.sign=s.sign=n.positive,h.compare(r,s)},equals:function(e,t){return h.compare(e,t)===0},notEquals:function(e,t){return!h.equals(e,t)},lesser:function(e,t){return h.compare(e,t)<0},greater:function(e,t){return h.compare(e,t)>0},greaterOrEquals:function(e,t){return h.compare(e,t)>=0},lesserOrEquals:function(e,t){return h.compare(e,t)<=0},isPositive:function(e){var t=e||c;return t.sign===n.positive},isNegative:function(e){var t=e||c;return t.sign===n.negative},isEven:function(e){var t=e||c;return t.value[0]%2===0},isOdd:function(e){var t=e||c;return t.value[0]%2===1},toString:function(r){var i=r||c,s="",o=i.value.length;while(o--)i.value[o].toString().length===8?s+=i.value[o]:s+=(e.toString()+i.value[o]).slice(-t);while(s[0]==="0")s=s.slice(1);s.length||(s="0");if(s==="0")return s;var u=i.sign===n.positive?"":"-";return u+s},toJSNumber:function(e){return+h.toString(e)},valueOf:function(e){return h.toJSNumber(e)}};return h},u=o([0],n.positive),a=o([1],n.positive),f=o([1],n.negative),l=function(e,t){function a(e){var t=e[s].toLowerCase();if(s===0&&e[s]==="-"){o=!0;return}if(/[0-9]/.test(t))r.push(i(t));else if(/[a-z]/.test(t))r.push(i(t.charCodeAt(0)-87));else{if(t!=="<")throw new Error(t+" is not a valid character");var n=s;do s++;while(e[s]!==">");r.push(i(e.slice(n+1,s)))}}t=i(t);var n=u,r=[],s,o=!1;for(s=0;s<e.length;s++)a(e);r.reverse();for(s=0;s<r.length;s++)n=n.add(r[s].times(t.pow(s)));return o?n.negate():n},c=function(e,t){return typeof e=="undefined"?u:typeof t!="undefined"?l(e,t):i(e)};return c.zero=u,c.one=a,c.minusOne=f,c}();typeof module!="undefined"&&(module.exports=bigInt);
"use strict";var bigInt=function(){function r(e,t){this.value=e,this.sign=t}function a(i){if(typeof i=="object")return i;if(Math.abs(+i)<e&&+i===(+i|0)){var s=+i;return new r([Math.abs(s)],s<0||1/s===-Infinity)}i+="";var o=n.positive,s=[];i[0]==="-"&&(o=n.negative,i=i.slice(1));var i=i.split(/e/i);if(i.length>2)throw new Error("Invalid integer");if(i[1]){var u=i[1];u[0]==="+"&&(u=u.slice(1)),u=a(u);if(u.lesser(0))throw new Error("Cannot include negative exponent part for integers");while(u.notEquals(0))i[0]+="0",u=u.prev()}i=i[0],i==="-0"&&(i="0");var f=/^([0-9][0-9]*)$/.test(i);if(!f)throw new Error("Invalid integer");while(i.length){var l=i.length>t?i.length-t:0;s.push(+i.slice(l)),i=i.slice(0,l)}return new r(s,o)}var e=1e7,t=7,n={positive:!1,negative:!0};r.prototype.negate=function(){return new r(this.value,!this.sign)},r.prototype.abs=function(){return new r(this.value,n.positive)},r.prototype.add=function(t){t=a(t);if(this.sign!==t.sign)return this.sign===n.positive?this.abs().subtract(t.abs()):t.abs().subtract(this.abs());var i=this.value,s=t.value,o=[],u=0,f=Math.max(i.length,s.length);for(var l=0;l<f||u>0;l++){var c=(i[l]||0)+(s[l]||0)+u;u=c>=e?1:0,c-=u*e,o.push(c)}return new r(o,this.sign)},r.prototype.plus=function(e){return this.add(e)},r.prototype.subtract=function(t){t=a(t);if(this.sign!==t.sign)return this.add(t.negate());if(this.sign===n.negative)return t.negate().subtract(this.negate());if(this.compare(t)<0)return t.subtract(this).negate();var i=this.value,s=t.value,o=[],u=0,f=Math.max(i.length,s.length);for(var l=0;l<f;l++){var c=i[l]||0,h=s[l]||0,p=c-u;u=p<h?1:0;var d=u*e+p-h;o.push(d)}return new r(o,n.positive)},r.prototype.minus=function(e){return this.subtract(e)},r.prototype.multiply=function(t){t=a(t);var n=this.sign!==t.sign,i=this.value,s=t.value,o=Math.max(i.length,s.length),u=[];for(var f=0;f<o;f++){u[f]=[];var l=f;while(l--)u[f].push(0)}var c=0;for(var f=0;f<i.length;f++){var h=i[f];for(var l=0;l<s.length||c>0;l++){var p=s[l],d=p?h*p+c:c;c=d>e?Math.floor(d/e):0,d-=c*e,u[f].push(d)}}var v=-1;for(var f=0;f<u.length;f++){var m=u[f].length;m>v&&(v=m)}var g=[],c=0;for(var f=0;f<v||c>0;f++){var y=c;for(var l=0;l<u.length;l++)y+=u[l][f]||0;c=y>e?Math.floor(y/e):0,y-=c*e,g.push(y)}return new r(g,n)},r.prototype.times=function(e){return this.multiply(e)},r.prototype.divmod=function(e){e=a(e);var t=this.sign!==e.sign;if(this.equals(0))return{quotient:new r([0],t.positive),remainder:new r([0],t.positive)};if(e.equals(0))throw new Error("Cannot divide by zero");var n=this.value,s=e.value,o=[],u=[];for(var f=n.length-1;f>=0;f--){var l=[n[f]].concat(u),c=i(s,l);o.push(c.result),u=c.remainder}return o.reverse(),{quotient:new r(o,t),remainder:new r(u,this.sign)}},r.prototype.divide=function(e){return this.divmod(e).quotient},r.prototype.over=function(e){return this.divide(e)},r.prototype.mod=function(e){return this.divmod(e).remainder},r.prototype.remainder=function(e){return this.mod(e)},r.prototype.pow=function(e){e=a(e);var t=this,n=e,r=o;if(n.equals(0))return r;if(t.equals(0)||n.lesser(0))return s;for(;;){n.mod(2).equals(1)&&(r=r.times(t)),n=n.over(2);if(n.equals(0))break;t=t.times(t)}return r},r.prototype.next=function(){return this.add(1)},r.prototype.prev=function(){return this.subtract(1)},r.prototype.compare=function(e){var t=this,r=a(e);if(t.value.length===1&&r.value.length===1&&t.value[0]===0&&r.value[0]===0)return 0;if(r.sign!==t.sign)return t.sign===n.positive?1:-1;var i=t.sign===n.positive?1:-1,s=t.value,o=r.value,u=Math.max(s.length,o.length)-1;for(var f=u;f>=0;f--){var l=s[f]||0,c=o[f]||0;if(l>c)return 1*i;if(c>l)return-1*i}return 0},r.prototype.compareTo=function(e){return this.compare(e)},r.prototype.compareAbs=function(e){return this.abs().compare(e.abs())},r.prototype.equals=function(e){return this.compare(e)===0},r.prototype.notEquals=function(e){return!this.equals(e)},r.prototype.lesser=function(e){return this.compare(e)<0},r.prototype.greater=function(e){return this.compare(e)>0},r.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},r.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},r.prototype.isPositive=function(){return this.sign===n.positive},r.prototype.isNegative=function(){return this.sign===n.negative},r.prototype.isEven=function(){return this.value[0]%2===0},r.prototype.isOdd=function(){return this.value[0]%2===1},r.prototype.toString=function(r){var i=this,s="",o=i.value.length;while(o--)i.value[o].toString().length===8?s+=i.value[o]:s+=(e.toString()+i.value[o]).slice(-t);while(s[0]==="0")s=s.slice(1);s.length||(s="0");if(s==="0")return s;var u=i.sign===n.positive?"":"-";return u+s},r.prototype.toJSNumber=function(){return+this.toString()},r.prototype.valueOf=function(){return this.toJSNumber()};var i=function(e,t){var e=new r(e,n.positive),t=new r(t,n.positive);if(e.equals(0))throw new Error("Cannot divide by 0");var i=0;do{var s=1,o=e,u=o.times(10);while(u.lesser(t))o=u,s*=10,u=u.times(10);while(o.lesserOrEquals(t))t=t.minus(o),i+=s}while(e.lesserOrEquals(t));return{remainder:t.value,result:i}},s=new r([0],n.positive),o=new r([1],n.positive),u=new r([1],n.negative),f=function(e,t){function u(e){var t=e[i].toLowerCase();if(i===0&&e[i]==="-"){o=!0;return}if(/[0-9]/.test(t))r.push(a(t));else if(/[a-z]/.test(t))r.push(a(t.charCodeAt(0)-87));else{if(t!=="<")throw new Error(t+" is not a valid character");var n=i;do i++;while(e[i]!==">");r.push(a(e.slice(n+1,i)))}}t=a(t);var n=s,r=[],i,o=!1;for(i=0;i<e.length;i++)u(e);r.reverse();for(i=0;i<r.length;i++)n=n.add(r[i].times(t.pow(i)));return o?n.negate():n},l=function(e,t){return typeof e=="undefined"?s:typeof t!="undefined"?f(e,t):a(e)};return l.zero=s,l.one=o,l.minusOne=u,l}();typeof module!="undefined"&&(module.exports=bigInt);
{
"name": "big-integer",
"version": "1.2.13",
"version": "1.2.14",
"author": "Peter Olson <peter.e.c.olson+npm@gmail.com>",

@@ -5,0 +5,0 @@ "description": "An arbitrary length integer library for Javascript",

@@ -17,2 +17,4 @@ BigInteger.js

var bigInt = require("big-integer");
The unit tests are contained in the `BigInteger.test.js` file. You can [run them online from GitHub](http://peterolson.github.io/BigInteger.js/Test.htm).

@@ -267,2 +269,2 @@ `bigInt(number, [base])`

bigInt("100") + bigInt("200") === 300; //true
bigInt("100") + bigInt("200") === 300; //true
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc