@numio/bigmath 1.1.0 → 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 +16 -4
- package/package.json +7 -2
- package/src/IQR/main.js +5 -4
- package/src/IQR/types.d.ts +2 -2
- package/src/IQR/utils.js +3 -3
- package/src/MAD/main.js +5 -4
- package/src/MAD/types.d.ts +2 -2
- package/src/MAD/utils.js +2 -4
- package/src/compare/main.js +12 -10
- package/src/compare/types.d.ts +5 -5
- package/src/compare/utils.js +43 -64
- package/src/mean/main.js +5 -5
- package/src/mean/types.d.ts +2 -2
- package/src/mean/utils.js +3 -6
- package/src/operations/add/main.d.ts +1 -1
- package/src/operations/add/main.js +7 -6
- package/src/operations/div/main.d.ts +1 -1
- package/src/operations/div/main.js +6 -7
- package/src/operations/div/types.d.ts +2 -3
- package/src/operations/div/utils.d.ts +1 -2
- package/src/operations/div/utils.js +33 -93
- package/src/operations/mul/main.d.ts +1 -1
- package/src/operations/mul/main.js +5 -5
- package/src/operations/sub/main.d.ts +1 -1
- package/src/operations/sub/main.js +6 -5
- package/src/pipe/main.d.ts +6 -6
- package/src/pipe/main.js +23 -22
- package/src/pipe/utils.d.ts +7 -8
- package/src/pipe/utils.js +14 -18
- package/src/quartile/main.js +7 -7
- package/src/quartile/types.d.ts +6 -6
- package/src/quartile/utils.js +2 -10
- package/src/shared/constant.d.ts +0 -12
- package/src/shared/constant.js +0 -12
- package/src/shared/types.d.ts +6 -5
- package/src/shared/utils.d.ts +6 -4
- package/src/shared/utils.js +64 -71
- package/src/sort/main.js +7 -4
- package/src/sort/types.d.ts +3 -3
- package/src/sqrt/main.js +5 -5
- package/src/sqrt/types.d.ts +2 -2
- package/src/sqrt/utils.js +13 -23
- package/src/operations/add/types.d.ts +0 -2
- package/src/operations/add/utils.d.ts +0 -5
- package/src/operations/add/utils.js +0 -59
- package/src/operations/mul/types.d.ts +0 -2
- package/src/operations/mul/utils.d.ts +0 -5
- package/src/operations/mul/utils.js +0 -50
- package/src/operations/sub/types.d.ts +0 -2
- package/src/operations/sub/utils.d.ts +0 -5
- package/src/operations/sub/utils.js +0 -81
- package/src/types.d.ts +0 -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,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) {
|
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
|
-
};
|