@numio/bigmath 1.0.11 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -3
- package/index.d.ts +6 -5
- package/index.js +6 -5
- package/package.json +9 -2
- package/src/IQR/main.js +5 -4
- package/src/IQR/types.d.ts +2 -2
- package/src/IQR/utils.js +4 -4
- package/src/MAD/main.js +5 -4
- package/src/MAD/types.d.ts +2 -2
- package/src/MAD/utils.js +3 -5
- package/src/compare/main.js +12 -10
- package/src/compare/types.d.ts +5 -5
- package/src/compare/utils.js +43 -60
- package/src/mean/main.js +5 -5
- package/src/mean/types.d.ts +2 -2
- package/src/mean/utils.js +4 -8
- package/src/operations/add/main.d.ts +2 -0
- package/src/operations/add/main.js +8 -0
- package/src/operations/div/main.d.ts +2 -0
- package/src/operations/div/main.js +9 -0
- package/src/operations/div/types.d.ts +2 -0
- package/src/operations/div/utils.d.ts +2 -0
- package/src/operations/div/utils.js +39 -0
- package/src/operations/mul/main.d.ts +2 -0
- package/src/operations/mul/main.js +7 -0
- package/src/operations/sub/main.d.ts +2 -0
- package/src/operations/sub/main.js +8 -0
- package/src/pipe/main.d.ts +8 -9
- package/src/pipe/main.js +34 -19
- package/src/pipe/utils.d.ts +10 -0
- package/src/pipe/utils.js +30 -0
- package/src/quartile/main.js +7 -7
- package/src/quartile/types.d.ts +6 -6
- package/src/quartile/utils.js +3 -10
- package/src/shared/constant.d.ts +0 -12
- package/src/shared/constant.js +0 -12
- package/src/shared/types.d.ts +6 -4
- package/src/shared/utils.d.ts +6 -3
- package/src/shared/utils.js +65 -59
- package/src/sort/main.js +7 -4
- package/src/sort/types.d.ts +3 -3
- package/src/sqrt/main.d.ts +3 -0
- package/src/sqrt/main.js +10 -0
- package/src/sqrt/types.d.ts +3 -0
- package/src/sqrt/utils.d.ts +2 -0
- package/src/sqrt/utils.js +24 -0
- package/src/mathOperations/add/main.d.ts +0 -2
- package/src/mathOperations/add/main.js +0 -7
- package/src/mathOperations/add/types.d.ts +0 -2
- package/src/mathOperations/add/utils.d.ts +0 -5
- package/src/mathOperations/add/utils.js +0 -59
- package/src/mathOperations/div/main.d.ts +0 -2
- package/src/mathOperations/div/main.js +0 -10
- package/src/mathOperations/div/types.d.ts +0 -3
- package/src/mathOperations/div/utils.d.ts +0 -3
- package/src/mathOperations/div/utils.js +0 -99
- package/src/mathOperations/mul/main.d.ts +0 -2
- package/src/mathOperations/mul/main.js +0 -7
- package/src/mathOperations/mul/types.d.ts +0 -2
- package/src/mathOperations/mul/utils.d.ts +0 -5
- package/src/mathOperations/mul/utils.js +0 -50
- package/src/mathOperations/sub/main.d.ts +0 -2
- package/src/mathOperations/sub/main.js +0 -7
- package/src/mathOperations/sub/types.d.ts +0 -2
- package/src/mathOperations/sub/utils.d.ts +0 -5
- package/src/mathOperations/sub/utils.js +0 -81
- package/src/types.d.ts +0 -7
@@ -1,99 +0,0 @@
|
|
1
|
-
import { NIL } from "../../shared/constant.js";
|
2
|
-
export var divInner = function (_a, _b, isNegative, initLimit) {
|
3
|
-
var arrL = _a[0], intL = _a[1];
|
4
|
-
var arrR = _b[0], intR = _b[1];
|
5
|
-
var decDiff = (arrL.length - intL) - (arrR.length - intR);
|
6
|
-
var _c = [[arrR, 1], [arrL, -1]], L = _c[0], R = _c[1];
|
7
|
-
var _d = decDiff > 0 ? L : R, arr = _d[0], abs = _d[1];
|
8
|
-
for (var i = 0; i < decDiff * abs; i++) {
|
9
|
-
arr.push(48);
|
10
|
-
}
|
11
|
-
var digit = 48;
|
12
|
-
var limit = initLimit;
|
13
|
-
var isFloat = false;
|
14
|
-
var l = 0;
|
15
|
-
var r = arrR.length - 1;
|
16
|
-
var intLength = 0;
|
17
|
-
var result = [];
|
18
|
-
var lenArrayL = r - arrL.length;
|
19
|
-
for (var i = 0; i <= lenArrayL; i++) {
|
20
|
-
if (i === 0) {
|
21
|
-
isFloat = true;
|
22
|
-
intLength = 1;
|
23
|
-
}
|
24
|
-
result.push(48);
|
25
|
-
arrL.push(48);
|
26
|
-
limit -= 1;
|
27
|
-
}
|
28
|
-
while (r < arrL.length && limit >= 0) {
|
29
|
-
var comp = false;
|
30
|
-
if (arrL[l] === 48)
|
31
|
-
l += 1;
|
32
|
-
for (var i = 0; i < arrR.length; i++) {
|
33
|
-
if ((r - l + 1) < arrR.length)
|
34
|
-
comp = true;
|
35
|
-
if ((r - l + 1) !== arrR.length)
|
36
|
-
break;
|
37
|
-
if (arrL[l + i] !== arrR[i]) {
|
38
|
-
comp = arrL[l + i] < arrR[i];
|
39
|
-
break;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
if (comp) {
|
43
|
-
if (r < arrL.length && (result.length > 0 || digit !== 48)) {
|
44
|
-
if (!isFloat)
|
45
|
-
intLength += 1;
|
46
|
-
result.push(digit);
|
47
|
-
}
|
48
|
-
if (r >= arrL.length - 1) {
|
49
|
-
if (initLimit === limit)
|
50
|
-
isFloat = true;
|
51
|
-
arrL.push(48);
|
52
|
-
limit -= 1;
|
53
|
-
}
|
54
|
-
r += 1;
|
55
|
-
digit = 48;
|
56
|
-
continue;
|
57
|
-
}
|
58
|
-
for (var i = arrR.length - 1; i >= 0; i--) {
|
59
|
-
var idx = r - (arrR.length - 1 - i);
|
60
|
-
if (arrL[idx] < arrR[i]) {
|
61
|
-
arrL[idx] = arrL[idx] - arrR[i] + 58;
|
62
|
-
arrL[idx - 1] -= 1;
|
63
|
-
}
|
64
|
-
else {
|
65
|
-
arrL[idx] = arrL[idx] - arrR[i] + 48;
|
66
|
-
}
|
67
|
-
}
|
68
|
-
digit += 1;
|
69
|
-
}
|
70
|
-
var multipliedResult = [];
|
71
|
-
var count = 0;
|
72
|
-
if (result[0] === 48) {
|
73
|
-
var isGrZero = false;
|
74
|
-
for (var i = 0; i < result.length; i++) {
|
75
|
-
if (!isGrZero)
|
76
|
-
result[i] > 48 ? isGrZero = true : count += 1;
|
77
|
-
isGrZero && multipliedResult.push(result[i]);
|
78
|
-
}
|
79
|
-
for (var i = 0; i < count; i++) {
|
80
|
-
multipliedResult.push(48);
|
81
|
-
intLength -= 1;
|
82
|
-
}
|
83
|
-
}
|
84
|
-
return result.length === count
|
85
|
-
? NIL
|
86
|
-
: {
|
87
|
-
array: result[0] === 48 ? multipliedResult : result,
|
88
|
-
isFloat: isFloat,
|
89
|
-
isNegative: isNegative,
|
90
|
-
intLength: intLength,
|
91
|
-
};
|
92
|
-
};
|
93
|
-
export var divRoute = function (input, initValue, limit) {
|
94
|
-
return input.reduce(function (left, right) {
|
95
|
-
if (left.array.length === 0)
|
96
|
-
return right;
|
97
|
-
return divInner([left.array, left.intLength], [right.array, right.intLength], left.isNegative !== right.isNegative, limit);
|
98
|
-
}, initValue);
|
99
|
-
};
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import { DEFAULT } from "../../shared/constant.js";
|
2
|
-
import { a2s, s2a } from "../../shared/utils.js";
|
3
|
-
import { mulRoute } from "./utils.js";
|
4
|
-
/** This function multiplies numbers (as string). */
|
5
|
-
export var mul = function (strs) {
|
6
|
-
return a2s(mulRoute(strs.map(function (str) { return s2a(str); }), DEFAULT));
|
7
|
-
};
|
@@ -1,50 +0,0 @@
|
|
1
|
-
import { NIL } from "../../shared/constant.js";
|
2
|
-
/** This function multiplies 2 numbers (as array). */
|
3
|
-
export var mulInner = function (_a, _b, isNegative) {
|
4
|
-
var _c, _d;
|
5
|
-
var arrL = _a[0], intL = _a[1];
|
6
|
-
var arrR = _b[0], intR = _b[1];
|
7
|
-
if (arrL.length === 0 || arrR.length === 0 ||
|
8
|
-
(arrL.length === 1 && arrL[0] === 48) ||
|
9
|
-
(arrR.length === 1 && arrR[0] === 48)) {
|
10
|
-
return NIL;
|
11
|
-
}
|
12
|
-
var dec = (arrL.length - intL) + (arrR.length - intR);
|
13
|
-
var _e = arrL.length >= arrR.length
|
14
|
-
? [arrL, arrR]
|
15
|
-
: [arrR, arrL], left = _e[0], right = _e[1];
|
16
|
-
var sums = Array(right.length + left.length - 1);
|
17
|
-
for (var i = right.length - 1; i >= 0; i--) {
|
18
|
-
for (var j = left.length - 1; j >= 0; j--) {
|
19
|
-
var idx_1 = j + i;
|
20
|
-
sums[idx_1] = ((_c = sums[idx_1]) !== null && _c !== void 0 ? _c : 0) +
|
21
|
-
(left[j] - 48) * (right[i] - 48);
|
22
|
-
}
|
23
|
-
}
|
24
|
-
var result = Array(sums.length);
|
25
|
-
var idx = sums.length - 1;
|
26
|
-
var carryOver = 0;
|
27
|
-
var currNum = 0;
|
28
|
-
var nextNum = 0;
|
29
|
-
while (idx >= 0) {
|
30
|
-
currNum = (_d = sums[idx]) !== null && _d !== void 0 ? _d : 0;
|
31
|
-
nextNum = (currNum + carryOver) % 10;
|
32
|
-
carryOver = (carryOver + currNum) / 10 | 0;
|
33
|
-
result[idx] = nextNum + 48;
|
34
|
-
idx -= 1;
|
35
|
-
}
|
36
|
-
carryOver > 0 && result.unshift(carryOver + 48);
|
37
|
-
return {
|
38
|
-
array: result,
|
39
|
-
intLength: result.length - dec,
|
40
|
-
isFloat: dec > 0,
|
41
|
-
isNegative: isNegative,
|
42
|
-
};
|
43
|
-
};
|
44
|
-
export var mulRoute = function (input, initValue) {
|
45
|
-
return input.reduce(function (left, right) {
|
46
|
-
if (left.array.length === 0)
|
47
|
-
return right;
|
48
|
-
return mulInner([left.array, left.intLength], [right.array, right.intLength], left.isNegative !== right.isNegative);
|
49
|
-
}, initValue);
|
50
|
-
};
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import { DEFAULT } from "../../shared/constant.js";
|
2
|
-
import { a2s, s2a } from "../../shared/utils.js";
|
3
|
-
import { subRoute } from "./utils.js";
|
4
|
-
/** This function subtracts numbers (as string). */
|
5
|
-
export function sub(strs) {
|
6
|
-
return a2s(subRoute(strs.map(function (str) { return s2a(str); }), DEFAULT));
|
7
|
-
}
|
@@ -1,81 +0,0 @@
|
|
1
|
-
import { addInner } from "../add/utils.js";
|
2
|
-
/** This function subtracts 2 numbers (as array). */
|
3
|
-
export var subInner = function (_a, _b) {
|
4
|
-
var _c, _d;
|
5
|
-
var _e, _f;
|
6
|
-
var arrL = _a[0], intL = _a[1];
|
7
|
-
var arrR = _b[0], intR = _b[1];
|
8
|
-
var lenDiff = (intL - intR) * (intL > intR ? 1 : -1);
|
9
|
-
var _g = intL >= intR
|
10
|
-
? [arrL, arrR, intL, intR]
|
11
|
-
: [arrR, arrL, intR, intL], left = _g[0], right = _g[1], intLeft = _g[2], intRight = _g[3];
|
12
|
-
var fracLenL = left.length - intLeft;
|
13
|
-
var fracLenR = right.length - intRight;
|
14
|
-
var pl = lenDiff;
|
15
|
-
var pr = 0;
|
16
|
-
var isLeftBigger = lenDiff > 0;
|
17
|
-
var carryOver = false;
|
18
|
-
var isNegative = intLeft !== intL;
|
19
|
-
while (pl > left.length - 1) {
|
20
|
-
left.push(48);
|
21
|
-
}
|
22
|
-
while (pr < right.length) {
|
23
|
-
var sub = (((_e = left[pl]) !== null && _e !== void 0 ? _e : 48) - ((_f = right[pr]) !== null && _f !== void 0 ? _f : 48)) + 48;
|
24
|
-
if (!isLeftBigger && left[pl] > right[pr]) {
|
25
|
-
isLeftBigger = true;
|
26
|
-
}
|
27
|
-
if (!isLeftBigger && sub < 48 && lenDiff === 0) {
|
28
|
-
_c = [right, left], left = _c[0], right = _c[1];
|
29
|
-
_d = [intR, intL], intL = _d[0], intR = _d[1];
|
30
|
-
isLeftBigger = true;
|
31
|
-
isNegative = true;
|
32
|
-
continue;
|
33
|
-
}
|
34
|
-
if (sub < 48) {
|
35
|
-
sub += 10;
|
36
|
-
carryOver = true;
|
37
|
-
}
|
38
|
-
var plReverse = pl - 1;
|
39
|
-
var prReverse = pr - 1;
|
40
|
-
while (carryOver) {
|
41
|
-
if (left[plReverse] !== 48) {
|
42
|
-
plReverse >= 0 && (left[plReverse] -= 1);
|
43
|
-
prReverse >= 0 && (right[prReverse] -= 1);
|
44
|
-
carryOver = false;
|
45
|
-
}
|
46
|
-
else {
|
47
|
-
plReverse >= 0 && (left[plReverse] = 57);
|
48
|
-
prReverse >= 0 && (right[prReverse] = 57);
|
49
|
-
}
|
50
|
-
plReverse -= 1;
|
51
|
-
prReverse -= 1;
|
52
|
-
}
|
53
|
-
left[pl] = sub;
|
54
|
-
right[pr] = sub;
|
55
|
-
pl += 1;
|
56
|
-
pr += 1;
|
57
|
-
}
|
58
|
-
while (left[0] === 48 && left.length > 1 && fracLenL < left.length - 1) {
|
59
|
-
left.shift();
|
60
|
-
intLeft -= 1;
|
61
|
-
}
|
62
|
-
return {
|
63
|
-
array: left,
|
64
|
-
intLength: intLeft,
|
65
|
-
isNegative: isNegative,
|
66
|
-
isFloat: fracLenL + fracLenR > 0,
|
67
|
-
};
|
68
|
-
};
|
69
|
-
export var subRoute = function (input, initValue) {
|
70
|
-
return input.reduce(function (left, right) {
|
71
|
-
if (left.array.length === 0)
|
72
|
-
return right;
|
73
|
-
if (left.isNegative && right.isNegative) {
|
74
|
-
return subInner([right.array, right.intLength], [left.array, left.intLength]);
|
75
|
-
}
|
76
|
-
if (!left.isNegative && !right.isNegative) {
|
77
|
-
return subInner([left.array, left.intLength], [right.array, right.intLength]);
|
78
|
-
}
|
79
|
-
return addInner([left.array, left.intLength], [right.array, right.intLength], left.isNegative);
|
80
|
-
}, initValue);
|
81
|
-
};
|