mathjs 13.0.3 → 13.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +17 -1
- 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 +1 -1
- 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/function.js +0 -14
- package/lib/cjs/utils/is.js +27 -0
- package/lib/cjs/utils/map.js +2 -20
- 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 +1 -1
- 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/function.js +0 -13
- package/lib/esm/utils/is.js +24 -0
- package/lib/esm/utils/map.js +2 -19
- package/lib/esm/version.js +1 -1
- package/package.json +13 -13
- package/types/index.d.ts +57 -18
@@ -57,28 +57,28 @@ export var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, _re
|
|
57
57
|
string: function string(format) {
|
58
58
|
return matrix(format);
|
59
59
|
},
|
60
|
-
'number | BigNumber | Complex | Unit': function
|
60
|
+
'number | BigNumber | Complex | Unit': function number__BigNumber__Complex__Unit(theta) {
|
61
61
|
return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);
|
62
62
|
},
|
63
|
-
'number | BigNumber | Complex | Unit, string': function
|
63
|
+
'number | BigNumber | Complex | Unit, string': function number__BigNumber__Complex__Unit_string(theta, format) {
|
64
64
|
return _rotationMatrix2x2(theta, format);
|
65
65
|
},
|
66
|
-
'number | BigNumber | Complex | Unit, Array': function
|
66
|
+
'number | BigNumber | Complex | Unit, Array': function number__BigNumber__Complex__Unit_Array(theta, v) {
|
67
67
|
var matrixV = matrix(v);
|
68
68
|
_validateVector(matrixV);
|
69
69
|
return _rotationMatrix3x3(theta, matrixV, undefined);
|
70
70
|
},
|
71
|
-
'number | BigNumber | Complex | Unit, Matrix': function
|
71
|
+
'number | BigNumber | Complex | Unit, Matrix': function number__BigNumber__Complex__Unit_Matrix(theta, v) {
|
72
72
|
_validateVector(v);
|
73
73
|
var storageType = v.storage() || (config.matrix === 'Matrix' ? 'dense' : undefined);
|
74
74
|
return _rotationMatrix3x3(theta, v, storageType);
|
75
75
|
},
|
76
|
-
'number | BigNumber | Complex | Unit, Array, string': function
|
76
|
+
'number | BigNumber | Complex | Unit, Array, string': function number__BigNumber__Complex__Unit_Array_string(theta, v, format) {
|
77
77
|
var matrixV = matrix(v);
|
78
78
|
_validateVector(matrixV);
|
79
79
|
return _rotationMatrix3x3(theta, matrixV, format);
|
80
80
|
},
|
81
|
-
'number | BigNumber | Complex | Unit, Matrix, string': function
|
81
|
+
'number | BigNumber | Complex | Unit, Matrix, string': function number__BigNumber__Complex__Unit_Matrix_string(theta, v, format) {
|
82
82
|
_validateVector(v);
|
83
83
|
return _rotationMatrix3x3(theta, v, format);
|
84
84
|
}
|
@@ -34,7 +34,7 @@ export var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
36
|
'Matrix, number': _row,
|
37
|
-
'Array, number': function
|
37
|
+
'Array, number': function Array_number(value, row) {
|
38
38
|
return _row(matrix(clone(value)), row).valueOf();
|
39
39
|
}
|
40
40
|
});
|
@@ -18,12 +18,12 @@ export var createSize = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
18
18
|
*
|
19
19
|
* Examples:
|
20
20
|
*
|
21
|
-
* math.size(2.3)
|
22
|
-
* math.size('hello world')
|
21
|
+
* math.size(2.3) // returns []
|
22
|
+
* math.size('hello world') // returns [11]
|
23
23
|
*
|
24
24
|
* const A = [[1, 2, 3], [4, 5, 6]]
|
25
|
-
* math.size(A)
|
26
|
-
* math.size(math.range(1,6))
|
25
|
+
* math.size(A) // returns [2, 3]
|
26
|
+
* math.size(math.range(1,6).toArray()) // returns [5]
|
27
27
|
*
|
28
28
|
* See also:
|
29
29
|
*
|
@@ -34,15 +34,15 @@ export var createSize = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
36
|
Matrix: function Matrix(x) {
|
37
|
-
return x.create(x.size());
|
37
|
+
return x.create(x.size(), 'number');
|
38
38
|
},
|
39
39
|
Array: arraySize,
|
40
40
|
string: function string(x) {
|
41
|
-
return config.matrix === 'Array' ? [x.length] : matrix([x.length]);
|
41
|
+
return config.matrix === 'Array' ? [x.length] : matrix([x.length], 'dense', 'number');
|
42
42
|
},
|
43
|
-
'number | Complex | BigNumber | Unit | boolean | null': function
|
43
|
+
'number | Complex | BigNumber | Unit | boolean | null': function number__Complex__BigNumber__Unit__boolean__null(x) {
|
44
44
|
// scalar
|
45
|
-
return config.matrix === 'Array' ? [] : matrix ? matrix([]) : noMatrix();
|
45
|
+
return config.matrix === 'Array' ? [] : matrix ? matrix([], 'dense', 'number') : noMatrix();
|
46
46
|
}
|
47
47
|
});
|
48
48
|
});
|
@@ -52,19 +52,19 @@ export var createSort = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
52
52
|
_matrixIsVector(x);
|
53
53
|
return matrix(x.toArray().sort(compareAsc), x.storage());
|
54
54
|
},
|
55
|
-
'Array, function': function
|
55
|
+
'Array, function': function Array_function(x, _comparator) {
|
56
56
|
_arrayIsVector(x);
|
57
57
|
return x.sort(_comparator);
|
58
58
|
},
|
59
|
-
'Matrix, function': function
|
59
|
+
'Matrix, function': function Matrix_function(x, _comparator) {
|
60
60
|
_matrixIsVector(x);
|
61
61
|
return matrix(x.toArray().sort(_comparator), x.storage());
|
62
62
|
},
|
63
|
-
'Array, string': function
|
63
|
+
'Array, string': function Array_string(x, order) {
|
64
64
|
_arrayIsVector(x);
|
65
65
|
return x.sort(_comparator(order));
|
66
66
|
},
|
67
|
-
'Matrix, string': function
|
67
|
+
'Matrix, string': function Matrix_string(x, order) {
|
68
68
|
_matrixIsVector(x);
|
69
69
|
return matrix(x.toArray().sort(_comparator(order)), x.storage());
|
70
70
|
}
|
@@ -69,7 +69,7 @@ export var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
69
69
|
* @return {Array | Matrix} The principal square root of matrix `A`
|
70
70
|
*/
|
71
71
|
return typed(name, {
|
72
|
-
'Array | Matrix': function
|
72
|
+
'Array | Matrix': function Array__Matrix(A) {
|
73
73
|
var size = isMatrix(A) ? A.size() : arraySize(A);
|
74
74
|
switch (size.length) {
|
75
75
|
case 1:
|
@@ -2,11 +2,10 @@ import { clone } from '../../utils/object.js';
|
|
2
2
|
import { squeeze as arraySqueeze } from '../../utils/array.js';
|
3
3
|
import { factory } from '../../utils/factory.js';
|
4
4
|
var name = 'squeeze';
|
5
|
-
var dependencies = ['typed'
|
5
|
+
var dependencies = ['typed'];
|
6
6
|
export var createSqueeze = /* #__PURE__ */factory(name, dependencies, _ref => {
|
7
7
|
var {
|
8
|
-
typed
|
9
|
-
matrix
|
8
|
+
typed
|
10
9
|
} = _ref;
|
11
10
|
/**
|
12
11
|
* Squeeze a matrix, remove inner and outer singleton dimensions from a matrix.
|
@@ -44,7 +43,7 @@ export var createSqueeze = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
44
43
|
Matrix: function Matrix(x) {
|
45
44
|
var res = arraySqueeze(x.toArray());
|
46
45
|
// FIXME: return the same type of matrix as the input
|
47
|
-
return Array.isArray(res) ?
|
46
|
+
return Array.isArray(res) ? x.create(res, x.datatype()) : res;
|
48
47
|
},
|
49
48
|
any: function any(x) {
|
50
49
|
// scalar
|
@@ -62,7 +62,7 @@ export var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
62
62
|
|
63
63
|
return typed(name, {
|
64
64
|
// get subset
|
65
|
-
'Matrix, Index': function
|
65
|
+
'Matrix, Index': function Matrix_Index(value, index) {
|
66
66
|
if (isEmptyIndex(index)) {
|
67
67
|
return matrix();
|
68
68
|
}
|
@@ -78,7 +78,7 @@ export var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
78
78
|
'Object, Index': _getObjectProperty,
|
79
79
|
'string, Index': _getSubstring,
|
80
80
|
// set subset
|
81
|
-
'Matrix, Index, any, any': function
|
81
|
+
'Matrix, Index, any, any': function Matrix_Index_any_any(value, index, replacement, defaultValue) {
|
82
82
|
if (isEmptyIndex(index)) {
|
83
83
|
return value;
|
84
84
|
}
|
@@ -49,7 +49,7 @@ export var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
49
49
|
},
|
50
50
|
// math.zeros(m, n, p, ..., format)
|
51
51
|
// TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this
|
52
|
-
'...number | BigNumber | string': function
|
52
|
+
'...number | BigNumber | string': function number__BigNumber__string(size) {
|
53
53
|
var last = size[size.length - 1];
|
54
54
|
if (typeof last === 'string') {
|
55
55
|
var format = size.pop();
|
@@ -65,7 +65,7 @@ export var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
65
65
|
var format = size.storage();
|
66
66
|
return _zeros(size.valueOf(), format);
|
67
67
|
},
|
68
|
-
'Array | Matrix, string': function
|
68
|
+
'Array | Matrix, string': function Array__Matrix_string(size, format) {
|
69
69
|
return _zeros(size.valueOf(), format);
|
70
70
|
}
|
71
71
|
});
|
@@ -31,7 +31,7 @@ export var createCombinations = /* #__PURE__ */factory(name, dependencies, _ref
|
|
31
31
|
*/
|
32
32
|
return typed(name, {
|
33
33
|
'number, number': combinationsNumber,
|
34
|
-
'BigNumber, BigNumber': function
|
34
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {
|
35
35
|
var BigNumber = n.constructor;
|
36
36
|
var result, i;
|
37
37
|
var nMinusk = n.minus(k);
|
@@ -31,7 +31,7 @@ export var createCombinationsWithRep = /* #__PURE__ */factory(name, dependencies
|
|
31
31
|
* @return {number | BigNumber} Number of possible combinations with replacement.
|
32
32
|
*/
|
33
33
|
return typed(name, {
|
34
|
-
'number, number': function
|
34
|
+
'number, number': function number_number(n, k) {
|
35
35
|
if (!isInteger(n) || n < 0) {
|
36
36
|
throw new TypeError('Positive integer value expected in function combinationsWithRep');
|
37
37
|
}
|
@@ -48,7 +48,7 @@ export var createCombinationsWithRep = /* #__PURE__ */factory(name, dependencies
|
|
48
48
|
var prodrange = product(k + 1, n + k - 1);
|
49
49
|
return prodrange / product(1, n - 1);
|
50
50
|
},
|
51
|
-
'BigNumber, BigNumber': function
|
51
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {
|
52
52
|
var BigNumber = n.constructor;
|
53
53
|
var result, i;
|
54
54
|
var one = new BigNumber(1);
|
@@ -30,16 +30,16 @@ export var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref
|
|
30
30
|
* @return {number} Returns distance between q and p
|
31
31
|
*/
|
32
32
|
return typed(name, {
|
33
|
-
'Array, Array': function
|
33
|
+
'Array, Array': function Array_Array(q, p) {
|
34
34
|
return _kldiv(matrix(q), matrix(p));
|
35
35
|
},
|
36
|
-
'Matrix, Array': function
|
36
|
+
'Matrix, Array': function Matrix_Array(q, p) {
|
37
37
|
return _kldiv(q, matrix(p));
|
38
38
|
},
|
39
|
-
'Array, Matrix': function
|
39
|
+
'Array, Matrix': function Array_Matrix(q, p) {
|
40
40
|
return _kldiv(matrix(q), p);
|
41
41
|
},
|
42
|
-
'Matrix, Matrix': function
|
42
|
+
'Matrix, Matrix': function Matrix_Matrix(q, p) {
|
43
43
|
return _kldiv(q, p);
|
44
44
|
}
|
45
45
|
});
|
@@ -34,7 +34,7 @@ export var createMultinomial = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
34
34
|
* @return {Number | BigNumber} Multinomial coefficient.
|
35
35
|
*/
|
36
36
|
return typed(name, {
|
37
|
-
'Array | Matrix': function
|
37
|
+
'Array | Matrix': function Array__Matrix(a) {
|
38
38
|
var sum = 0;
|
39
39
|
var denom = 1;
|
40
40
|
deepForEach(a, function (ai) {
|
@@ -35,7 +35,7 @@ export var createPermutations = /* #__PURE__ */factory(name, dependencies, _ref
|
|
35
35
|
*/
|
36
36
|
return typed(name, {
|
37
37
|
'number | BigNumber': factorial,
|
38
|
-
'number, number': function
|
38
|
+
'number, number': function number_number(n, k) {
|
39
39
|
if (!isInteger(n) || n < 0) {
|
40
40
|
throw new TypeError('Positive integer value expected in function permutations');
|
41
41
|
}
|
@@ -48,7 +48,7 @@ export var createPermutations = /* #__PURE__ */factory(name, dependencies, _ref
|
|
48
48
|
// Permute n objects, k at a time
|
49
49
|
return product(n - k + 1, n);
|
50
50
|
},
|
51
|
-
'BigNumber, BigNumber': function
|
51
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(n, k) {
|
52
52
|
var result, i;
|
53
53
|
if (!isPositiveInteger(n) || !isPositiveInteger(k)) {
|
54
54
|
throw new TypeError('Positive integer value expected in function permutations');
|
@@ -56,29 +56,29 @@ export var createPickRandom = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
56
56
|
* Returns an array with the configured number of elements when number is defined.
|
57
57
|
*/
|
58
58
|
return typed(name, {
|
59
|
-
'Array | Matrix': function
|
59
|
+
'Array | Matrix': function Array__Matrix(possibles) {
|
60
60
|
return _pickRandom(possibles, {});
|
61
61
|
},
|
62
|
-
'Array | Matrix, Object': function
|
62
|
+
'Array | Matrix, Object': function Array__Matrix_Object(possibles, options) {
|
63
63
|
return _pickRandom(possibles, options);
|
64
64
|
},
|
65
|
-
'Array | Matrix, number': function
|
65
|
+
'Array | Matrix, number': function Array__Matrix_number(possibles, number) {
|
66
66
|
return _pickRandom(possibles, {
|
67
67
|
number
|
68
68
|
});
|
69
69
|
},
|
70
|
-
'Array | Matrix, Array | Matrix': function
|
70
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(possibles, weights) {
|
71
71
|
return _pickRandom(possibles, {
|
72
72
|
weights
|
73
73
|
});
|
74
74
|
},
|
75
|
-
'Array | Matrix, Array | Matrix, number': function
|
75
|
+
'Array | Matrix, Array | Matrix, number': function Array__Matrix_Array__Matrix_number(possibles, weights, number) {
|
76
76
|
return _pickRandom(possibles, {
|
77
77
|
number,
|
78
78
|
weights
|
79
79
|
});
|
80
80
|
},
|
81
|
-
'Array | Matrix, number, Array | Matrix': function
|
81
|
+
'Array | Matrix, number, Array | Matrix': function Array__Matrix_number_Array__Matrix(possibles, number, weights) {
|
82
82
|
return _pickRandom(possibles, {
|
83
83
|
number,
|
84
84
|
weights
|
@@ -60,7 +60,7 @@ export var createRandom = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
60
60
|
});
|
61
61
|
function _randomMatrix(size, min, max) {
|
62
62
|
var res = randomMatrix(size.valueOf(), () => _random(min, max));
|
63
|
-
return isMatrix(size) ? size.create(res) : res;
|
63
|
+
return isMatrix(size) ? size.create(res, 'number') : res;
|
64
64
|
}
|
65
65
|
function _random(min, max) {
|
66
66
|
return min + rng() * (max - min);
|
@@ -59,7 +59,7 @@ export var createRandomInt = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
59
59
|
});
|
60
60
|
function _randomIntMatrix(size, min, max) {
|
61
61
|
var res = randomMatrix(size.valueOf(), () => _randomInt(min, max));
|
62
|
-
return isMatrix(size) ? size.create(res) : res;
|
62
|
+
return isMatrix(size) ? size.create(res, 'number') : res;
|
63
63
|
}
|
64
64
|
function _randomInt(min, max) {
|
65
65
|
return Math.floor(min + rng() * (max - min));
|
@@ -80,19 +80,19 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
80
80
|
typed,
|
81
81
|
config
|
82
82
|
}), {
|
83
|
-
'boolean, boolean': function
|
83
|
+
'boolean, boolean': function boolean_boolean(x, y) {
|
84
84
|
return x === y ? 0 : x > y ? 1 : -1;
|
85
85
|
},
|
86
|
-
'BigNumber, BigNumber': function
|
86
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
87
87
|
return bigNearlyEqual(x, y, config.relTol, config.absTol) ? new BigNumber(0) : new BigNumber(x.cmp(y));
|
88
88
|
},
|
89
|
-
'bigint, bigint': function
|
89
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
90
90
|
return x === y ? 0n : x > y ? 1n : -1n;
|
91
91
|
},
|
92
|
-
'Fraction, Fraction': function
|
92
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
93
93
|
return new Fraction(x.compare(y));
|
94
94
|
},
|
95
|
-
'Complex, Complex': function
|
95
|
+
'Complex, Complex': function Complex_Complex() {
|
96
96
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
97
97
|
}
|
98
98
|
}, compareUnits, matrixAlgorithmSuite({
|
@@ -107,7 +107,7 @@ export var createCompareNumber = /* #__PURE__ */factory(name, ['typed', 'config'
|
|
107
107
|
config
|
108
108
|
} = _ref2;
|
109
109
|
return typed(name, {
|
110
|
-
'number, number': function
|
110
|
+
'number, number': function number_number(x, y) {
|
111
111
|
return nearlyEqual(x, y, config.relTol, config.absTol) ? 0 : x > y ? 1 : -1;
|
112
112
|
}
|
113
113
|
});
|
@@ -36,7 +36,7 @@ export var createDeepEqual = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
36
36
|
* Returns true when the input matrices have the same size and each of their elements is equal.
|
37
37
|
*/
|
38
38
|
return typed(name, {
|
39
|
-
'any, any': function
|
39
|
+
'any, any': function any_any(x, y) {
|
40
40
|
return _deepEqual(x.valueOf(), y.valueOf());
|
41
41
|
}
|
42
42
|
});
|
@@ -90,7 +90,7 @@ export var createEqualNumber = factory(name, ['typed', 'equalScalar'], _ref2 =>
|
|
90
90
|
equalScalar
|
91
91
|
} = _ref2;
|
92
92
|
return typed(name, {
|
93
|
-
'any, any': function
|
93
|
+
'any, any': function any_any(x, y) {
|
94
94
|
// strict equality for null and undefined?
|
95
95
|
if (x === null) {
|
96
96
|
return y === null;
|
@@ -23,22 +23,22 @@ export var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
23
23
|
* @private
|
24
24
|
*/
|
25
25
|
return typed(name, {
|
26
|
-
'boolean, boolean': function
|
26
|
+
'boolean, boolean': function boolean_boolean(x, y) {
|
27
27
|
return x === y;
|
28
28
|
},
|
29
|
-
'number, number': function
|
29
|
+
'number, number': function number_number(x, y) {
|
30
30
|
return nearlyEqual(x, y, config.relTol, config.absTol);
|
31
31
|
},
|
32
|
-
'BigNumber, BigNumber': function
|
32
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
33
33
|
return x.eq(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);
|
34
34
|
},
|
35
|
-
'bigint, bigint': function
|
35
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
36
36
|
return x === y;
|
37
37
|
},
|
38
|
-
'Fraction, Fraction': function
|
38
|
+
'Fraction, Fraction': function Fraction_Fraction(x, y) {
|
39
39
|
return x.equals(y);
|
40
40
|
},
|
41
|
-
'Complex, Complex': function
|
41
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
42
42
|
return complexEquals(x, y, config.relTol, config.absTol);
|
43
43
|
}
|
44
44
|
}, compareUnits);
|
@@ -49,7 +49,7 @@ export var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 =>
|
|
49
49
|
config
|
50
50
|
} = _ref2;
|
51
51
|
return typed(name, {
|
52
|
-
'number, number': function
|
52
|
+
'number, number': function number_number(x, y) {
|
53
53
|
return nearlyEqual(x, y, config.relTol, config.absTol);
|
54
54
|
}
|
55
55
|
});
|
@@ -34,7 +34,7 @@ export var createEqualText = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
34
34
|
* @return {number | Array | DenseMatrix} Returns true if the values are equal, and false if not.
|
35
35
|
*/
|
36
36
|
return typed(name, {
|
37
|
-
'any, any': function
|
37
|
+
'any, any': function any_any(x, y) {
|
38
38
|
return isZero(compareText(x, y));
|
39
39
|
}
|
40
40
|
});
|
@@ -72,12 +72,12 @@ export var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
72
72
|
config
|
73
73
|
}), {
|
74
74
|
'boolean, boolean': (x, y) => x > y,
|
75
|
-
'BigNumber, BigNumber': function
|
75
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
76
76
|
return x.gt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
|
77
77
|
},
|
78
78
|
'bigint, bigint': (x, y) => x > y,
|
79
79
|
'Fraction, Fraction': (x, y) => x.compare(y) === 1,
|
80
|
-
'Complex, Complex': function
|
80
|
+
'Complex, Complex': function Complex_Complex() {
|
81
81
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
82
82
|
}
|
83
83
|
}, compareUnits, matrixAlgorithmSuite({
|
@@ -92,7 +92,7 @@ export var createLargerNumber = /* #__PURE__ */factory(name, ['typed', 'config']
|
|
92
92
|
config
|
93
93
|
} = _ref2;
|
94
94
|
return typed(name, {
|
95
|
-
'number, number': function
|
95
|
+
'number, number': function number_number(x, y) {
|
96
96
|
return x > y && !nearlyEqual(x, y, config.relTol, config.absTol);
|
97
97
|
}
|
98
98
|
});
|
@@ -68,14 +68,14 @@ export var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
68
68
|
config
|
69
69
|
}), {
|
70
70
|
'boolean, boolean': (x, y) => x >= y,
|
71
|
-
'BigNumber, BigNumber': function
|
71
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
72
72
|
return x.gte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);
|
73
73
|
},
|
74
|
-
'bigint, bigint': function
|
74
|
+
'bigint, bigint': function bigint_bigint(x, y) {
|
75
75
|
return x >= y;
|
76
76
|
},
|
77
77
|
'Fraction, Fraction': (x, y) => x.compare(y) !== -1,
|
78
|
-
'Complex, Complex': function
|
78
|
+
'Complex, Complex': function Complex_Complex() {
|
79
79
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
80
80
|
}
|
81
81
|
}, compareUnits, matrixAlgorithmSuite({
|
@@ -90,7 +90,7 @@ export var createLargerEqNumber = /* #__PURE__ */factory(name, ['typed', 'config
|
|
90
90
|
config
|
91
91
|
} = _ref2;
|
92
92
|
return typed(name, {
|
93
|
-
'number, number': function
|
93
|
+
'number, number': function number_number(x, y) {
|
94
94
|
return x >= y || nearlyEqual(x, y, config.relTol, config.absTol);
|
95
95
|
}
|
96
96
|
});
|
@@ -72,12 +72,12 @@ export var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
72
72
|
config
|
73
73
|
}), {
|
74
74
|
'boolean, boolean': (x, y) => x < y,
|
75
|
-
'BigNumber, BigNumber': function
|
75
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
76
76
|
return x.lt(y) && !bigNearlyEqual(x, y, config.relTol, config.absTol);
|
77
77
|
},
|
78
78
|
'bigint, bigint': (x, y) => x < y,
|
79
79
|
'Fraction, Fraction': (x, y) => x.compare(y) === -1,
|
80
|
-
'Complex, Complex': function
|
80
|
+
'Complex, Complex': function Complex_Complex(x, y) {
|
81
81
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
82
82
|
}
|
83
83
|
}, compareUnits, matrixAlgorithmSuite({
|
@@ -92,7 +92,7 @@ export var createSmallerNumber = /* #__PURE__ */factory(name, ['typed', 'config'
|
|
92
92
|
config
|
93
93
|
} = _ref2;
|
94
94
|
return typed(name, {
|
95
|
-
'number, number': function
|
95
|
+
'number, number': function number_number(x, y) {
|
96
96
|
return x < y && !nearlyEqual(x, y, config.relTol, config.absTol);
|
97
97
|
}
|
98
98
|
});
|
@@ -68,12 +68,12 @@ export var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
68
68
|
config
|
69
69
|
}), {
|
70
70
|
'boolean, boolean': (x, y) => x <= y,
|
71
|
-
'BigNumber, BigNumber': function
|
71
|
+
'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
|
72
72
|
return x.lte(y) || bigNearlyEqual(x, y, config.relTol, config.absTol);
|
73
73
|
},
|
74
74
|
'bigint, bigint': (x, y) => x <= y,
|
75
75
|
'Fraction, Fraction': (x, y) => x.compare(y) !== 1,
|
76
|
-
'Complex, Complex': function
|
76
|
+
'Complex, Complex': function Complex_Complex() {
|
77
77
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
78
78
|
}
|
79
79
|
}, compareUnits, matrixAlgorithmSuite({
|
@@ -88,7 +88,7 @@ export var createSmallerEqNumber = /* #__PURE__ */factory(name, ['typed', 'confi
|
|
88
88
|
config
|
89
89
|
} = _ref2;
|
90
90
|
return typed(name, {
|
91
|
-
'number, number': function
|
91
|
+
'number, number': function number_number(x, y) {
|
92
92
|
return x <= y || nearlyEqual(x, y, config.relTol, config.absTol);
|
93
93
|
}
|
94
94
|
});
|
@@ -93,7 +93,7 @@ export var createUnequalNumber = factory(name, ['typed', 'equalScalar'], _ref2 =
|
|
93
93
|
equalScalar
|
94
94
|
} = _ref2;
|
95
95
|
return typed(name, {
|
96
|
-
'any, any': function
|
96
|
+
'any, any': function any_any(x, y) {
|
97
97
|
// strict equality for null and undefined?
|
98
98
|
if (x === null) {
|
99
99
|
return y !== null;
|
@@ -34,7 +34,7 @@ export var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref
|
|
34
34
|
* @return {Array | Matrix} The cartesian product of two (multi)sets
|
35
35
|
*/
|
36
36
|
return typed(name, {
|
37
|
-
'Array | Matrix, Array | Matrix': function
|
37
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {
|
38
38
|
var result = [];
|
39
39
|
if (subset(size(a1), new Index(0)) !== 0 && subset(size(a2), new Index(0)) !== 0) {
|
40
40
|
// if any of them is empty, return empty
|
@@ -33,7 +33,7 @@ export var createSetDifference = /* #__PURE__ */factory(name, dependencies, _ref
|
|
33
33
|
* @return {Array | Matrix} The difference of two (multi)sets
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
|
-
'Array | Matrix, Array | Matrix': function
|
36
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {
|
37
37
|
var result;
|
38
38
|
if (subset(size(a1), new Index(0)) === 0) {
|
39
39
|
// empty-anything=empty
|
@@ -31,7 +31,7 @@ export var createSetDistinct = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
31
31
|
* @return {Array | Matrix} A set containing the distinc elements of the multiset
|
32
32
|
*/
|
33
33
|
return typed(name, {
|
34
|
-
'Array | Matrix': function
|
34
|
+
'Array | Matrix': function Array__Matrix(a) {
|
35
35
|
var result;
|
36
36
|
if (subset(size(a), new Index(0)) === 0) {
|
37
37
|
// if empty, return empty
|
@@ -33,7 +33,7 @@ export var createSetIntersect = /* #__PURE__ */factory(name, dependencies, _ref
|
|
33
33
|
* @return {Array | Matrix} The intersection of two (multi)sets
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
|
-
'Array | Matrix, Array | Matrix': function
|
36
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {
|
37
37
|
var result;
|
38
38
|
if (subset(size(a1), new Index(0)) === 0 || subset(size(a2), new Index(0)) === 0) {
|
39
39
|
// of any of them is empty, return empty
|
@@ -32,7 +32,7 @@ export var createSetIsSubset = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
32
32
|
* @return {boolean} Returns true when a1 is a subset of a2, returns false otherwise
|
33
33
|
*/
|
34
34
|
return typed(name, {
|
35
|
-
'Array | Matrix, Array | Matrix': function
|
35
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {
|
36
36
|
if (subset(size(a1), new Index(0)) === 0) {
|
37
37
|
// empty is a subset of anything
|
38
38
|
return true;
|
@@ -32,7 +32,7 @@ export var createSetMultiplicity = /* #__PURE__ */factory(name, dependencies, _r
|
|
32
32
|
* @return {number} The number of how many times the multiset contains the element
|
33
33
|
*/
|
34
34
|
return typed(name, {
|
35
|
-
'number | BigNumber | Fraction | Complex, Array | Matrix': function
|
35
|
+
'number | BigNumber | Fraction | Complex, Array | Matrix': function number__BigNumber__Fraction__Complex_Array__Matrix(e, a) {
|
36
36
|
if (subset(size(a), new Index(0)) === 0) {
|
37
37
|
// if empty, return 0
|
38
38
|
return 0;
|
@@ -30,7 +30,7 @@ export var createSetPowerset = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
30
30
|
* @return {Array} The powerset of the (multi)set
|
31
31
|
*/
|
32
32
|
return typed(name, {
|
33
|
-
'Array | Matrix': function
|
33
|
+
'Array | Matrix': function Array__Matrix(a) {
|
34
34
|
if (subset(size(a), new Index(0)) === 0) {
|
35
35
|
// if empty, return empty
|
36
36
|
return [];
|
@@ -30,10 +30,10 @@ export var createSetSize = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
30
30
|
* @return {number} The number of elements of the (multi)set
|
31
31
|
*/
|
32
32
|
return typed(name, {
|
33
|
-
'Array | Matrix': function
|
33
|
+
'Array | Matrix': function Array__Matrix(a) {
|
34
34
|
return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;
|
35
35
|
},
|
36
|
-
'Array | Matrix, boolean': function
|
36
|
+
'Array | Matrix, boolean': function Array__Matrix_boolean(a, unique) {
|
37
37
|
if (unique === false || a.length === 0) {
|
38
38
|
return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;
|
39
39
|
} else {
|
@@ -33,7 +33,7 @@ export var createSetSymDifference = /* #__PURE__ */factory(name, dependencies, _
|
|
33
33
|
* @return {Array | Matrix} The symmetric difference of two (multi)sets
|
34
34
|
*/
|
35
35
|
return typed(name, {
|
36
|
-
'Array | Matrix, Array | Matrix': function
|
36
|
+
'Array | Matrix, Array | Matrix': function Array__Matrix_Array__Matrix(a1, a2) {
|
37
37
|
if (subset(size(a1), new Index(0)) === 0) {
|
38
38
|
// if any of them is empty, return the other one
|
39
39
|
return flatten(a2);
|