mathjs 10.4.2 → 10.5.1
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/HISTORY.md +36 -0
- package/docs/datatypes/matrices.md +17 -0
- package/docs/expressions/syntax.md +11 -4
- package/docs/reference/functions/fix.md +1 -0
- package/docs/reference/functions/floor.md +4 -0
- package/docs/reference/functions/lgamma.md +46 -0
- package/docs/reference/functions/pinv.md +44 -0
- package/docs/reference/functions/pow.md +8 -2
- package/docs/reference/functions/resolve.md +2 -2
- package/docs/reference/functions/simplifyConstant.md +52 -0
- package/docs/reference/functions/stirlingS2.md +5 -1
- package/docs/reference/functions.md +2 -0
- package/lib/browser/math.js +6 -6
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesDet.generated.js +5 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesFix.generated.js +9 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -3
- package/lib/cjs/entry/dependenciesAny/dependenciesLgamma.generated.js +23 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesPinv.generated.js +53 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesPow.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesStirlingS2.generated.js +6 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +16 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesCeil.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesFix.generated.js +6 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesFloor.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -3
- package/lib/cjs/entry/dependenciesNumber/dependenciesLgamma.generated.js +20 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +96 -95
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +11 -11
- package/lib/cjs/entry/pureFunctionsAny.generated.js +227 -196
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +36 -25
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +6 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/pinv.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/probability/lgamma.js +15 -0
- package/lib/cjs/expression/node/IndexNode.js +26 -61
- package/lib/cjs/factoriesAny.js +16 -0
- package/lib/cjs/factoriesNumber.js +44 -27
- package/lib/cjs/function/algebra/resolve.js +3 -3
- package/lib/cjs/function/arithmetic/ceil.js +75 -39
- package/lib/cjs/function/arithmetic/fix.js +54 -16
- package/lib/cjs/function/arithmetic/floor.js +79 -37
- package/lib/cjs/function/arithmetic/nthRoot.js +1 -3
- package/lib/cjs/function/arithmetic/pow.js +25 -6
- package/lib/cjs/function/arithmetic/round.js +27 -47
- package/lib/cjs/function/combinatorics/stirlingS2.js +42 -12
- package/lib/cjs/function/matrix/det.js +37 -31
- package/lib/cjs/function/matrix/pinv.js +223 -0
- package/lib/cjs/function/probability/lgamma.js +146 -0
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/number/arithmetic.js +17 -31
- package/lib/cjs/plain/number/probability.js +43 -3
- package/lib/cjs/type/matrix/function/sparse.js +6 -0
- package/lib/cjs/utils/latex.js +6 -0
- package/lib/cjs/utils/lruQueue.js +1 -3
- package/lib/cjs/utils/number.js +17 -2
- package/lib/cjs/utils/object.js +3 -1
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesDet.generated.js +4 -2
- package/lib/esm/entry/dependenciesAny/dependenciesFix.generated.js +6 -0
- package/lib/esm/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -2
- package/lib/esm/entry/dependenciesAny/dependenciesLgamma.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesPinv.generated.js +32 -0
- package/lib/esm/entry/dependenciesAny/dependenciesPow.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesStirlingS2.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesCeil.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesFix.generated.js +4 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesFloor.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesLgamma.generated.js +10 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +90 -89
- package/lib/esm/entry/impureFunctionsNumber.generated.js +12 -12
- package/lib/esm/entry/pureFunctionsAny.generated.js +191 -162
- package/lib/esm/entry/pureFunctionsNumber.generated.js +24 -14
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +4 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/pinv.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/probability/lgamma.js +8 -0
- package/lib/esm/expression/node/BlockNode.js +3 -3
- package/lib/esm/expression/node/IndexNode.js +22 -59
- package/lib/esm/expression/parse.js +5 -5
- package/lib/esm/factoriesAny.js +2 -0
- package/lib/esm/factoriesNumber.js +21 -8
- package/lib/esm/function/algebra/decomposition/qr.js +2 -2
- package/lib/esm/function/algebra/resolve.js +3 -3
- package/lib/esm/function/algebra/solver/utils/solveValidation.js +5 -5
- package/lib/esm/function/algebra/sparse/csChol.js +2 -2
- package/lib/esm/function/algebra/sparse/csLeaf.js +2 -2
- package/lib/esm/function/algebra/sparse/csLu.js +3 -3
- package/lib/esm/function/arithmetic/ceil.js +61 -24
- package/lib/esm/function/arithmetic/fix.js +51 -13
- package/lib/esm/function/arithmetic/floor.js +65 -23
- package/lib/esm/function/arithmetic/nthRoot.js +1 -3
- package/lib/esm/function/arithmetic/nthRoots.js +1 -1
- package/lib/esm/function/arithmetic/pow.js +25 -6
- package/lib/esm/function/arithmetic/round.js +25 -43
- package/lib/esm/function/combinatorics/stirlingS2.js +41 -12
- package/lib/esm/function/matrix/det.js +35 -31
- package/lib/esm/function/matrix/expm.js +2 -2
- package/lib/esm/function/matrix/pinv.js +205 -0
- package/lib/esm/function/probability/gamma.js +1 -1
- package/lib/esm/function/probability/lgamma.js +137 -0
- package/lib/esm/function/string/bin.js +1 -1
- package/lib/esm/function/string/hex.js +1 -1
- package/lib/esm/function/string/oct.js +1 -1
- package/lib/esm/plain/number/arithmetic.js +16 -20
- package/lib/esm/plain/number/probability.js +33 -1
- package/lib/esm/type/complex/Complex.js +2 -2
- package/lib/esm/type/matrix/DenseMatrix.js +2 -2
- package/lib/esm/type/matrix/FibonacciHeap.js +2 -2
- package/lib/esm/type/matrix/SparseMatrix.js +13 -13
- package/lib/esm/type/matrix/function/sparse.js +6 -0
- package/lib/esm/type/unit/Unit.js +7 -7
- package/lib/esm/utils/latex.js +6 -0
- package/lib/esm/utils/lruQueue.js +1 -2
- package/lib/esm/utils/number.js +16 -4
- package/lib/esm/utils/object.js +3 -1
- package/lib/esm/version.js +1 -1
- package/package.json +20 -9
- package/types/index.d.ts +1806 -1363
- package/types/index.ts +705 -264
|
@@ -3,26 +3,63 @@ import { factory } from '../../utils/factory.js';
|
|
|
3
3
|
import { deepMap } from '../../utils/collection.js';
|
|
4
4
|
import { nearlyEqual } from '../../utils/number.js';
|
|
5
5
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
|
6
|
-
import { ceilNumber } from '../../plain/number/index.js';
|
|
7
6
|
import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
|
|
7
|
+
import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
|
|
8
8
|
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
|
|
9
9
|
var name = 'ceil';
|
|
10
|
-
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
|
11
|
-
export var
|
|
10
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
|
|
11
|
+
export var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
|
|
12
|
+
var {
|
|
13
|
+
typed,
|
|
14
|
+
config,
|
|
15
|
+
round
|
|
16
|
+
} = _ref;
|
|
17
|
+
return typed(name, {
|
|
18
|
+
number: function number(x) {
|
|
19
|
+
if (nearlyEqual(x, round(x), config.epsilon)) {
|
|
20
|
+
return round(x);
|
|
21
|
+
} else {
|
|
22
|
+
return Math.ceil(x);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
'number, number': function numberNumber(x, n) {
|
|
26
|
+
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
|
27
|
+
return round(x, n);
|
|
28
|
+
} else {
|
|
29
|
+
var [number, exponent] = "".concat(x, "e").split('e');
|
|
30
|
+
var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
|
31
|
+
[number, exponent] = "".concat(result, "e").split('e');
|
|
32
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
12
38
|
var {
|
|
13
39
|
typed,
|
|
14
40
|
config,
|
|
15
41
|
round,
|
|
16
42
|
matrix,
|
|
17
|
-
equalScalar
|
|
18
|
-
|
|
43
|
+
equalScalar,
|
|
44
|
+
zeros,
|
|
45
|
+
DenseMatrix
|
|
46
|
+
} = _ref2;
|
|
19
47
|
var algorithm11 = createAlgorithm11({
|
|
20
48
|
typed,
|
|
21
49
|
equalScalar
|
|
22
50
|
});
|
|
51
|
+
var algorithm12 = createAlgorithm12({
|
|
52
|
+
typed,
|
|
53
|
+
DenseMatrix
|
|
54
|
+
});
|
|
23
55
|
var algorithm14 = createAlgorithm14({
|
|
24
56
|
typed
|
|
25
57
|
});
|
|
58
|
+
var ceilNumber = createCeilNumber({
|
|
59
|
+
typed,
|
|
60
|
+
config,
|
|
61
|
+
round
|
|
62
|
+
});
|
|
26
63
|
/**
|
|
27
64
|
* Round a value towards plus infinity
|
|
28
65
|
* If `x` is complex, both real and imaginary part are rounded towards plus infinity.
|
|
@@ -62,29 +99,17 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
62
99
|
*/
|
|
63
100
|
|
|
64
101
|
return typed('ceil', {
|
|
65
|
-
number:
|
|
66
|
-
|
|
67
|
-
return round(x);
|
|
68
|
-
} else {
|
|
69
|
-
return ceilNumber(x);
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
'number, number': function numberNumber(x, n) {
|
|
73
|
-
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
|
74
|
-
return round(x, n);
|
|
75
|
-
} else {
|
|
76
|
-
var [number, exponent] = "".concat(x, "e").split('e');
|
|
77
|
-
var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
|
78
|
-
[number, exponent] = "".concat(result, "e").split('e');
|
|
79
|
-
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
80
|
-
}
|
|
81
|
-
},
|
|
102
|
+
number: ceilNumber.signatures.number,
|
|
103
|
+
'number,number': ceilNumber.signatures['number,number'],
|
|
82
104
|
Complex: function Complex(x) {
|
|
83
105
|
return x.ceil();
|
|
84
106
|
},
|
|
85
107
|
'Complex, number': function ComplexNumber(x, n) {
|
|
86
108
|
return x.ceil(n);
|
|
87
109
|
},
|
|
110
|
+
'Complex, BigNumber': function ComplexBigNumber(x, n) {
|
|
111
|
+
return x.ceil(n.toNumber());
|
|
112
|
+
},
|
|
88
113
|
BigNumber: function BigNumber(x) {
|
|
89
114
|
if (bigNearlyEqual(x, round(x), config.epsilon)) {
|
|
90
115
|
return round(x);
|
|
@@ -105,11 +130,14 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
105
130
|
'Fraction, number': function FractionNumber(x, n) {
|
|
106
131
|
return x.ceil(n);
|
|
107
132
|
},
|
|
133
|
+
'Fraction, BigNumber': function FractionBigNumber(x, n) {
|
|
134
|
+
return x.ceil(n.toNumber());
|
|
135
|
+
},
|
|
108
136
|
'Array | Matrix': function ArrayMatrix(x) {
|
|
109
137
|
// deep map collection, skip zeros since ceil(0) = 0
|
|
110
138
|
return deepMap(x, this, true);
|
|
111
139
|
},
|
|
112
|
-
'Array |
|
|
140
|
+
'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
|
|
113
141
|
// deep map collection, skip zeros since ceil(0) = 0
|
|
114
142
|
return deepMap(x, i => this(i, n), true);
|
|
115
143
|
},
|
|
@@ -119,9 +147,18 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
119
147
|
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
|
120
148
|
return algorithm14(x, y, this, false);
|
|
121
149
|
},
|
|
122
|
-
'number | Complex | BigNumber, Array': function
|
|
150
|
+
'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
|
|
123
151
|
// use matrix implementation
|
|
124
152
|
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
153
|
+
},
|
|
154
|
+
'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
|
|
155
|
+
if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
|
|
156
|
+
|
|
157
|
+
if (y.storage() === 'dense') {
|
|
158
|
+
return algorithm14(y, x, this, true);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return algorithm12(y, x, this, true);
|
|
125
162
|
}
|
|
126
163
|
});
|
|
127
164
|
});
|
|
@@ -1,19 +1,47 @@
|
|
|
1
1
|
import { factory } from '../../utils/factory.js';
|
|
2
2
|
import { deepMap } from '../../utils/collection.js';
|
|
3
|
+
import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
|
|
3
4
|
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
|
|
4
5
|
var name = 'fix';
|
|
5
|
-
var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];
|
|
6
|
-
export var
|
|
6
|
+
var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];
|
|
7
|
+
export var createFixNumber = /* #__PURE__ */factory(name, ['typed', 'ceil', 'floor'], _ref => {
|
|
7
8
|
var {
|
|
8
9
|
typed,
|
|
9
|
-
Complex: _Complex,
|
|
10
|
-
matrix,
|
|
11
10
|
ceil,
|
|
12
11
|
floor
|
|
13
12
|
} = _ref;
|
|
13
|
+
return typed(name, {
|
|
14
|
+
number: function number(x) {
|
|
15
|
+
return x > 0 ? floor(x) : ceil(x);
|
|
16
|
+
},
|
|
17
|
+
'number, number': function numberNumber(x, n) {
|
|
18
|
+
return x > 0 ? floor(x, n) : ceil(x, n);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
23
|
+
var {
|
|
24
|
+
typed,
|
|
25
|
+
Complex: _Complex,
|
|
26
|
+
matrix,
|
|
27
|
+
ceil,
|
|
28
|
+
floor,
|
|
29
|
+
equalScalar,
|
|
30
|
+
zeros,
|
|
31
|
+
DenseMatrix
|
|
32
|
+
} = _ref2;
|
|
33
|
+
var algorithm12 = createAlgorithm12({
|
|
34
|
+
typed,
|
|
35
|
+
DenseMatrix
|
|
36
|
+
});
|
|
14
37
|
var algorithm14 = createAlgorithm14({
|
|
15
38
|
typed
|
|
16
39
|
});
|
|
40
|
+
var fixNumber = createFixNumber({
|
|
41
|
+
typed,
|
|
42
|
+
ceil,
|
|
43
|
+
floor
|
|
44
|
+
});
|
|
17
45
|
/**
|
|
18
46
|
* Round a value towards zero.
|
|
19
47
|
* For matrices, the function is evaluated element wise.
|
|
@@ -21,6 +49,7 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
21
49
|
* Syntax:
|
|
22
50
|
*
|
|
23
51
|
* math.fix(x)
|
|
52
|
+
* math.fix(x,n)
|
|
24
53
|
*
|
|
25
54
|
* Examples:
|
|
26
55
|
*
|
|
@@ -51,16 +80,16 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
51
80
|
*/
|
|
52
81
|
|
|
53
82
|
return typed('fix', {
|
|
54
|
-
number:
|
|
55
|
-
|
|
56
|
-
},
|
|
57
|
-
'number, number | BigNumber': function numberNumberBigNumber(x, n) {
|
|
58
|
-
return x > 0 ? floor(x, n) : ceil(x, n);
|
|
59
|
-
},
|
|
83
|
+
number: fixNumber.signatures.number,
|
|
84
|
+
'number, number | BigNumber': fixNumber.signatures['number,number'],
|
|
60
85
|
Complex: function Complex(x) {
|
|
61
86
|
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));
|
|
62
87
|
},
|
|
63
|
-
'Complex, number
|
|
88
|
+
'Complex, number': function ComplexNumber(x, n) {
|
|
89
|
+
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));
|
|
90
|
+
},
|
|
91
|
+
'Complex, BigNumber': function ComplexBigNumber(x, bn) {
|
|
92
|
+
var n = bn.toNumber();
|
|
64
93
|
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));
|
|
65
94
|
},
|
|
66
95
|
BigNumber: function BigNumber(x) {
|
|
@@ -73,7 +102,7 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
73
102
|
return x.s < 0 ? x.ceil() : x.floor();
|
|
74
103
|
},
|
|
75
104
|
'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
|
|
76
|
-
return x.s < 0 ?
|
|
105
|
+
return x.s < 0 ? ceil(x, n) : floor(x, n);
|
|
77
106
|
},
|
|
78
107
|
'Array | Matrix': function ArrayMatrix(x) {
|
|
79
108
|
// deep map collection, skip zeros since fix(0) = 0
|
|
@@ -83,9 +112,18 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
83
112
|
// deep map collection, skip zeros since fix(0) = 0
|
|
84
113
|
return deepMap(x, i => this(i, n), true);
|
|
85
114
|
},
|
|
86
|
-
'number | Complex | BigNumber, Array': function
|
|
115
|
+
'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
|
|
87
116
|
// use matrix implementation
|
|
88
117
|
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
118
|
+
},
|
|
119
|
+
'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
|
|
120
|
+
if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
|
|
121
|
+
|
|
122
|
+
if (y.storage() === 'dense') {
|
|
123
|
+
return algorithm14(y, x, this, true);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return algorithm12(y, x, this, true);
|
|
89
127
|
}
|
|
90
128
|
});
|
|
91
129
|
});
|
|
@@ -4,24 +4,62 @@ import { deepMap } from '../../utils/collection.js';
|
|
|
4
4
|
import { nearlyEqual } from '../../utils/number.js';
|
|
5
5
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
|
6
6
|
import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
|
|
7
|
+
import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
|
|
7
8
|
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
|
|
8
9
|
var name = 'floor';
|
|
9
|
-
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
|
10
|
-
export var
|
|
10
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
|
|
11
|
+
export var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
|
|
12
|
+
var {
|
|
13
|
+
typed,
|
|
14
|
+
config,
|
|
15
|
+
round
|
|
16
|
+
} = _ref;
|
|
17
|
+
return typed(name, {
|
|
18
|
+
number: function number(x) {
|
|
19
|
+
if (nearlyEqual(x, round(x), config.epsilon)) {
|
|
20
|
+
return round(x);
|
|
21
|
+
} else {
|
|
22
|
+
return Math.floor(x);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
'number, number': function numberNumber(x, n) {
|
|
26
|
+
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
|
27
|
+
return round(x, n);
|
|
28
|
+
} else {
|
|
29
|
+
var [number, exponent] = "".concat(x, "e").split('e');
|
|
30
|
+
var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
|
31
|
+
[number, exponent] = "".concat(result, "e").split('e');
|
|
32
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
11
38
|
var {
|
|
12
39
|
typed,
|
|
13
40
|
config,
|
|
14
41
|
round,
|
|
15
42
|
matrix,
|
|
16
|
-
equalScalar
|
|
17
|
-
|
|
43
|
+
equalScalar,
|
|
44
|
+
zeros,
|
|
45
|
+
DenseMatrix
|
|
46
|
+
} = _ref2;
|
|
18
47
|
var algorithm11 = createAlgorithm11({
|
|
19
48
|
typed,
|
|
20
49
|
equalScalar
|
|
21
50
|
});
|
|
51
|
+
var algorithm12 = createAlgorithm12({
|
|
52
|
+
typed,
|
|
53
|
+
DenseMatrix
|
|
54
|
+
});
|
|
22
55
|
var algorithm14 = createAlgorithm14({
|
|
23
56
|
typed
|
|
24
57
|
});
|
|
58
|
+
var floorNumber = createFloorNumber({
|
|
59
|
+
typed,
|
|
60
|
+
config,
|
|
61
|
+
round
|
|
62
|
+
});
|
|
25
63
|
/**
|
|
26
64
|
* Round a value towards minus infinity.
|
|
27
65
|
* For matrices, the function is evaluated element wise.
|
|
@@ -50,6 +88,10 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
50
88
|
* math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
|
|
51
89
|
* math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
|
|
52
90
|
*
|
|
91
|
+
* math.floor(math.tau, [2, 3]) // returns Array [6.28, 6.283]
|
|
92
|
+
*
|
|
93
|
+
* // Note that floor(array, array) currently not implemented.
|
|
94
|
+
*
|
|
53
95
|
* See also:
|
|
54
96
|
*
|
|
55
97
|
* ceil, fix, round
|
|
@@ -60,29 +102,17 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
60
102
|
*/
|
|
61
103
|
|
|
62
104
|
return typed('floor', {
|
|
63
|
-
number:
|
|
64
|
-
|
|
65
|
-
return round(x);
|
|
66
|
-
} else {
|
|
67
|
-
return Math.floor(x);
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
'number, number': function numberNumber(x, n) {
|
|
71
|
-
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
|
72
|
-
return round(x, n);
|
|
73
|
-
} else {
|
|
74
|
-
var [number, exponent] = "".concat(x, "e").split('e');
|
|
75
|
-
var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
|
76
|
-
[number, exponent] = "".concat(result, "e").split('e');
|
|
77
|
-
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
78
|
-
}
|
|
79
|
-
},
|
|
105
|
+
number: floorNumber.signatures.number,
|
|
106
|
+
'number,number': floorNumber.signatures['number,number'],
|
|
80
107
|
Complex: function Complex(x) {
|
|
81
108
|
return x.floor();
|
|
82
109
|
},
|
|
83
110
|
'Complex, number': function ComplexNumber(x, n) {
|
|
84
111
|
return x.floor(n);
|
|
85
112
|
},
|
|
113
|
+
'Complex, BigNumber': function ComplexBigNumber(x, n) {
|
|
114
|
+
return x.floor(n.toNumber());
|
|
115
|
+
},
|
|
86
116
|
BigNumber: function BigNumber(x) {
|
|
87
117
|
if (bigNearlyEqual(x, round(x), config.epsilon)) {
|
|
88
118
|
return round(x);
|
|
@@ -103,11 +133,14 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
103
133
|
'Fraction, number': function FractionNumber(x, n) {
|
|
104
134
|
return x.floor(n);
|
|
105
135
|
},
|
|
136
|
+
'Fraction, BigNumber': function FractionBigNumber(x, n) {
|
|
137
|
+
return x.floor(n.toNumber());
|
|
138
|
+
},
|
|
106
139
|
'Array | Matrix': function ArrayMatrix(x) {
|
|
107
140
|
// deep map collection, skip zeros since floor(0) = 0
|
|
108
141
|
return deepMap(x, this, true);
|
|
109
142
|
},
|
|
110
|
-
'Array |
|
|
143
|
+
'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
|
|
111
144
|
// deep map collection, skip zeros since ceil(0) = 0
|
|
112
145
|
return deepMap(x, i => this(i, n), true);
|
|
113
146
|
},
|
|
@@ -117,9 +150,18 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
117
150
|
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
|
118
151
|
return algorithm14(x, y, this, false);
|
|
119
152
|
},
|
|
120
|
-
'number | Complex | BigNumber, Array': function
|
|
153
|
+
'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
|
|
121
154
|
// use matrix implementation
|
|
122
155
|
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
156
|
+
},
|
|
157
|
+
'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
|
|
158
|
+
if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
|
|
159
|
+
|
|
160
|
+
if (y.storage() === 'dense') {
|
|
161
|
+
return algorithm14(y, x, this, true);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return algorithm12(y, x, this, true);
|
|
123
165
|
}
|
|
124
166
|
});
|
|
125
167
|
});
|
|
@@ -68,9 +68,7 @@ export var createNthRoot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
68
68
|
|
|
69
69
|
var complexErr = '' + 'Complex number not supported in function nthRoot. ' + 'Use nthRoots instead.';
|
|
70
70
|
return typed(name, {
|
|
71
|
-
number:
|
|
72
|
-
return nthRootNumber(x, 2);
|
|
73
|
-
},
|
|
71
|
+
number: nthRootNumber,
|
|
74
72
|
'number, number': nthRootNumber,
|
|
75
73
|
BigNumber: function BigNumber(x) {
|
|
76
74
|
return _bigNthRoot(x, new _BigNumber(2));
|
|
@@ -3,7 +3,7 @@ import { isInteger } from '../../utils/number.js';
|
|
|
3
3
|
import { arraySize as size } from '../../utils/array.js';
|
|
4
4
|
import { powNumber } from '../../plain/number/index.js';
|
|
5
5
|
var name = 'pow';
|
|
6
|
-
var dependencies = ['typed', 'config', 'identity', 'multiply', 'matrix', 'fraction', 'number', 'Complex'];
|
|
6
|
+
var dependencies = ['typed', 'config', 'identity', 'multiply', 'matrix', 'inv', 'fraction', 'number', 'Complex'];
|
|
7
7
|
export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
8
8
|
var {
|
|
9
9
|
typed,
|
|
@@ -11,6 +11,7 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
11
11
|
identity,
|
|
12
12
|
multiply,
|
|
13
13
|
matrix,
|
|
14
|
+
inv,
|
|
14
15
|
number,
|
|
15
16
|
fraction,
|
|
16
17
|
Complex
|
|
@@ -18,8 +19,11 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Calculates the power of x to y, `x ^ y`.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
|
+
* Matrix exponentiation is supported for square matrices `x` and integers `y`:
|
|
24
|
+
* when `y` is nonnegative, `x` may be any square matrix; and when `y` is
|
|
25
|
+
* negative, `x` must be invertible, and then this function returns
|
|
26
|
+
* inv(x)^(-y).
|
|
23
27
|
*
|
|
24
28
|
* For cubic roots of negative numbers, the function returns the principal
|
|
25
29
|
* root by default. In order to let the function return the real root,
|
|
@@ -40,6 +44,9 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
40
44
|
* const b = [[1, 2], [4, 3]]
|
|
41
45
|
* math.pow(b, 2) // returns Array [[9, 8], [16, 17]]
|
|
42
46
|
*
|
|
47
|
+
* const c = [[1, 2], [4, 3]]
|
|
48
|
+
* math.pow(c, -1) // returns Array [[-0.6, 0.4], [0.8, -0.2]]
|
|
49
|
+
*
|
|
43
50
|
* See also:
|
|
44
51
|
*
|
|
45
52
|
* multiply, sqrt, cbrt, nthRoot
|
|
@@ -135,15 +142,15 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
135
142
|
/**
|
|
136
143
|
* Calculate the power of a 2d array
|
|
137
144
|
* @param {Array} x must be a 2 dimensional, square matrix
|
|
138
|
-
* @param {number} y a positive
|
|
145
|
+
* @param {number} y a integer value (positive if `x` is not invertible)
|
|
139
146
|
* @returns {Array}
|
|
140
147
|
* @private
|
|
141
148
|
*/
|
|
142
149
|
|
|
143
150
|
|
|
144
151
|
function _powArray(x, y) {
|
|
145
|
-
if (!isInteger(y)
|
|
146
|
-
throw new TypeError('For A^b, b must be
|
|
152
|
+
if (!isInteger(y)) {
|
|
153
|
+
throw new TypeError('For A^b, b must be an integer (value is ' + y + ')');
|
|
147
154
|
} // verify that A is a 2 dimensional square matrix
|
|
148
155
|
|
|
149
156
|
|
|
@@ -157,6 +164,18 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
157
164
|
throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')');
|
|
158
165
|
}
|
|
159
166
|
|
|
167
|
+
if (y < 0) {
|
|
168
|
+
try {
|
|
169
|
+
return _powArray(inv(x), -y);
|
|
170
|
+
} catch (error) {
|
|
171
|
+
if (error.message === 'Cannot calculate inverse, determinant is zero') {
|
|
172
|
+
throw new TypeError('For A^b, when A is not invertible, b must be a positive integer (value is ' + y + ')');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
160
179
|
var res = identity(s[0]).valueOf();
|
|
161
180
|
var px = x;
|
|
162
181
|
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
-
|
|
7
1
|
import { factory } from '../../utils/factory.js';
|
|
8
2
|
import { deepMap } from '../../utils/collection.js';
|
|
9
|
-
import { isInteger } from '../../utils/number.js';
|
|
10
3
|
import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
|
|
11
4
|
import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
|
|
12
5
|
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
|
|
@@ -70,7 +63,16 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
70
63
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
|
71
64
|
*/
|
|
72
65
|
|
|
73
|
-
return typed(name,
|
|
66
|
+
return typed(name, {
|
|
67
|
+
number: roundNumber,
|
|
68
|
+
'number, number': roundNumber,
|
|
69
|
+
'number, BigNumber': function numberBigNumber(x, n) {
|
|
70
|
+
if (!n.isInteger()) {
|
|
71
|
+
throw new TypeError(NO_INT);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return new BigNumber(x).toDecimalPlaces(n.toNumber());
|
|
75
|
+
},
|
|
74
76
|
Complex: function Complex(x) {
|
|
75
77
|
return x.round();
|
|
76
78
|
},
|
|
@@ -90,13 +92,6 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
90
92
|
|
|
91
93
|
return x.round(_n);
|
|
92
94
|
},
|
|
93
|
-
'number, BigNumber': function numberBigNumber(x, n) {
|
|
94
|
-
if (!n.isInteger()) {
|
|
95
|
-
throw new TypeError(NO_INT);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return new BigNumber(x).toDecimalPlaces(n.toNumber());
|
|
99
|
-
},
|
|
100
95
|
BigNumber: function BigNumber(x) {
|
|
101
96
|
return x.toDecimalPlaces(0);
|
|
102
97
|
},
|
|
@@ -117,6 +112,13 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
117
112
|
|
|
118
113
|
return x.round(n);
|
|
119
114
|
},
|
|
115
|
+
'Fraction, BigNumber': function FractionBigNumber(x, n) {
|
|
116
|
+
if (!n.isInteger()) {
|
|
117
|
+
throw new TypeError(NO_INT);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return x.round(n.toNumber());
|
|
121
|
+
},
|
|
120
122
|
'Array | Matrix': function ArrayMatrix(x) {
|
|
121
123
|
// deep map collection, skip zeros since round(0) = 0
|
|
122
124
|
return deepMap(x, this, true);
|
|
@@ -127,7 +129,11 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
127
129
|
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
|
128
130
|
return algorithm14(x, y, this, false);
|
|
129
131
|
},
|
|
130
|
-
'number |
|
|
132
|
+
'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
|
|
133
|
+
// use matrix implementation
|
|
134
|
+
return algorithm14(matrix(x), y, this, false).valueOf();
|
|
135
|
+
},
|
|
136
|
+
'number | Complex | BigNumber | Fraction, SparseMatrix': function numberComplexBigNumberFractionSparseMatrix(x, y) {
|
|
131
137
|
// check scalar is zero
|
|
132
138
|
if (equalScalar(x, 0)) {
|
|
133
139
|
// do not execute algorithm, result will be a zero matrix
|
|
@@ -136,7 +142,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
136
142
|
|
|
137
143
|
return algorithm12(y, x, this, true);
|
|
138
144
|
},
|
|
139
|
-
'number | Complex | BigNumber, DenseMatrix': function
|
|
145
|
+
'number | Complex | BigNumber | Fraction, DenseMatrix': function numberComplexBigNumberFractionDenseMatrix(x, y) {
|
|
140
146
|
// check scalar is zero
|
|
141
147
|
if (equalScalar(x, 0)) {
|
|
142
148
|
// do not execute algorithm, result will be a zero matrix
|
|
@@ -145,33 +151,9 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
145
151
|
|
|
146
152
|
return algorithm14(y, x, this, true);
|
|
147
153
|
},
|
|
148
|
-
'
|
|
149
|
-
// use matrix implementation
|
|
150
|
-
return algorithm14(matrix(x), y, this, false).valueOf();
|
|
151
|
-
},
|
|
152
|
-
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
|
154
|
+
'number | Complex | BigNumber | Fraction, Array': function numberComplexBigNumberFractionArray(x, y) {
|
|
153
155
|
// use matrix implementation
|
|
154
156
|
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
155
157
|
}
|
|
156
|
-
})
|
|
157
|
-
});
|
|
158
|
-
var roundNumberSignatures = {
|
|
159
|
-
number: roundNumber,
|
|
160
|
-
'number, number': function numberNumber(x, n) {
|
|
161
|
-
if (!isInteger(n)) {
|
|
162
|
-
throw new TypeError(NO_INT);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (n < 0 || n > 15) {
|
|
166
|
-
throw new Error('Number of decimals in function round must be in the range of 0-15');
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return roundNumber(x, n);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
export var createRoundNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {
|
|
173
|
-
var {
|
|
174
|
-
typed
|
|
175
|
-
} = _ref2;
|
|
176
|
-
return typed(name, roundNumberSignatures);
|
|
158
|
+
});
|
|
177
159
|
});
|