mathjs 10.5.0 → 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 +12 -0
- package/docs/datatypes/matrices.md +17 -0
- package/docs/expressions/syntax.md +4 -1
- package/docs/reference/functions/fix.md +1 -0
- package/docs/reference/functions/floor.md +4 -0
- package/docs/reference/functions/resolve.md +2 -2
- package/docs/reference/functions/simplifyConstant.md +52 -0
- package/lib/browser/math.js +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
- 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/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/impureFunctionsAny.generated.js +0 -1
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +6 -7
- package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +21 -15
- package/lib/cjs/expression/node/IndexNode.js +26 -61
- package/lib/cjs/factoriesNumber.js +29 -24
- 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/round.js +27 -47
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/number/arithmetic.js +9 -27
- package/lib/cjs/type/matrix/function/sparse.js +6 -0
- package/lib/cjs/utils/lruQueue.js +1 -3
- 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/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/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/impureFunctionsAny.generated.js +0 -1
- package/lib/esm/entry/impureFunctionsNumber.generated.js +7 -8
- package/lib/esm/entry/pureFunctionsAny.generated.js +10 -3
- package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -10
- 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/factoriesNumber.js +6 -6
- 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/round.js +25 -43
- package/lib/esm/function/matrix/expm.js +2 -2
- package/lib/esm/function/probability/gamma.js +1 -1
- 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 +9 -17
- 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/lruQueue.js +1 -2
- package/lib/esm/utils/number.js +3 -3
- package/lib/esm/utils/object.js +3 -1
- package/lib/esm/version.js +1 -1
- package/package.json +14 -3
- package/types/index.d.ts +1794 -1372
- package/types/index.ts +697 -266
@@ -1,4 +1,4 @@
|
|
1
|
-
import { absNumber, acoshNumber, acosNumber, acothNumber, acotNumber, acschNumber, acscNumber, addNumber, andNumber, asechNumber, asecNumber, asinhNumber, asinNumber, atan2Number, atanhNumber, atanNumber, bitAndNumber, bitNotNumber, bitOrNumber, bitXorNumber, cbrtNumber,
|
1
|
+
import { absNumber, acoshNumber, acosNumber, acothNumber, acotNumber, acschNumber, acscNumber, addNumber, andNumber, asechNumber, asecNumber, asinhNumber, asinNumber, atan2Number, atanhNumber, atanNumber, bitAndNumber, bitNotNumber, bitOrNumber, bitXorNumber, cbrtNumber, combinationsNumber, coshNumber, cosNumber, cothNumber, cotNumber, cschNumber, cscNumber, cubeNumber, divideNumber, expm1Number, expNumber, gammaNumber, gcdNumber, isIntegerNumber, isNaNNumber, isNegativeNumber, isPositiveNumber, isZeroNumber, lcmNumber, leftShiftNumber, lgammaNumber, log10Number, log1pNumber, log2Number, logNumber, modNumber, multiplyNumber, normNumber, notNumber, nthRootNumber, orNumber, powNumber, rightArithShiftNumber, rightLogShiftNumber, roundNumber, sechNumber, secNumber, signNumber, sinhNumber, sinNumber, sqrtNumber, squareNumber, subtractNumber, tanhNumber, tanNumber, unaryMinusNumber, unaryPlusNumber, xgcdNumber, xorNumber } from './plain/number/index.js';
|
2
2
|
import { factory } from './utils/factory.js';
|
3
3
|
import { noIndex, noMatrix, noSubset } from './utils/noop.js'; // ----------------------------------------------------------------------------
|
4
4
|
// classes and functions
|
@@ -24,12 +24,12 @@ export var createUnaryPlus = /* #__PURE__ */createNumberFactory('unaryPlus', una
|
|
24
24
|
export var createAbs = /* #__PURE__ */createNumberFactory('abs', absNumber);
|
25
25
|
export var createAddScalar = /* #__PURE__ */createNumberFactory('addScalar', addNumber);
|
26
26
|
export var createCbrt = /* #__PURE__ */createNumberFactory('cbrt', cbrtNumber);
|
27
|
-
export
|
27
|
+
export { createCeilNumber as createCeil } from './function/arithmetic/ceil.js';
|
28
28
|
export var createCube = /* #__PURE__ */createNumberFactory('cube', cubeNumber);
|
29
29
|
export var createExp = /* #__PURE__ */createNumberFactory('exp', expNumber);
|
30
30
|
export var createExpm1 = /* #__PURE__ */createNumberFactory('expm1', expm1Number);
|
31
|
-
export
|
32
|
-
export
|
31
|
+
export { createFixNumber as createFix } from './function/arithmetic/fix.js';
|
32
|
+
export { createFloorNumber as createFloor } from './function/arithmetic/floor.js';
|
33
33
|
export var createGcd = /* #__PURE__ */createNumberFactory('gcd', gcdNumber);
|
34
34
|
export var createLcm = /* #__PURE__ */createNumberFactory('lcm', lcmNumber);
|
35
35
|
export var createLog10 = /* #__PURE__ */createNumberFactory('log10', log10Number);
|
@@ -37,7 +37,7 @@ export var createLog2 = /* #__PURE__ */createNumberFactory('log2', log2Number);
|
|
37
37
|
export var createMod = /* #__PURE__ */createNumberFactory('mod', modNumber);
|
38
38
|
export var createMultiplyScalar = /* #__PURE__ */createNumberFactory('multiplyScalar', multiplyNumber);
|
39
39
|
export var createMultiply = /* #__PURE__ */createNumberFactory('multiply', multiplyNumber);
|
40
|
-
export
|
40
|
+
export var createNthRoot = /* #__PURE__ */createNumberOptionalSecondArgFactory('nthRoot', nthRootNumber);
|
41
41
|
export var createSign = /* #__PURE__ */createNumberFactory('sign', signNumber);
|
42
42
|
export var createSqrt = /* #__PURE__ */createNumberFactory('sqrt', sqrtNumber);
|
43
43
|
export var createSquare = /* #__PURE__ */createNumberFactory('square', squareNumber);
|
@@ -45,7 +45,7 @@ export var createSubtract = /* #__PURE__ */createNumberFactory('subtract', subtr
|
|
45
45
|
export var createXgcd = /* #__PURE__ */createNumberFactory('xgcd', xgcdNumber);
|
46
46
|
export var createDivideScalar = /* #__PURE__ */createNumberFactory('divideScalar', divideNumber);
|
47
47
|
export var createPow = /* #__PURE__ */createNumberFactory('pow', powNumber);
|
48
|
-
export
|
48
|
+
export var createRound = /* #__PURE__ */createNumberOptionalSecondArgFactory('round', roundNumber);
|
49
49
|
export var createLog = /* #__PURE__ */createNumberOptionalSecondArgFactory('log', logNumber);
|
50
50
|
export var createLog1p = /* #__PURE__ */createNumberFactory('log1p', log1pNumber);
|
51
51
|
export var createAdd = /* #__PURE__ */createNumberFactory('add', addNumber);
|
@@ -29,11 +29,11 @@ export var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
29
29
|
*
|
30
30
|
* simplify, evaluate
|
31
31
|
*
|
32
|
-
* @param {Node} node
|
33
|
-
* The expression tree to be simplified
|
32
|
+
* @param {Node | Node[]} node
|
33
|
+
* The expression tree (or trees) to be simplified
|
34
34
|
* @param {Object} scope
|
35
35
|
* Scope specifying variables to be resolved
|
36
|
-
* @return {Node} Returns `node` with variables recursively substituted.
|
36
|
+
* @return {Node | Node[]} Returns `node` with variables recursively substituted.
|
37
37
|
* @throws {ReferenceError}
|
38
38
|
* If there is a cyclic dependency among the variables in `scope`,
|
39
39
|
* resolution is impossible and a ReferenceError is thrown.
|
@@ -45,7 +45,7 @@ export function createSolveValidation(_ref) {
|
|
45
45
|
}
|
46
46
|
|
47
47
|
return new DenseMatrix({
|
48
|
-
data
|
48
|
+
data,
|
49
49
|
size: [rows, 1],
|
50
50
|
datatype: b._datatype
|
51
51
|
});
|
@@ -66,7 +66,7 @@ export function createSolveValidation(_ref) {
|
|
66
66
|
}
|
67
67
|
|
68
68
|
return new DenseMatrix({
|
69
|
-
data
|
69
|
+
data,
|
70
70
|
size: [rows, 1],
|
71
71
|
datatype: b._datatype
|
72
72
|
});
|
@@ -90,7 +90,7 @@ export function createSolveValidation(_ref) {
|
|
90
90
|
}
|
91
91
|
|
92
92
|
return new DenseMatrix({
|
93
|
-
data
|
93
|
+
data,
|
94
94
|
size: [rows, 1],
|
95
95
|
datatype: b._datatype
|
96
96
|
});
|
@@ -113,7 +113,7 @@ export function createSolveValidation(_ref) {
|
|
113
113
|
}
|
114
114
|
|
115
115
|
return new DenseMatrix({
|
116
|
-
data
|
116
|
+
data,
|
117
117
|
size: [rows, 1]
|
118
118
|
});
|
119
119
|
}
|
@@ -128,7 +128,7 @@ export function createSolveValidation(_ref) {
|
|
128
128
|
}
|
129
129
|
|
130
130
|
return new DenseMatrix({
|
131
|
-
data
|
131
|
+
data,
|
132
132
|
size: [rows, 1]
|
133
133
|
});
|
134
134
|
}
|
@@ -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));
|