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