mathjs 13.2.3 → 14.0.1

Sign up to get free protection for your applications and to get access to all the features.
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