mathjs 10.4.2 → 10.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
});
|