mathjs 13.0.3 → 13.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +30 -1
- package/bin/cli.js +24 -10
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +12 -9
- package/lib/cjs/core/function/typed.js +3 -4
- package/lib/cjs/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
- package/lib/cjs/entry/impureFunctionsAny.generated.js +2 -2
- package/lib/cjs/entry/pureFunctionsAny.generated.js +6 -8
- package/lib/cjs/entry/typeChecks.js +18 -0
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -2
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/diff.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/fft.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/ifft.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/kron.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/map.js +3 -3
- package/lib/cjs/expression/embeddedDocs/function/special/zeta.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/utils/clone.js +1 -1
- package/lib/cjs/expression/function/evaluate.js +5 -0
- package/lib/cjs/expression/node/FunctionNode.js +10 -2
- package/lib/cjs/expression/transform/filter.transform.js +2 -2
- package/lib/cjs/expression/transform/map.transform.js +104 -37
- package/lib/cjs/expression/transform/utils/dimToZeroBase.js +23 -0
- package/lib/cjs/expression/transform/utils/lastDimToZeroBase.js +3 -4
- package/lib/cjs/function/arithmetic/hypot.js +3 -3
- package/lib/cjs/function/matrix/apply.js +1 -1
- package/lib/cjs/function/matrix/fft.js +3 -3
- package/lib/cjs/function/matrix/filter.js +2 -2
- package/lib/cjs/function/matrix/flatten.js +5 -6
- package/lib/cjs/function/matrix/ifft.js +2 -2
- package/lib/cjs/function/matrix/kron.js +4 -4
- package/lib/cjs/function/matrix/map.js +109 -18
- package/lib/cjs/function/matrix/size.js +7 -7
- package/lib/cjs/function/matrix/squeeze.js +3 -4
- package/lib/cjs/function/probability/random.js +1 -1
- package/lib/cjs/function/probability/randomInt.js +1 -1
- package/lib/cjs/function/statistics/cumsum.js +2 -2
- package/lib/cjs/function/trigonometry/acoth.js +2 -2
- package/lib/cjs/function/trigonometry/acsch.js +2 -2
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/DenseMatrix.js +3 -28
- package/lib/cjs/type/matrix/SparseMatrix.js +5 -8
- package/lib/cjs/utils/array.js +27 -0
- package/lib/cjs/utils/collection.js +1 -1
- package/lib/cjs/utils/customs.js +5 -12
- package/lib/cjs/utils/function.js +0 -14
- package/lib/cjs/utils/is.js +27 -0
- package/lib/cjs/utils/map.js +7 -23
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/create.js +9 -6
- package/lib/esm/core/function/typed.js +2 -3
- package/lib/esm/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
- package/lib/esm/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
- package/lib/esm/entry/impureFunctionsAny.generated.js +3 -3
- package/lib/esm/entry/pureFunctionsAny.generated.js +7 -9
- package/lib/esm/entry/typeChecks.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -2
- package/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/diff.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/fft.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/ifft.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/kron.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/map.js +3 -3
- package/lib/esm/expression/embeddedDocs/function/special/zeta.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/utils/clone.js +1 -1
- package/lib/esm/expression/function/compile.js +1 -1
- package/lib/esm/expression/function/evaluate.js +8 -3
- package/lib/esm/expression/node/FunctionNode.js +10 -2
- package/lib/esm/expression/parse.js +2 -2
- package/lib/esm/expression/transform/filter.transform.js +4 -4
- package/lib/esm/expression/transform/forEach.transform.js +4 -4
- package/lib/esm/expression/transform/map.transform.js +104 -37
- package/lib/esm/expression/transform/print.transform.js +2 -2
- package/lib/esm/expression/transform/utils/dimToZeroBase.js +16 -0
- package/lib/esm/expression/transform/utils/lastDimToZeroBase.js +4 -6
- package/lib/esm/function/algebra/decomposition/slu.js +1 -1
- package/lib/esm/function/algebra/derivative.js +15 -15
- package/lib/esm/function/algebra/lyap.js +4 -4
- package/lib/esm/function/algebra/simplify/util.js +3 -3
- package/lib/esm/function/algebra/simplifyConstant.js +9 -9
- package/lib/esm/function/algebra/solver/lsolve.js +3 -3
- package/lib/esm/function/algebra/solver/lsolveAll.js +3 -3
- package/lib/esm/function/algebra/solver/lusolve.js +5 -5
- package/lib/esm/function/algebra/solver/usolve.js +3 -3
- package/lib/esm/function/algebra/solver/usolveAll.js +3 -3
- package/lib/esm/function/algebra/sylvester.js +7 -7
- package/lib/esm/function/arithmetic/addScalar.js +4 -4
- package/lib/esm/function/arithmetic/ceil.js +6 -6
- package/lib/esm/function/arithmetic/divide.js +5 -5
- package/lib/esm/function/arithmetic/divideScalar.js +5 -5
- package/lib/esm/function/arithmetic/fix.js +5 -5
- package/lib/esm/function/arithmetic/floor.js +6 -6
- package/lib/esm/function/arithmetic/hypot.js +3 -3
- package/lib/esm/function/arithmetic/mod.js +3 -3
- package/lib/esm/function/arithmetic/multiply.js +7 -7
- package/lib/esm/function/arithmetic/multiplyScalar.js +4 -4
- package/lib/esm/function/arithmetic/norm.js +2 -2
- package/lib/esm/function/arithmetic/pow.js +6 -6
- package/lib/esm/function/arithmetic/round.js +7 -7
- package/lib/esm/function/arithmetic/subtractScalar.js +4 -4
- package/lib/esm/function/arithmetic/xgcd.js +1 -1
- package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
- package/lib/esm/function/combinatorics/catalan.js +1 -1
- package/lib/esm/function/combinatorics/composition.js +1 -1
- package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
- package/lib/esm/function/geometry/distance.js +4 -4
- package/lib/esm/function/geometry/intersect.js +2 -2
- package/lib/esm/function/logical/and.js +2 -2
- package/lib/esm/function/logical/or.js +2 -2
- package/lib/esm/function/logical/xor.js +2 -2
- package/lib/esm/function/matrix/apply.js +2 -2
- package/lib/esm/function/matrix/column.js +1 -1
- package/lib/esm/function/matrix/concat.js +1 -1
- package/lib/esm/function/matrix/count.js +1 -1
- package/lib/esm/function/matrix/cross.js +3 -3
- package/lib/esm/function/matrix/diag.js +10 -10
- package/lib/esm/function/matrix/diff.js +2 -2
- package/lib/esm/function/matrix/eigs.js +3 -3
- package/lib/esm/function/matrix/fft.js +3 -3
- package/lib/esm/function/matrix/filter.js +4 -4
- package/lib/esm/function/matrix/flatten.js +5 -6
- package/lib/esm/function/matrix/forEach.js +4 -4
- package/lib/esm/function/matrix/identity.js +6 -6
- package/lib/esm/function/matrix/ifft.js +3 -3
- package/lib/esm/function/matrix/inv.js +1 -1
- package/lib/esm/function/matrix/kron.js +7 -7
- package/lib/esm/function/matrix/map.js +110 -19
- package/lib/esm/function/matrix/matrixFromFunction.js +6 -6
- package/lib/esm/function/matrix/ones.js +2 -2
- package/lib/esm/function/matrix/partitionSelect.js +2 -2
- package/lib/esm/function/matrix/pinv.js +1 -1
- package/lib/esm/function/matrix/range.js +10 -10
- package/lib/esm/function/matrix/reshape.js +2 -2
- package/lib/esm/function/matrix/rotate.js +4 -4
- package/lib/esm/function/matrix/rotationMatrix.js +6 -6
- package/lib/esm/function/matrix/row.js +1 -1
- package/lib/esm/function/matrix/size.js +8 -8
- package/lib/esm/function/matrix/sort.js +4 -4
- package/lib/esm/function/matrix/sqrtm.js +1 -1
- package/lib/esm/function/matrix/squeeze.js +3 -4
- package/lib/esm/function/matrix/subset.js +2 -2
- package/lib/esm/function/matrix/zeros.js +2 -2
- package/lib/esm/function/probability/combinations.js +1 -1
- package/lib/esm/function/probability/combinationsWithRep.js +2 -2
- package/lib/esm/function/probability/kldivergence.js +4 -4
- package/lib/esm/function/probability/multinomial.js +1 -1
- package/lib/esm/function/probability/permutations.js +2 -2
- package/lib/esm/function/probability/pickRandom.js +6 -6
- package/lib/esm/function/probability/random.js +1 -1
- package/lib/esm/function/probability/randomInt.js +1 -1
- package/lib/esm/function/relational/compare.js +6 -6
- package/lib/esm/function/relational/deepEqual.js +1 -1
- package/lib/esm/function/relational/equal.js +1 -1
- package/lib/esm/function/relational/equalScalar.js +7 -7
- package/lib/esm/function/relational/equalText.js +1 -1
- package/lib/esm/function/relational/larger.js +3 -3
- package/lib/esm/function/relational/largerEq.js +4 -4
- package/lib/esm/function/relational/smaller.js +3 -3
- package/lib/esm/function/relational/smallerEq.js +3 -3
- package/lib/esm/function/relational/unequal.js +1 -1
- package/lib/esm/function/set/setCartesian.js +1 -1
- package/lib/esm/function/set/setDifference.js +1 -1
- package/lib/esm/function/set/setDistinct.js +1 -1
- package/lib/esm/function/set/setIntersect.js +1 -1
- package/lib/esm/function/set/setIsSubset.js +1 -1
- package/lib/esm/function/set/setMultiplicity.js +1 -1
- package/lib/esm/function/set/setPowerset.js +1 -1
- package/lib/esm/function/set/setSize.js +2 -2
- package/lib/esm/function/set/setSymDifference.js +1 -1
- package/lib/esm/function/set/setUnion.js +1 -1
- package/lib/esm/function/signal/freqz.js +6 -6
- package/lib/esm/function/statistics/corr.js +2 -2
- package/lib/esm/function/statistics/cumsum.js +3 -3
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/median.js +3 -3
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/statistics/prod.js +1 -1
- package/lib/esm/function/statistics/variance.js +2 -2
- package/lib/esm/function/string/bin.js +2 -2
- package/lib/esm/function/string/hex.js +2 -2
- package/lib/esm/function/string/oct.js +2 -2
- package/lib/esm/function/trigonometry/acoth.js +2 -2
- package/lib/esm/function/trigonometry/acsch.js +2 -2
- package/lib/esm/type/bigint.js +1 -1
- package/lib/esm/type/complex/function/complex.js +2 -2
- package/lib/esm/type/fraction/function/fraction.js +1 -1
- package/lib/esm/type/matrix/DenseMatrix.js +13 -38
- package/lib/esm/type/matrix/SparseMatrix.js +5 -8
- package/lib/esm/type/matrix/function/index.js +1 -1
- package/lib/esm/type/matrix/function/matrix.js +1 -1
- package/lib/esm/type/matrix/function/sparse.js +2 -2
- package/lib/esm/type/number.js +1 -1
- package/lib/esm/type/unit/function/createUnit.js +3 -3
- package/lib/esm/type/unit/function/splitUnit.js +1 -1
- package/lib/esm/type/unit/function/unit.js +2 -2
- package/lib/esm/utils/array.js +26 -0
- package/lib/esm/utils/collection.js +1 -1
- package/lib/esm/utils/customs.js +5 -12
- package/lib/esm/utils/function.js +0 -13
- package/lib/esm/utils/is.js +24 -0
- package/lib/esm/utils/map.js +7 -22
- package/lib/esm/version.js +1 -1
- package/package.json +13 -13
- package/types/index.d.ts +57 -18
@@ -55,24 +55,24 @@ export var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
55
55
|
return typed('divide', extend({
|
56
56
|
// we extend the signatures of divideScalar with signatures dealing with matrices
|
57
57
|
|
58
|
-
'Array | Matrix, Array | Matrix': function
|
58
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(x, y) {
|
59
59
|
// TODO: implement matrix right division using pseudo inverse
|
60
60
|
// https://www.mathworks.nl/help/matlab/ref/mrdivide.html
|
61
61
|
// https://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html
|
62
62
|
// https://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour
|
63
63
|
return multiply(x, inv(y));
|
64
64
|
},
|
65
|
-
'DenseMatrix, any': function
|
65
|
+
'DenseMatrix, any': function DenseMatrix_any(x, y) {
|
66
66
|
return matAlgo14xDs(x, y, divideScalar, false);
|
67
67
|
},
|
68
|
-
'SparseMatrix, any': function
|
68
|
+
'SparseMatrix, any': function SparseMatrix_any(x, y) {
|
69
69
|
return matAlgo11xS0s(x, y, divideScalar, false);
|
70
70
|
},
|
71
|
-
'Array, any': function
|
71
|
+
'Array, any': function Array_any(x, y) {
|
72
72
|
// use matrix implementation
|
73
73
|
return matAlgo14xDs(matrix(x), y, divideScalar, false).valueOf();
|
74
74
|
},
|
75
|
-
'any, Array | Matrix': function
|
75
|
+
'any, Array | Matrix': function any_Array__Matrix(x, y) {
|
76
76
|
return multiply(x, inv(y));
|
77
77
|
}
|
78
78
|
}, divideScalar.signatures));
|
@@ -19,19 +19,19 @@ export var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref
|
|
19
19
|
* @private
|
20
20
|
*/
|
21
21
|
return typed(name, {
|
22
|
-
'number, number': function
|
22
|
+
'number, number': function number_number(x, y) {
|
23
23
|
return x / y;
|
24
24
|
},
|
25
|
-
'Complex, Complex': function
|
25
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
26
26
|
return x.div(y);
|
27
27
|
},
|
28
|
-
'BigNumber, BigNumber': function
|
28
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
29
29
|
return x.div(y);
|
30
30
|
},
|
31
|
-
'bigint, bigint': function
|
31
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
32
32
|
return x / y;
|
33
33
|
},
|
34
|
-
'Fraction, Fraction': function
|
34
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
35
35
|
return x.div(y);
|
36
36
|
},
|
37
37
|
'Unit, number | Complex | Fraction | BigNumber | Unit': (x, y) => x.divide(y),
|
@@ -14,7 +14,7 @@ export var createFixNumber = /* #__PURE__ */factory(name, ['typed', 'ceil', 'flo
|
|
14
14
|
number: function number(x) {
|
15
15
|
return x > 0 ? floor(x) : ceil(x);
|
16
16
|
},
|
17
|
-
'number, number': function
|
17
|
+
'number, number': function number_number(x, n) {
|
18
18
|
return x > 0 ? floor(x, n) : ceil(x, n);
|
19
19
|
}
|
20
20
|
});
|
@@ -84,23 +84,23 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
84
84
|
Complex: function Complex(x) {
|
85
85
|
return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));
|
86
86
|
},
|
87
|
-
'Complex, number': function
|
87
|
+
'Complex, number': function Complex_number(x, n) {
|
88
88
|
return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));
|
89
89
|
},
|
90
|
-
'Complex, BigNumber': function
|
90
|
+
'Complex, BigNumber': function Complex_BigNumber(x, bn) {
|
91
91
|
var n = bn.toNumber();
|
92
92
|
return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));
|
93
93
|
},
|
94
94
|
BigNumber: function BigNumber(x) {
|
95
95
|
return x.isNegative() ? ceil(x) : floor(x);
|
96
96
|
},
|
97
|
-
'BigNumber, number | BigNumber': function
|
97
|
+
'BigNumber, number | BigNumber': function BigNumber_number__BigNumber(x, n) {
|
98
98
|
return x.isNegative() ? ceil(x, n) : floor(x, n);
|
99
99
|
},
|
100
100
|
Fraction: function Fraction(x) {
|
101
101
|
return x.s < 0 ? x.ceil() : x.floor();
|
102
102
|
},
|
103
|
-
'Fraction, number | BigNumber': function
|
103
|
+
'Fraction, number | BigNumber': function Fraction_number__BigNumber(x, n) {
|
104
104
|
return x.s < 0 ? ceil(x, n) : floor(x, n);
|
105
105
|
},
|
106
106
|
'Array | Matrix': typed.referToSelf(self => x => {
|
@@ -22,7 +22,7 @@ export var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config',
|
|
22
22
|
return Math.floor(x);
|
23
23
|
}
|
24
24
|
},
|
25
|
-
'number, number': function
|
25
|
+
'number, number': function number_number(x, n) {
|
26
26
|
if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
|
27
27
|
return round(x, n);
|
28
28
|
} else {
|
@@ -106,10 +106,10 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
106
106
|
Complex: function Complex(x) {
|
107
107
|
return x.floor();
|
108
108
|
},
|
109
|
-
'Complex, number': function
|
109
|
+
'Complex, number': function Complex_number(x, n) {
|
110
110
|
return x.floor(n);
|
111
111
|
},
|
112
|
-
'Complex, BigNumber': function
|
112
|
+
'Complex, BigNumber': function Complex_BigNumber(x, n) {
|
113
113
|
return x.floor(n.toNumber());
|
114
114
|
},
|
115
115
|
BigNumber: function BigNumber(x) {
|
@@ -119,7 +119,7 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
119
119
|
return x.floor();
|
120
120
|
}
|
121
121
|
},
|
122
|
-
'BigNumber, BigNumber': function
|
122
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
|
123
123
|
if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
|
124
124
|
return round(x, n);
|
125
125
|
} else {
|
@@ -129,10 +129,10 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
129
129
|
Fraction: function Fraction(x) {
|
130
130
|
return x.floor();
|
131
131
|
},
|
132
|
-
'Fraction, number': function
|
132
|
+
'Fraction, number': function Fraction_number(x, n) {
|
133
133
|
return x.floor(n);
|
134
134
|
},
|
135
|
-
'Fraction, BigNumber': function
|
135
|
+
'Fraction, BigNumber': function Fraction_BigNumber(x, n) {
|
136
136
|
return x.floor(n.toNumber());
|
137
137
|
},
|
138
138
|
'Array | Matrix': typed.referToSelf(self => x => {
|
@@ -15,11 +15,11 @@ export var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
15
15
|
isPositive
|
16
16
|
} = _ref;
|
17
17
|
/**
|
18
|
-
* Calculate the
|
18
|
+
* Calculate the hypotenuse of a list with values. The hypotenuse is defined as:
|
19
19
|
*
|
20
20
|
* hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...)
|
21
21
|
*
|
22
|
-
* For matrix input, the
|
22
|
+
* For matrix input, the hypotenuse is calculated for all values in the matrix.
|
23
23
|
*
|
24
24
|
* Syntax:
|
25
25
|
*
|
@@ -49,7 +49,7 @@ export var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
49
49
|
});
|
50
50
|
|
51
51
|
/**
|
52
|
-
* Calculate the
|
52
|
+
* Calculate the hypotenuse for an Array with values
|
53
53
|
* @param {Array.<number | BigNumber>} args
|
54
54
|
* @return {number | BigNumber} Returns the result
|
55
55
|
* @private
|
@@ -90,10 +90,10 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
90
90
|
*/
|
91
91
|
return typed(name, {
|
92
92
|
'number, number': _modNumber,
|
93
|
-
'BigNumber, BigNumber': function
|
93
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
94
94
|
return y.isZero() ? x : x.sub(y.mul(floor(x.div(y))));
|
95
95
|
},
|
96
|
-
'bigint, bigint': function
|
96
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
97
97
|
if (y === 0n) {
|
98
98
|
return x;
|
99
99
|
}
|
@@ -103,7 +103,7 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
103
103
|
}
|
104
104
|
return x % y;
|
105
105
|
},
|
106
|
-
'Fraction, Fraction': function
|
106
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
107
107
|
return y.equals(0) ? x : x.sub(y.mul(floor(x.div(y))));
|
108
108
|
}
|
109
109
|
}, matrixAlgorithmSuite({
|
@@ -817,7 +817,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
817
817
|
// return array or scalar
|
818
818
|
return isMatrix(m) ? m.valueOf() : m;
|
819
819
|
}),
|
820
|
-
'Matrix, Matrix': function
|
820
|
+
'Matrix, Matrix': function Matrix_Matrix(x, y) {
|
821
821
|
// dimensions
|
822
822
|
var xsize = x.size();
|
823
823
|
var ysize = y.size();
|
@@ -848,23 +848,23 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
848
848
|
// use Matrix * Matrix implementation
|
849
849
|
return self(matrix(x, y.storage()), y);
|
850
850
|
}),
|
851
|
-
'SparseMatrix, any': function
|
851
|
+
'SparseMatrix, any': function SparseMatrix_any(x, y) {
|
852
852
|
return matAlgo11xS0s(x, y, multiplyScalar, false);
|
853
853
|
},
|
854
|
-
'DenseMatrix, any': function
|
854
|
+
'DenseMatrix, any': function DenseMatrix_any(x, y) {
|
855
855
|
return matAlgo14xDs(x, y, multiplyScalar, false);
|
856
856
|
},
|
857
|
-
'any, SparseMatrix': function
|
857
|
+
'any, SparseMatrix': function any_SparseMatrix(x, y) {
|
858
858
|
return matAlgo11xS0s(y, x, multiplyScalar, true);
|
859
859
|
},
|
860
|
-
'any, DenseMatrix': function
|
860
|
+
'any, DenseMatrix': function any_DenseMatrix(x, y) {
|
861
861
|
return matAlgo14xDs(y, x, multiplyScalar, true);
|
862
862
|
},
|
863
|
-
'Array, any': function
|
863
|
+
'Array, any': function Array_any(x, y) {
|
864
864
|
// use matrix implementation
|
865
865
|
return matAlgo14xDs(matrix(x), y, multiplyScalar, false).valueOf();
|
866
866
|
},
|
867
|
-
'any, Array': function
|
867
|
+
'any, Array': function any_Array(x, y) {
|
868
868
|
// use matrix implementation
|
869
869
|
return matAlgo14xDs(matrix(y), x, multiplyScalar, true).valueOf();
|
870
870
|
},
|
@@ -20,16 +20,16 @@ export var createMultiplyScalar = /* #__PURE__ */factory(name, dependencies, _re
|
|
20
20
|
*/
|
21
21
|
return typed('multiplyScalar', {
|
22
22
|
'number, number': multiplyNumber,
|
23
|
-
'Complex, Complex': function
|
23
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
24
24
|
return x.mul(y);
|
25
25
|
},
|
26
|
-
'BigNumber, BigNumber': function
|
26
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
27
27
|
return x.times(y);
|
28
28
|
},
|
29
|
-
'bigint, bigint': function
|
29
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
30
30
|
return x * y;
|
31
31
|
},
|
32
|
-
'Fraction, Fraction': function
|
32
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
33
33
|
return x.mul(y);
|
34
34
|
},
|
35
35
|
'number | Fraction | BigNumber | Complex, Unit': (x, y) => y.multiply(x),
|
@@ -74,10 +74,10 @@ export var createNorm = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
74
74
|
Matrix: function Matrix(x) {
|
75
75
|
return _norm(x, 2);
|
76
76
|
},
|
77
|
-
'Array, number | BigNumber | string': function
|
77
|
+
'Array, number | BigNumber | string': function Array_number__BigNumber__string(x, p) {
|
78
78
|
return _norm(matrix(x), p);
|
79
79
|
},
|
80
|
-
'Matrix, number | BigNumber | string': function
|
80
|
+
'Matrix, number | BigNumber | string': function Matrix_number__BigNumber__string(x, p) {
|
81
81
|
return _norm(x, p);
|
82
82
|
}
|
83
83
|
});
|
@@ -56,10 +56,10 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
56
56
|
*/
|
57
57
|
return typed(name, {
|
58
58
|
'number, number': _pow,
|
59
|
-
'Complex, Complex': function
|
59
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
60
60
|
return x.pow(y);
|
61
61
|
},
|
62
|
-
'BigNumber, BigNumber': function
|
62
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
63
63
|
if (y.isInteger() || x >= 0 || config.predictable) {
|
64
64
|
return x.pow(y);
|
65
65
|
} else {
|
@@ -67,7 +67,7 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
67
67
|
}
|
68
68
|
},
|
69
69
|
'bigint, bigint': (x, y) => x ** y,
|
70
|
-
'Fraction, Fraction': function
|
70
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
71
71
|
var result = x.pow(y);
|
72
72
|
if (result != null) {
|
73
73
|
return result;
|
@@ -79,14 +79,14 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
79
79
|
}
|
80
80
|
},
|
81
81
|
'Array, number': _powArray,
|
82
|
-
'Array, BigNumber': function
|
82
|
+
'Array, BigNumber': function Array_BigNumber(x, y) {
|
83
83
|
return _powArray(x, y.toNumber());
|
84
84
|
},
|
85
85
|
'Matrix, number': _powMatrix,
|
86
|
-
'Matrix, BigNumber': function
|
86
|
+
'Matrix, BigNumber': function Matrix_BigNumber(x, y) {
|
87
87
|
return _powMatrix(x, y.toNumber());
|
88
88
|
},
|
89
|
-
'Unit, number | BigNumber': function
|
89
|
+
'Unit, number | BigNumber': function Unit_number__BigNumber(x, y) {
|
90
90
|
return x.pow(y);
|
91
91
|
}
|
92
92
|
});
|
@@ -85,7 +85,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
85
85
|
var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
|
86
86
|
return roundNumber(xSelected);
|
87
87
|
},
|
88
|
-
'number, number': function
|
88
|
+
'number, number': function number_number(x, n) {
|
89
89
|
// Same as number: unless user specifies more decimals than relTol
|
90
90
|
var epsilonExponent = toExponent(config.relTol);
|
91
91
|
if (n >= epsilonExponent) {
|
@@ -95,7 +95,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
95
95
|
var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
|
96
96
|
return roundNumber(xSelected, n);
|
97
97
|
},
|
98
|
-
'number, BigNumber': function
|
98
|
+
'number, BigNumber': function number_BigNumber(x, n) {
|
99
99
|
if (!n.isInteger()) {
|
100
100
|
throw new TypeError(NO_INT);
|
101
101
|
}
|
@@ -104,13 +104,13 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
104
104
|
Complex: function Complex(x) {
|
105
105
|
return x.round();
|
106
106
|
},
|
107
|
-
'Complex, number': function
|
107
|
+
'Complex, number': function Complex_number(x, n) {
|
108
108
|
if (n % 1) {
|
109
109
|
throw new TypeError(NO_INT);
|
110
110
|
}
|
111
111
|
return x.round(n);
|
112
112
|
},
|
113
|
-
'Complex, BigNumber': function
|
113
|
+
'Complex, BigNumber': function Complex_BigNumber(x, n) {
|
114
114
|
if (!n.isInteger()) {
|
115
115
|
throw new TypeError(NO_INT);
|
116
116
|
}
|
@@ -123,7 +123,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
123
123
|
var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
|
124
124
|
return xSelected.toDecimalPlaces(0);
|
125
125
|
},
|
126
|
-
'BigNumber, BigNumber': function
|
126
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
|
127
127
|
if (!n.isInteger()) {
|
128
128
|
throw new TypeError(NO_INT);
|
129
129
|
}
|
@@ -140,13 +140,13 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
140
140
|
Fraction: function Fraction(x) {
|
141
141
|
return x.round();
|
142
142
|
},
|
143
|
-
'Fraction, number': function
|
143
|
+
'Fraction, number': function Fraction_number(x, n) {
|
144
144
|
if (n % 1) {
|
145
145
|
throw new TypeError(NO_INT);
|
146
146
|
}
|
147
147
|
return x.round(n);
|
148
148
|
},
|
149
|
-
'Fraction, BigNumber': function
|
149
|
+
'Fraction, BigNumber': function Fraction_BigNumber(x, n) {
|
150
150
|
if (!n.isInteger()) {
|
151
151
|
throw new TypeError(NO_INT);
|
152
152
|
}
|
@@ -20,16 +20,16 @@ export var createSubtractScalar = /* #__PURE__ */factory(name, dependencies, _re
|
|
20
20
|
*/
|
21
21
|
return typed(name, {
|
22
22
|
'number, number': subtractNumber,
|
23
|
-
'Complex, Complex': function
|
23
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
24
24
|
return x.sub(y);
|
25
25
|
},
|
26
|
-
'BigNumber, BigNumber': function
|
26
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
27
27
|
return x.minus(y);
|
28
28
|
},
|
29
|
-
'bigint, bigint': function
|
29
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
30
30
|
return x - y;
|
31
31
|
},
|
32
|
-
'Fraction, Fraction': function
|
32
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
33
33
|
return x.sub(y);
|
34
34
|
},
|
35
35
|
'Unit, Unit': typed.referToSelf(self => (x, y) => {
|
@@ -33,7 +33,7 @@ export var createXgcd = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
33
33
|
* where `div = gcd(a, b)` and `a*m + b*n = div`
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
|
-
'number, number': function
|
36
|
+
'number, number': function number_number(a, b) {
|
37
37
|
var res = xgcdNumber(a, b);
|
38
38
|
return config.matrix === 'Array' ? res : matrix(res);
|
39
39
|
},
|
@@ -31,7 +31,7 @@ export var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
31
31
|
* @return {Number | BigNumber} B(n)
|
32
32
|
*/
|
33
33
|
return typed(name, {
|
34
|
-
'number | BigNumber': function
|
34
|
+
'number | BigNumber': function number__BigNumber(n) {
|
35
35
|
if (!isInteger(n) || isNegative(n)) {
|
36
36
|
throw new TypeError('Non-negative integer value expected in function bellNumbers');
|
37
37
|
}
|
@@ -33,7 +33,7 @@ export var createCatalan = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
33
33
|
* @return {Number | BigNumber} Cn(n)
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
|
-
'number | BigNumber': function
|
36
|
+
'number | BigNumber': function number__BigNumber(n) {
|
37
37
|
if (!isInteger(n) || isNegative(n)) {
|
38
38
|
throw new TypeError('Non-negative integer value expected in function catalan');
|
39
39
|
}
|
@@ -34,7 +34,7 @@ export var createComposition = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
34
34
|
* @return {Number | BigNumber} Returns the composition counts of n into k parts.
|
35
35
|
*/
|
36
36
|
return typed(name, {
|
37
|
-
'number | BigNumber, number | BigNumber': function
|
37
|
+
'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {
|
38
38
|
if (!isInteger(n) || !isPositive(n) || !isInteger(k) || !isPositive(k)) {
|
39
39
|
throw new TypeError('Positive integer value expected in function composition');
|
40
40
|
} else if (larger(k, n)) {
|
@@ -49,7 +49,7 @@ export var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
49
49
|
* @return {Number | BigNumber} S(n,k)
|
50
50
|
*/
|
51
51
|
return typed(name, {
|
52
|
-
'number | BigNumber, number | BigNumber': function
|
52
|
+
'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {
|
53
53
|
if (!isInteger(n) || isNegative(n) || !isInteger(k) || isNegative(k)) {
|
54
54
|
throw new TypeError('Non-negative integer value expected in function stirlingS2');
|
55
55
|
} else if (larger(k, n)) {
|
@@ -65,7 +65,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
65
65
|
* @return {Number | BigNumber} Returns the distance from two/three points
|
66
66
|
*/
|
67
67
|
return typed(name, {
|
68
|
-
'Array, Array, Array': function
|
68
|
+
'Array, Array, Array': function Array_Array_Array(x, y, z) {
|
69
69
|
// Point to Line 2D (x=Point, y=LinePoint1, z=LinePoint2)
|
70
70
|
if (x.length === 2 && y.length === 2 && z.length === 2) {
|
71
71
|
if (!_2d(x)) {
|
@@ -88,7 +88,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
88
88
|
throw new TypeError('Invalid Arguments: Try again');
|
89
89
|
}
|
90
90
|
},
|
91
|
-
'Object, Object, Object': function
|
91
|
+
'Object, Object, Object': function Object_Object_Object(x, y, z) {
|
92
92
|
if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {
|
93
93
|
if (!_2d(x)) {
|
94
94
|
throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');
|
@@ -114,7 +114,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
114
114
|
throw new TypeError('Invalid Arguments: Try again');
|
115
115
|
}
|
116
116
|
},
|
117
|
-
'Array, Array': function
|
117
|
+
'Array, Array': function Array_Array(x, y) {
|
118
118
|
// Point to Line 2D (x=[pointX, pointY], y=[x-coeff, y-coeff, const])
|
119
119
|
if (x.length === 2 && y.length === 3) {
|
120
120
|
if (!_2d(x)) {
|
@@ -146,7 +146,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
146
146
|
throw new TypeError('Invalid Arguments: Try again');
|
147
147
|
}
|
148
148
|
},
|
149
|
-
'Object, Object': function
|
149
|
+
'Object, Object': function Object_Object(x, y) {
|
150
150
|
if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {
|
151
151
|
if (!_2d(x)) {
|
152
152
|
throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');
|
@@ -49,11 +49,11 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
49
49
|
return typed('intersect', {
|
50
50
|
'Array, Array, Array': _AAA,
|
51
51
|
'Array, Array, Array, Array': _AAAA,
|
52
|
-
'Matrix, Matrix, Matrix': function
|
52
|
+
'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(x, y, plane) {
|
53
53
|
var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());
|
54
54
|
return arr === null ? null : matrix(arr);
|
55
55
|
},
|
56
|
-
'Matrix, Matrix, Matrix, Matrix': function
|
56
|
+
'Matrix, Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix_Matrix(w, x, y, z) {
|
57
57
|
// TODO: output matrix type should match input matrix type
|
58
58
|
var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());
|
59
59
|
return arr === null ? null : matrix(arr);
|
@@ -67,10 +67,10 @@ export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
67
67
|
*/
|
68
68
|
return typed(name, {
|
69
69
|
'number, number': andNumber,
|
70
|
-
'Complex, Complex': function
|
70
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
71
71
|
return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);
|
72
72
|
},
|
73
|
-
'BigNumber, BigNumber': function
|
73
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
74
74
|
return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();
|
75
75
|
},
|
76
76
|
'bigint, bigint': andNumber,
|
@@ -61,10 +61,10 @@ export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
61
61
|
*/
|
62
62
|
return typed(name, {
|
63
63
|
'number, number': orNumber,
|
64
|
-
'Complex, Complex': function
|
64
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
65
65
|
return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;
|
66
66
|
},
|
67
|
-
'BigNumber, BigNumber': function
|
67
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
68
68
|
return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();
|
69
69
|
},
|
70
70
|
'bigint, bigint': orNumber,
|
@@ -60,11 +60,11 @@ export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
60
60
|
*/
|
61
61
|
return typed(name, {
|
62
62
|
'number, number': xorNumber,
|
63
|
-
'Complex, Complex': function
|
63
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
64
64
|
return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);
|
65
65
|
},
|
66
66
|
'bigint, bigint': xorNumber,
|
67
|
-
'BigNumber, BigNumber': function
|
67
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
68
68
|
return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());
|
69
69
|
},
|
70
70
|
'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))
|
@@ -42,7 +42,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
42
42
|
* @return {Array | Matrix} res The residual matrix with the function applied over some dimension.
|
43
43
|
*/
|
44
44
|
return typed(name, {
|
45
|
-
'Array | Matrix, number | BigNumber, function': function
|
45
|
+
'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {
|
46
46
|
if (!isInteger(dim)) {
|
47
47
|
throw new TypeError('Integer number expected for dimension');
|
48
48
|
}
|
@@ -51,7 +51,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
51
51
|
throw new IndexError(dim, size.length);
|
52
52
|
}
|
53
53
|
if (isMatrix(mat)) {
|
54
|
-
return mat.create(_apply(mat.valueOf(), dim, callback));
|
54
|
+
return mat.create(_apply(mat.valueOf(), dim, callback), mat.datatype());
|
55
55
|
} else {
|
56
56
|
return _apply(mat, dim, callback);
|
57
57
|
}
|
@@ -34,7 +34,7 @@ export var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
36
|
'Matrix, number': _column,
|
37
|
-
'Array, number': function
|
37
|
+
'Array, number': function Array_number(value, column) {
|
38
38
|
return _column(matrix(clone(value)), column).valueOf();
|
39
39
|
}
|
40
40
|
});
|
@@ -43,7 +43,7 @@ export var createConcat = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
43
43
|
*/
|
44
44
|
return typed(name, {
|
45
45
|
// TODO: change signature to '...Array | Matrix, dim?' when supported
|
46
|
-
'...Array | Matrix | number | BigNumber': function
|
46
|
+
'...Array | Matrix | number | BigNumber': function Array__Matrix__number__BigNumber(args) {
|
47
47
|
var i;
|
48
48
|
var len = args.length;
|
49
49
|
var dim = -1; // zero-based dimension
|
@@ -32,7 +32,7 @@ export var createCount = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
32
32
|
string: function string(x) {
|
33
33
|
return x.length;
|
34
34
|
},
|
35
|
-
'Matrix | Array': function
|
35
|
+
'Matrix | Array': function Matrix__Array(x) {
|
36
36
|
return prod(size(x));
|
37
37
|
}
|
38
38
|
});
|
@@ -43,13 +43,13 @@ export var createCross = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
43
43
|
* @return {Array | Matrix} Returns the cross product of `x` and `y`
|
44
44
|
*/
|
45
45
|
return typed(name, {
|
46
|
-
'Matrix, Matrix': function
|
46
|
+
'Matrix, Matrix': function Matrix_Matrix(x, y) {
|
47
47
|
return matrix(_cross(x.toArray(), y.toArray()));
|
48
48
|
},
|
49
|
-
'Matrix, Array': function
|
49
|
+
'Matrix, Array': function Matrix_Array(x, y) {
|
50
50
|
return matrix(_cross(x.toArray(), y));
|
51
51
|
},
|
52
|
-
'Array, Matrix': function
|
52
|
+
'Array, Matrix': function Array_Matrix(x, y) {
|
53
53
|
return matrix(_cross(x, y.toArray()));
|
54
54
|
},
|
55
55
|
'Array, Array': _cross
|