mathjs 13.2.3 → 14.0.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 +24 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -10
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/function/import.js +4 -1
- package/lib/cjs/core/function/typed.js +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +1 -0
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -0
- package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
- package/lib/cjs/expression/parse.js +26 -36
- package/lib/cjs/function/algebra/derivative.js +64 -77
- package/lib/cjs/function/algebra/simplify.js +4 -3
- package/lib/cjs/function/algebra/simplifyConstant.js +5 -11
- package/lib/cjs/function/arithmetic/ceil.js +21 -2
- package/lib/cjs/function/arithmetic/dotDivide.js +4 -3
- package/lib/cjs/function/arithmetic/dotPow.js +4 -3
- package/lib/cjs/function/arithmetic/fix.js +24 -5
- package/lib/cjs/function/arithmetic/floor.js +21 -2
- package/lib/cjs/function/arithmetic/log.js +12 -4
- package/lib/cjs/function/arithmetic/pow.js +2 -2
- package/lib/cjs/function/arithmetic/round.js +3 -5
- package/lib/cjs/function/arithmetic/sign.js +1 -1
- package/lib/cjs/function/bitwise/bitXor.js +4 -3
- package/lib/cjs/function/logical/xor.js +4 -3
- package/lib/cjs/function/relational/equal.js +4 -3
- package/lib/cjs/function/relational/larger.js +4 -3
- package/lib/cjs/function/relational/largerEq.js +4 -3
- package/lib/cjs/function/relational/smaller.js +4 -3
- package/lib/cjs/function/relational/smallerEq.js +4 -3
- package/lib/cjs/function/relational/unequal.js +4 -3
- package/lib/cjs/function/utils/isInteger.js +1 -1
- package/lib/cjs/function/utils/isNegative.js +1 -1
- package/lib/cjs/function/utils/isPositive.js +1 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/bignumber/function/bignumber.js +2 -2
- package/lib/cjs/type/fraction/Fraction.js +4 -4
- package/lib/cjs/type/fraction/function/fraction.js +3 -0
- package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +39 -43
- package/lib/cjs/type/unit/Unit.js +1 -1
- package/lib/cjs/utils/string.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/function/import.js +4 -1
- package/lib/esm/core/function/typed.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -0
- package/lib/esm/entry/pureFunctionsAny.generated.js +11 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
- package/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
- package/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
- package/lib/esm/expression/parse.js +26 -36
- package/lib/esm/function/algebra/derivative.js +64 -77
- package/lib/esm/function/algebra/simplify.js +4 -3
- package/lib/esm/function/algebra/simplifyConstant.js +5 -11
- package/lib/esm/function/arithmetic/ceil.js +21 -2
- package/lib/esm/function/arithmetic/dotDivide.js +4 -3
- package/lib/esm/function/arithmetic/dotPow.js +4 -3
- package/lib/esm/function/arithmetic/fix.js +24 -5
- package/lib/esm/function/arithmetic/floor.js +21 -2
- package/lib/esm/function/arithmetic/log.js +12 -4
- package/lib/esm/function/arithmetic/pow.js +2 -2
- package/lib/esm/function/arithmetic/round.js +3 -5
- package/lib/esm/function/arithmetic/sign.js +1 -1
- package/lib/esm/function/bitwise/bitXor.js +4 -3
- package/lib/esm/function/logical/xor.js +4 -3
- package/lib/esm/function/relational/equal.js +4 -3
- package/lib/esm/function/relational/larger.js +4 -3
- package/lib/esm/function/relational/largerEq.js +4 -3
- package/lib/esm/function/relational/smaller.js +4 -3
- package/lib/esm/function/relational/smallerEq.js +4 -3
- package/lib/esm/function/relational/unequal.js +4 -3
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/function/utils/isNegative.js +1 -1
- package/lib/esm/function/utils/isPositive.js +1 -1
- package/lib/esm/type/bignumber/function/bignumber.js +2 -2
- package/lib/esm/type/fraction/Fraction.js +4 -4
- package/lib/esm/type/fraction/function/fraction.js +3 -0
- package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +39 -43
- package/lib/esm/type/unit/Unit.js +1 -1
- package/lib/esm/utils/string.js +2 -2
- package/lib/esm/version.js +1 -1
- package/package.json +13 -13
- package/types/index.d.ts +112 -23
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
|
4
4
|
*/
|
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
|
6
|
+
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
|
6
7
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
|
7
8
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
|
8
9
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
9
10
|
import { createLargerEq } from '../../factoriesAny.js';
|
|
10
11
|
export var largerEqDependencies = {
|
|
11
12
|
DenseMatrixDependencies,
|
|
13
|
+
SparseMatrixDependencies,
|
|
12
14
|
concatDependencies,
|
|
13
15
|
matrixDependencies,
|
|
14
16
|
typedDependencies,
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { ComplexDependencies } from './dependenciesComplexClass.generated.js';
|
|
6
6
|
import { divideScalarDependencies } from './dependenciesDivideScalar.generated.js';
|
|
7
|
+
import { typeOfDependencies } from './dependenciesTypeOf.generated.js';
|
|
7
8
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
8
9
|
import { createLog } from '../../factoriesAny.js';
|
|
9
10
|
export var logDependencies = {
|
|
10
11
|
ComplexDependencies,
|
|
11
12
|
divideScalarDependencies,
|
|
13
|
+
typeOfDependencies,
|
|
12
14
|
typedDependencies,
|
|
13
15
|
createLog
|
|
14
16
|
};
|
|
@@ -13,6 +13,7 @@ import { ParenthesisNodeDependencies } from './dependenciesParenthesisNode.gener
|
|
|
13
13
|
import { SymbolNodeDependencies } from './dependenciesSymbolNode.generated.js';
|
|
14
14
|
import { equalDependencies } from './dependenciesEqual.generated.js';
|
|
15
15
|
import { parseDependencies } from './dependenciesParse.generated.js';
|
|
16
|
+
import { replacerDependencies } from './dependenciesReplacer.generated.js';
|
|
16
17
|
import { resolveDependencies } from './dependenciesResolve.generated.js';
|
|
17
18
|
import { simplifyConstantDependencies } from './dependenciesSimplifyConstant.generated.js';
|
|
18
19
|
import { simplifyCoreDependencies } from './dependenciesSimplifyCore.generated.js';
|
|
@@ -30,6 +31,7 @@ export var simplifyDependencies = {
|
|
|
30
31
|
SymbolNodeDependencies,
|
|
31
32
|
equalDependencies,
|
|
32
33
|
parseDependencies,
|
|
34
|
+
replacerDependencies,
|
|
33
35
|
resolveDependencies,
|
|
34
36
|
simplifyConstantDependencies,
|
|
35
37
|
simplifyCoreDependencies,
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
|
4
4
|
*/
|
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
|
6
|
+
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
|
6
7
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
|
7
8
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
|
8
9
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
9
10
|
import { createSmaller } from '../../factoriesAny.js';
|
|
10
11
|
export var smallerDependencies = {
|
|
11
12
|
DenseMatrixDependencies,
|
|
13
|
+
SparseMatrixDependencies,
|
|
12
14
|
concatDependencies,
|
|
13
15
|
matrixDependencies,
|
|
14
16
|
typedDependencies,
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
|
4
4
|
*/
|
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
|
6
|
+
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
|
6
7
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
|
7
8
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
|
8
9
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
9
10
|
import { createSmallerEq } from '../../factoriesAny.js';
|
|
10
11
|
export var smallerEqDependencies = {
|
|
11
12
|
DenseMatrixDependencies,
|
|
13
|
+
SparseMatrixDependencies,
|
|
12
14
|
concatDependencies,
|
|
13
15
|
matrixDependencies,
|
|
14
16
|
typedDependencies,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
|
4
4
|
*/
|
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
|
6
|
+
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
|
6
7
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
|
7
8
|
import { equalScalarDependencies } from './dependenciesEqualScalar.generated.js';
|
|
8
9
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
|
@@ -10,6 +11,7 @@ import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
|
10
11
|
import { createUnequal } from '../../factoriesAny.js';
|
|
11
12
|
export var unequalDependencies = {
|
|
12
13
|
DenseMatrixDependencies,
|
|
14
|
+
SparseMatrixDependencies,
|
|
13
15
|
concatDependencies,
|
|
14
16
|
equalScalarDependencies,
|
|
15
17
|
matrixDependencies,
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
|
4
4
|
*/
|
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
|
6
|
+
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
|
6
7
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
|
7
8
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
|
8
9
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
|
9
10
|
import { createXor } from '../../factoriesAny.js';
|
|
10
11
|
export var xorDependencies = {
|
|
11
12
|
DenseMatrixDependencies,
|
|
13
|
+
SparseMatrixDependencies,
|
|
12
14
|
concatDependencies,
|
|
13
15
|
matrixDependencies,
|
|
14
16
|
typedDependencies,
|
|
@@ -13,6 +13,7 @@ import { ParenthesisNodeDependencies } from './dependenciesParenthesisNode.gener
|
|
|
13
13
|
import { SymbolNodeDependencies } from './dependenciesSymbolNode.generated.js';
|
|
14
14
|
import { equalDependencies } from './dependenciesEqual.generated.js';
|
|
15
15
|
import { parseDependencies } from './dependenciesParse.generated.js';
|
|
16
|
+
import { replacerDependencies } from './dependenciesReplacer.generated.js';
|
|
16
17
|
import { resolveDependencies } from './dependenciesResolve.generated.js';
|
|
17
18
|
import { simplifyConstantDependencies } from './dependenciesSimplifyConstant.generated.js';
|
|
18
19
|
import { simplifyCoreDependencies } from './dependenciesSimplifyCore.generated.js';
|
|
@@ -30,6 +31,7 @@ export var simplifyDependencies = {
|
|
|
30
31
|
SymbolNodeDependencies,
|
|
31
32
|
equalDependencies,
|
|
32
33
|
parseDependencies,
|
|
34
|
+
replacerDependencies,
|
|
33
35
|
resolveDependencies,
|
|
34
36
|
simplifyConstantDependencies,
|
|
35
37
|
simplifyCoreDependencies,
|
|
@@ -487,6 +487,7 @@ export var divideScalar = /* #__PURE__ */createDivideScalar({
|
|
|
487
487
|
});
|
|
488
488
|
export var dotDivide = /* #__PURE__ */createDotDivide({
|
|
489
489
|
DenseMatrix,
|
|
490
|
+
SparseMatrix,
|
|
490
491
|
concat,
|
|
491
492
|
divideScalar,
|
|
492
493
|
equalScalar,
|
|
@@ -495,6 +496,7 @@ export var dotDivide = /* #__PURE__ */createDotDivide({
|
|
|
495
496
|
});
|
|
496
497
|
export var equal = /* #__PURE__ */createEqual({
|
|
497
498
|
DenseMatrix,
|
|
499
|
+
SparseMatrix,
|
|
498
500
|
concat,
|
|
499
501
|
equalScalar,
|
|
500
502
|
matrix,
|
|
@@ -519,6 +521,7 @@ export var kron = /* #__PURE__ */createKron({
|
|
|
519
521
|
});
|
|
520
522
|
export var largerEq = /* #__PURE__ */createLargerEq({
|
|
521
523
|
DenseMatrix,
|
|
524
|
+
SparseMatrix,
|
|
522
525
|
concat,
|
|
523
526
|
config,
|
|
524
527
|
matrix,
|
|
@@ -600,6 +603,7 @@ export var round = /* #__PURE__ */createRound({
|
|
|
600
603
|
});
|
|
601
604
|
export var smaller = /* #__PURE__ */createSmaller({
|
|
602
605
|
DenseMatrix,
|
|
606
|
+
SparseMatrix,
|
|
603
607
|
concat,
|
|
604
608
|
config,
|
|
605
609
|
matrix,
|
|
@@ -635,6 +639,7 @@ export var usolve = /* #__PURE__ */createUsolve({
|
|
|
635
639
|
});
|
|
636
640
|
export var xor = /* #__PURE__ */createXor({
|
|
637
641
|
DenseMatrix,
|
|
642
|
+
SparseMatrix,
|
|
638
643
|
concat,
|
|
639
644
|
matrix,
|
|
640
645
|
typed
|
|
@@ -671,6 +676,7 @@ export var bitOr = /* #__PURE__ */createBitOr({
|
|
|
671
676
|
});
|
|
672
677
|
export var bitXor = /* #__PURE__ */createBitXor({
|
|
673
678
|
DenseMatrix,
|
|
679
|
+
SparseMatrix,
|
|
674
680
|
concat,
|
|
675
681
|
matrix,
|
|
676
682
|
typed
|
|
@@ -776,6 +782,7 @@ export var Index = /* #__PURE__ */createIndexClass({
|
|
|
776
782
|
});
|
|
777
783
|
export var larger = /* #__PURE__ */createLarger({
|
|
778
784
|
DenseMatrix,
|
|
785
|
+
SparseMatrix,
|
|
779
786
|
concat,
|
|
780
787
|
config,
|
|
781
788
|
matrix,
|
|
@@ -785,6 +792,7 @@ export var log = /* #__PURE__ */createLog({
|
|
|
785
792
|
Complex,
|
|
786
793
|
config,
|
|
787
794
|
divideScalar,
|
|
795
|
+
typeOf,
|
|
788
796
|
typed
|
|
789
797
|
});
|
|
790
798
|
export var lsolveAll = /* #__PURE__ */createLsolveAll({
|
|
@@ -1039,6 +1047,7 @@ export var setPowerset = /* #__PURE__ */createSetPowerset({
|
|
|
1039
1047
|
});
|
|
1040
1048
|
export var smallerEq = /* #__PURE__ */createSmallerEq({
|
|
1041
1049
|
DenseMatrix,
|
|
1050
|
+
SparseMatrix,
|
|
1042
1051
|
concat,
|
|
1043
1052
|
config,
|
|
1044
1053
|
matrix,
|
|
@@ -1052,6 +1061,7 @@ export var sort = /* #__PURE__ */createSort({
|
|
|
1052
1061
|
});
|
|
1053
1062
|
export var unequal = /* #__PURE__ */createUnequal({
|
|
1054
1063
|
DenseMatrix,
|
|
1064
|
+
SparseMatrix,
|
|
1055
1065
|
concat,
|
|
1056
1066
|
config,
|
|
1057
1067
|
equalScalar,
|
|
@@ -1259,6 +1269,7 @@ export var deuteronMass = /* #__PURE__ */createDeuteronMass({
|
|
|
1259
1269
|
});
|
|
1260
1270
|
export var dotPow = /* #__PURE__ */createDotPow({
|
|
1261
1271
|
DenseMatrix,
|
|
1272
|
+
SparseMatrix,
|
|
1262
1273
|
concat,
|
|
1263
1274
|
equalScalar,
|
|
1264
1275
|
matrix,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export var ceilDocs = {
|
|
2
2
|
name: 'ceil',
|
|
3
3
|
category: 'Arithmetic',
|
|
4
|
-
syntax: ['ceil(x)'],
|
|
4
|
+
syntax: ['ceil(x)', 'ceil(x, n)', 'ceil(unit, valuelessUnit)', 'ceil(unit, n, valuelessUnit)'],
|
|
5
5
|
description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',
|
|
6
|
-
examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)'],
|
|
6
|
+
examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)', 'ceil(3.241cm, cm)', 'ceil(3.241cm, 2, cm)'],
|
|
7
7
|
seealso: ['floor', 'fix', 'round']
|
|
8
8
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export var fixDocs = {
|
|
2
2
|
name: 'fix',
|
|
3
3
|
category: 'Arithmetic',
|
|
4
|
-
syntax: ['fix(x)'],
|
|
4
|
+
syntax: ['fix(x)', 'fix(x, n)', 'fix(unit, valuelessUnit)', 'fix(unit, n, valuelessUnit)'],
|
|
5
5
|
description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',
|
|
6
|
-
examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)'],
|
|
6
|
+
examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)', 'fix(3.241cm, cm)', 'fix(3.241cm, 2, cm)'],
|
|
7
7
|
seealso: ['ceil', 'floor', 'round']
|
|
8
8
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export var floorDocs = {
|
|
2
2
|
name: 'floor',
|
|
3
3
|
category: 'Arithmetic',
|
|
4
|
-
syntax: ['floor(x)'],
|
|
4
|
+
syntax: ['floor(x)', 'floor(x, n)', 'floor(unit, valuelessUnit)', 'floor(unit, n, valuelessUnit)'],
|
|
5
5
|
description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',
|
|
6
|
-
examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)'],
|
|
6
|
+
examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)', 'floor(3.241cm, cm)', 'floor(3.241cm, 2, cm)'],
|
|
7
7
|
seealso: ['ceil', 'fix', 'round']
|
|
8
8
|
};
|
|
@@ -932,7 +932,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
932
932
|
*/
|
|
933
933
|
function parseAddSubtract(state) {
|
|
934
934
|
var node, name, fn, params;
|
|
935
|
-
node =
|
|
935
|
+
node = parseMultiplyDivideModulusPercentage(state);
|
|
936
936
|
var operators = {
|
|
937
937
|
'+': 'add',
|
|
938
938
|
'-': 'subtract'
|
|
@@ -941,7 +941,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
941
941
|
name = state.token;
|
|
942
942
|
fn = operators[name];
|
|
943
943
|
getTokenSkipNewline(state);
|
|
944
|
-
var rightNode =
|
|
944
|
+
var rightNode = parseMultiplyDivideModulusPercentage(state);
|
|
945
945
|
if (rightNode.isPercentage) {
|
|
946
946
|
params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];
|
|
947
947
|
} else {
|
|
@@ -953,11 +953,11 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
953
953
|
}
|
|
954
954
|
|
|
955
955
|
/**
|
|
956
|
-
* multiply, divide
|
|
956
|
+
* multiply, divide, modulus, percentage
|
|
957
957
|
* @return {Node} node
|
|
958
958
|
* @private
|
|
959
959
|
*/
|
|
960
|
-
function
|
|
960
|
+
function parseMultiplyDivideModulusPercentage(state) {
|
|
961
961
|
var node, last, name, fn;
|
|
962
962
|
node = parseImplicitMultiplication(state);
|
|
963
963
|
last = node;
|
|
@@ -965,7 +965,9 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
965
965
|
'*': 'multiply',
|
|
966
966
|
'.*': 'dotMultiply',
|
|
967
967
|
'/': 'divide',
|
|
968
|
-
'./': 'dotDivide'
|
|
968
|
+
'./': 'dotDivide',
|
|
969
|
+
'%': 'mod',
|
|
970
|
+
mod: 'mod'
|
|
969
971
|
};
|
|
970
972
|
while (true) {
|
|
971
973
|
if (hasOwnProperty(operators, state.token)) {
|
|
@@ -973,8 +975,23 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
973
975
|
name = state.token;
|
|
974
976
|
fn = operators[name];
|
|
975
977
|
getTokenSkipNewline(state);
|
|
976
|
-
|
|
977
|
-
|
|
978
|
+
if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {
|
|
979
|
+
// If the expression contains only %, then treat that as /100
|
|
980
|
+
if (state.token !== '' && operators[state.token]) {
|
|
981
|
+
var left = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);
|
|
982
|
+
name = state.token;
|
|
983
|
+
fn = operators[name];
|
|
984
|
+
getTokenSkipNewline(state);
|
|
985
|
+
last = parseImplicitMultiplication(state);
|
|
986
|
+
node = new OperatorNode(name, fn, [left, last]);
|
|
987
|
+
} else {
|
|
988
|
+
node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);
|
|
989
|
+
}
|
|
990
|
+
// return node
|
|
991
|
+
} else {
|
|
992
|
+
last = parseImplicitMultiplication(state);
|
|
993
|
+
node = new OperatorNode(name, fn, [node, last]);
|
|
994
|
+
}
|
|
978
995
|
} else {
|
|
979
996
|
break;
|
|
980
997
|
}
|
|
@@ -1017,7 +1034,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
1017
1034
|
* @private
|
|
1018
1035
|
*/
|
|
1019
1036
|
function parseRule2(state) {
|
|
1020
|
-
var node =
|
|
1037
|
+
var node = parseUnary(state);
|
|
1021
1038
|
var last = node;
|
|
1022
1039
|
var tokenStates = [];
|
|
1023
1040
|
while (true) {
|
|
@@ -1039,7 +1056,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
1039
1056
|
// Rewind once and build the "number / number" node; the symbol will be consumed later
|
|
1040
1057
|
_extends(state, tokenStates.pop());
|
|
1041
1058
|
tokenStates.pop();
|
|
1042
|
-
last =
|
|
1059
|
+
last = parseUnary(state);
|
|
1043
1060
|
node = new OperatorNode('/', 'divide', [node, last]);
|
|
1044
1061
|
} else {
|
|
1045
1062
|
// Not a match, so rewind
|
|
@@ -1059,33 +1076,6 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
1059
1076
|
return node;
|
|
1060
1077
|
}
|
|
1061
1078
|
|
|
1062
|
-
/**
|
|
1063
|
-
* modulus and percentage
|
|
1064
|
-
* @return {Node} node
|
|
1065
|
-
* @private
|
|
1066
|
-
*/
|
|
1067
|
-
function parseModulusPercentage(state) {
|
|
1068
|
-
var node, name, fn, params;
|
|
1069
|
-
node = parseUnary(state);
|
|
1070
|
-
var operators = {
|
|
1071
|
-
'%': 'mod',
|
|
1072
|
-
mod: 'mod'
|
|
1073
|
-
};
|
|
1074
|
-
while (hasOwnProperty(operators, state.token)) {
|
|
1075
|
-
name = state.token;
|
|
1076
|
-
fn = operators[name];
|
|
1077
|
-
getTokenSkipNewline(state);
|
|
1078
|
-
if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {
|
|
1079
|
-
// If the expression contains only %, then treat that as /100
|
|
1080
|
-
node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);
|
|
1081
|
-
} else {
|
|
1082
|
-
params = [node, parseUnary(state)];
|
|
1083
|
-
node = new OperatorNode(name, fn, params);
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
return node;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
1079
|
/**
|
|
1090
1080
|
* Unary plus and minus, and logical and bitwise not
|
|
1091
1081
|
* @return {Node} node
|