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.
Files changed (111) hide show
  1. package/HISTORY.md +24 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -10
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/core/function/import.js +4 -1
  6. package/lib/cjs/core/function/typed.js +1 -1
  7. package/lib/cjs/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  8. package/lib/cjs/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  19. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  20. package/lib/cjs/entry/impureFunctionsAny.generated.js +1 -0
  21. package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -0
  22. package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -0
  23. package/lib/cjs/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
  24. package/lib/cjs/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
  25. package/lib/cjs/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
  26. package/lib/cjs/expression/parse.js +26 -36
  27. package/lib/cjs/function/algebra/derivative.js +64 -77
  28. package/lib/cjs/function/algebra/simplify.js +4 -3
  29. package/lib/cjs/function/algebra/simplifyConstant.js +5 -11
  30. package/lib/cjs/function/arithmetic/ceil.js +21 -2
  31. package/lib/cjs/function/arithmetic/dotDivide.js +4 -3
  32. package/lib/cjs/function/arithmetic/dotPow.js +4 -3
  33. package/lib/cjs/function/arithmetic/fix.js +24 -5
  34. package/lib/cjs/function/arithmetic/floor.js +21 -2
  35. package/lib/cjs/function/arithmetic/log.js +12 -4
  36. package/lib/cjs/function/arithmetic/pow.js +2 -2
  37. package/lib/cjs/function/arithmetic/round.js +3 -5
  38. package/lib/cjs/function/arithmetic/sign.js +1 -1
  39. package/lib/cjs/function/bitwise/bitXor.js +4 -3
  40. package/lib/cjs/function/logical/xor.js +4 -3
  41. package/lib/cjs/function/relational/equal.js +4 -3
  42. package/lib/cjs/function/relational/larger.js +4 -3
  43. package/lib/cjs/function/relational/largerEq.js +4 -3
  44. package/lib/cjs/function/relational/smaller.js +4 -3
  45. package/lib/cjs/function/relational/smallerEq.js +4 -3
  46. package/lib/cjs/function/relational/unequal.js +4 -3
  47. package/lib/cjs/function/utils/isInteger.js +1 -1
  48. package/lib/cjs/function/utils/isNegative.js +1 -1
  49. package/lib/cjs/function/utils/isPositive.js +1 -1
  50. package/lib/cjs/header.js +2 -2
  51. package/lib/cjs/type/bignumber/function/bignumber.js +2 -2
  52. package/lib/cjs/type/fraction/Fraction.js +4 -4
  53. package/lib/cjs/type/fraction/function/fraction.js +3 -0
  54. package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +39 -43
  55. package/lib/cjs/type/unit/Unit.js +1 -1
  56. package/lib/cjs/utils/string.js +2 -2
  57. package/lib/cjs/version.js +1 -1
  58. package/lib/esm/core/function/import.js +4 -1
  59. package/lib/esm/core/function/typed.js +1 -1
  60. package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  61. package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  62. package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  63. package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  64. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  65. package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  66. package/lib/esm/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
  67. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  68. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  69. package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  70. package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  71. package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  72. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  73. package/lib/esm/entry/impureFunctionsAny.generated.js +1 -0
  74. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -0
  75. package/lib/esm/entry/pureFunctionsAny.generated.js +11 -0
  76. package/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
  77. package/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
  78. package/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
  79. package/lib/esm/expression/parse.js +26 -36
  80. package/lib/esm/function/algebra/derivative.js +64 -77
  81. package/lib/esm/function/algebra/simplify.js +4 -3
  82. package/lib/esm/function/algebra/simplifyConstant.js +5 -11
  83. package/lib/esm/function/arithmetic/ceil.js +21 -2
  84. package/lib/esm/function/arithmetic/dotDivide.js +4 -3
  85. package/lib/esm/function/arithmetic/dotPow.js +4 -3
  86. package/lib/esm/function/arithmetic/fix.js +24 -5
  87. package/lib/esm/function/arithmetic/floor.js +21 -2
  88. package/lib/esm/function/arithmetic/log.js +12 -4
  89. package/lib/esm/function/arithmetic/pow.js +2 -2
  90. package/lib/esm/function/arithmetic/round.js +3 -5
  91. package/lib/esm/function/arithmetic/sign.js +1 -1
  92. package/lib/esm/function/bitwise/bitXor.js +4 -3
  93. package/lib/esm/function/logical/xor.js +4 -3
  94. package/lib/esm/function/relational/equal.js +4 -3
  95. package/lib/esm/function/relational/larger.js +4 -3
  96. package/lib/esm/function/relational/largerEq.js +4 -3
  97. package/lib/esm/function/relational/smaller.js +4 -3
  98. package/lib/esm/function/relational/smallerEq.js +4 -3
  99. package/lib/esm/function/relational/unequal.js +4 -3
  100. package/lib/esm/function/utils/isInteger.js +1 -1
  101. package/lib/esm/function/utils/isNegative.js +1 -1
  102. package/lib/esm/function/utils/isPositive.js +1 -1
  103. package/lib/esm/type/bignumber/function/bignumber.js +2 -2
  104. package/lib/esm/type/fraction/Fraction.js +4 -4
  105. package/lib/esm/type/fraction/function/fraction.js +3 -0
  106. package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +39 -43
  107. package/lib/esm/type/unit/Unit.js +1 -1
  108. package/lib/esm/utils/string.js +2 -2
  109. package/lib/esm/version.js +1 -1
  110. package/package.json +13 -13
  111. 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,
@@ -172,6 +172,7 @@ export var simplify = createSimplify({
172
172
  SymbolNode,
173
173
  equal,
174
174
  parse,
175
+ replacer,
175
176
  resolve,
176
177
  simplifyConstant,
177
178
  simplifyCore,
@@ -169,6 +169,7 @@ export var simplify = createSimplify({
169
169
  SymbolNode,
170
170
  equal,
171
171
  parse,
172
+ replacer,
172
173
  resolve,
173
174
  simplifyConstant,
174
175
  simplifyCore,
@@ -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 = parseMultiplyDivide(state);
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 = parseMultiplyDivide(state);
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 parseMultiplyDivide(state) {
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
- last = parseImplicitMultiplication(state);
977
- node = new OperatorNode(name, fn, [node, last]);
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 = parseModulusPercentage(state);
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 = parseModulusPercentage(state);
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