mathjs 9.4.5 → 9.5.0

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.
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ParserDependencies = void 0;
7
7
 
8
- var _dependenciesParseGenerated = require("./dependenciesParse.generated.js");
8
+ var _dependenciesEvaluateGenerated = require("./dependenciesEvaluate.generated.js");
9
9
 
10
10
  var _factoriesAny = require("../../factoriesAny.js");
11
11
 
@@ -14,7 +14,7 @@ var _factoriesAny = require("../../factoriesAny.js");
14
14
  * DON'T MAKE CHANGES HERE
15
15
  */
16
16
  var ParserDependencies = {
17
- parseDependencies: _dependenciesParseGenerated.parseDependencies,
17
+ evaluateDependencies: _dependenciesEvaluateGenerated.evaluateDependencies,
18
18
  createParserClass: _factoriesAny.createParserClass
19
19
  };
20
20
  exports.ParserDependencies = ParserDependencies;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ParserDependencies = void 0;
7
7
 
8
- var _dependenciesParseGenerated = require("./dependenciesParse.generated.js");
8
+ var _dependenciesEvaluateGenerated = require("./dependenciesEvaluate.generated.js");
9
9
 
10
10
  var _factoriesNumber = require("../../factoriesNumber.js");
11
11
 
@@ -14,7 +14,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
14
14
  * DON'T MAKE CHANGES HERE
15
15
  */
16
16
  var ParserDependencies = {
17
- parseDependencies: _dependenciesParseGenerated.parseDependencies,
17
+ evaluateDependencies: _dependenciesEvaluateGenerated.evaluateDependencies,
18
18
  createParserClass: _factoriesNumber.createParserClass
19
19
  };
20
20
  exports.ParserDependencies = ParserDependencies;
@@ -195,7 +195,7 @@ var rationalize = (0, _factoriesAny.createRationalize)({
195
195
  });
196
196
  exports.rationalize = rationalize;
197
197
  var Parser = (0, _factoriesAny.createParserClass)({
198
- parse: parse
198
+ evaluate: evaluate
199
199
  });
200
200
  exports.Parser = Parser;
201
201
  var help = (0, _factoriesAny.createHelp)({
@@ -201,7 +201,7 @@ var help = (0, _factoriesNumber.createHelp)({
201
201
  });
202
202
  exports.help = help;
203
203
  var Parser = (0, _factoriesNumber.createParserClass)({
204
- parse: parse
204
+ evaluate: evaluate
205
205
  });
206
206
  exports.Parser = Parser;
207
207
  var derivative = (0, _factoriesNumber.createDerivative)({
@@ -10,9 +10,9 @@ var _factory = require("../utils/factory.js");
10
10
  var _map = require("../utils/map.js");
11
11
 
12
12
  var name = 'Parser';
13
- var dependencies = ['parse'];
13
+ var dependencies = ['evaluate'];
14
14
  var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
- var parse = _ref.parse;
15
+ var evaluate = _ref.evaluate;
16
16
 
17
17
  /**
18
18
  * @constructor Parser
@@ -81,14 +81,15 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
81
81
  Parser.prototype.isParser = true;
82
82
  /**
83
83
  * Parse and evaluate the given expression
84
- * @param {string} expr A string containing an expression, for example "2+3"
84
+ * @param {string | string[]} expr A string containing an expression,
85
+ * for example "2+3", or a list with expressions
85
86
  * @return {*} result The result, or undefined when the expression was empty
86
87
  * @throws {Error}
87
88
  */
88
89
 
89
90
  Parser.prototype.evaluate = function (expr) {
90
91
  // TODO: validate arguments
91
- return parse(expr).compile().evaluate(this.scope);
92
+ return evaluate(expr, this.scope);
92
93
  };
93
94
  /**
94
95
  * Get a variable (a function or variable) by name from the parsers scope.
@@ -8,7 +8,7 @@ var setCartesianDocs = {
8
8
  name: 'setCartesian',
9
9
  category: 'Set',
10
10
  syntax: ['setCartesian(set1, set2)'],
11
- description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',
11
+ description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',
12
12
  examples: ['setCartesian([1, 2], [3, 4])'],
13
13
  seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']
14
14
  };
@@ -33,8 +33,9 @@ var createOperatorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
33
33
  * @param {string} fn Function name, for example 'add'
34
34
  * @param {Node[]} args Operator arguments
35
35
  * @param {boolean} [implicit] Is this an implicit multiplication?
36
+ * @param {boolean} [isPercentage] Is this an percentage Operation?
36
37
  */
37
- function OperatorNode(op, fn, args, implicit) {
38
+ function OperatorNode(op, fn, args, implicit, isPercentage) {
38
39
  if (!(this instanceof OperatorNode)) {
39
40
  throw new SyntaxError('Constructor must be called with the new operator');
40
41
  } // validate input
@@ -53,6 +54,7 @@ var createOperatorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
53
54
  }
54
55
 
55
56
  this.implicit = implicit === true;
57
+ this.isPercentage = isPercentage === true;
56
58
  this.op = op;
57
59
  this.fn = fn;
58
60
  this.args = args || [];
@@ -135,7 +137,7 @@ var createOperatorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
135
137
  args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));
136
138
  }
137
139
 
138
- return new OperatorNode(this.op, this.fn, args, this.implicit);
140
+ return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);
139
141
  };
140
142
  /**
141
143
  * Create a clone of this node, a shallow copy
@@ -144,7 +146,7 @@ var createOperatorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
144
146
 
145
147
 
146
148
  OperatorNode.prototype.clone = function () {
147
- return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit);
149
+ return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);
148
150
  };
149
151
  /**
150
152
  * Check whether this is an unary OperatorNode:
@@ -478,20 +480,21 @@ var createOperatorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
478
480
  op: this.op,
479
481
  fn: this.fn,
480
482
  args: this.args,
481
- implicit: this.implicit
483
+ implicit: this.implicit,
484
+ isPercentage: this.isPercentage
482
485
  };
483
486
  };
484
487
  /**
485
488
  * Instantiate an OperatorNode from its JSON representation
486
489
  * @param {Object} json An object structured like
487
- * `{"mathjs": "OperatorNode", "op": "+", "fn": "add", "args": [...], "implicit": false}`,
490
+ * `{"mathjs": "OperatorNode", "op": "+", "fn": "add", "args": [...], "implicit": false, "isPercentage":false}`,
488
491
  * where mathjs is optional
489
492
  * @returns {OperatorNode}
490
493
  */
491
494
 
492
495
 
493
496
  OperatorNode.fromJSON = function (json) {
494
- return new OperatorNode(json.op, json.fn, json.args, json.implicit);
497
+ return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);
495
498
  };
496
499
  /**
497
500
  * Get HTML representation.
@@ -1018,7 +1018,14 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1018
1018
  name = state.token;
1019
1019
  fn = operators[name];
1020
1020
  getTokenSkipNewline(state);
1021
- params = [node, parseMultiplyDivide(state)];
1021
+ var rightNode = parseMultiplyDivide(state);
1022
+
1023
+ if (rightNode.isPercentage) {
1024
+ params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];
1025
+ } else {
1026
+ params = [node, rightNode];
1027
+ }
1028
+
1022
1029
  node = new OperatorNode(name, fn, params);
1023
1030
  }
1024
1031
 
@@ -1039,9 +1046,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1039
1046
  '*': 'multiply',
1040
1047
  '.*': 'dotMultiply',
1041
1048
  '/': 'divide',
1042
- './': 'dotDivide',
1043
- '%': 'mod',
1044
- mod: 'mod'
1049
+ './': 'dotDivide'
1045
1050
  };
1046
1051
 
1047
1052
  while (true) {
@@ -1099,7 +1104,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1099
1104
 
1100
1105
 
1101
1106
  function parseRule2(state) {
1102
- var node = parseUnary(state);
1107
+ var node = parsePercentage(state);
1103
1108
  var last = node;
1104
1109
  var tokenStates = [];
1105
1110
 
@@ -1120,7 +1125,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1120
1125
  // Rewind once and build the "number / number" node; the symbol will be consumed later
1121
1126
  (0, _extends2["default"])(state, tokenStates.pop());
1122
1127
  tokenStates.pop();
1123
- last = parseUnary(state);
1128
+ last = parsePercentage(state);
1124
1129
  node = new OperatorNode('/', 'divide', [node, last]);
1125
1130
  } else {
1126
1131
  // Not a match, so rewind
@@ -1140,6 +1145,37 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1140
1145
 
1141
1146
  return node;
1142
1147
  }
1148
+ /**
1149
+ * percentage or mod
1150
+ * @return {Node} node
1151
+ * @private
1152
+ */
1153
+
1154
+
1155
+ function parsePercentage(state) {
1156
+ var node, name, fn, params;
1157
+ node = parseUnary(state);
1158
+ var operators = {
1159
+ '%': 'mod',
1160
+ mod: 'mod'
1161
+ };
1162
+
1163
+ while ((0, _object.hasOwnProperty)(operators, state.token)) {
1164
+ name = state.token;
1165
+ fn = operators[name];
1166
+ getTokenSkipNewline(state);
1167
+
1168
+ if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {
1169
+ // If the expression contains only %, then treat that as /100
1170
+ node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);
1171
+ } else {
1172
+ params = [node, parseUnary(state)];
1173
+ node = new OperatorNode(name, fn, params);
1174
+ }
1175
+ }
1176
+
1177
+ return node;
1178
+ }
1143
1179
  /**
1144
1180
  * Unary plus and minus, and logical and bitwise not
1145
1181
  * @return {Node} node
@@ -21,7 +21,8 @@ var createSetCartesian = /* #__PURE__ */(0, _factory.factory)(name, dependencies
21
21
 
22
22
  /**
23
23
  * Create the cartesian product of two (multi)sets.
24
- * Multi-dimension arrays will be converted to single-dimension arrays before the operation.
24
+ * Multi-dimension arrays will be converted to single-dimension arrays
25
+ * and the values will be sorted in ascending order before the operation.
25
26
  *
26
27
  * Syntax:
27
28
  *
@@ -30,6 +31,7 @@ var createSetCartesian = /* #__PURE__ */(0, _factory.factory)(name, dependencies
30
31
  * Examples:
31
32
  *
32
33
  * math.setCartesian([1, 2], [3, 4]) // returns [[1, 3], [1, 4], [2, 3], [2, 4]]
34
+ * math.setCartesian([4, 3], [2, 1]) // returns [[3, 1], [3, 2], [4, 1], [4, 2]]
33
35
  *
34
36
  * See also:
35
37
  *
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 9.4.5
10
- * @date 2021-09-15
9
+ * @version 9.5.0
10
+ * @date 2021-09-22
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2021 Jos de Jong <wjosdejong@gmail.com>
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- var version = '9.4.5'; // Note: This file is automatically generated when building math.js.
7
+ var version = '9.5.0'; // Note: This file is automatically generated when building math.js.
8
8
  // Changes made in this file will be overwritten.
9
9
 
10
10
  exports.version = version;
@@ -2,9 +2,9 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
- import { parseDependencies } from './dependenciesParse.generated.js';
5
+ import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
6
6
  import { createParserClass } from '../../factoriesAny.js';
7
7
  export var ParserDependencies = {
8
- parseDependencies,
8
+ evaluateDependencies,
9
9
  createParserClass
10
10
  };
@@ -2,9 +2,9 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
- import { parseDependencies } from './dependenciesParse.generated.js';
5
+ import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
6
6
  import { createParserClass } from '../../factoriesNumber.js';
7
7
  export var ParserDependencies = {
8
- parseDependencies,
8
+ evaluateDependencies,
9
9
  createParserClass
10
10
  };
@@ -152,7 +152,7 @@ export var rationalize = createRationalize({
152
152
  typed
153
153
  });
154
154
  export var Parser = createParserClass({
155
- parse
155
+ evaluate
156
156
  });
157
157
  export var help = createHelp({
158
158
  Help,
@@ -156,7 +156,7 @@ export var help = createHelp({
156
156
  typed
157
157
  });
158
158
  export var Parser = createParserClass({
159
- parse
159
+ evaluate
160
160
  });
161
161
  export var derivative = createDerivative({
162
162
  ConstantNode,
@@ -1,10 +1,10 @@
1
1
  import { factory } from '../utils/factory.js';
2
2
  import { createEmptyMap, toObject } from '../utils/map.js';
3
3
  var name = 'Parser';
4
- var dependencies = ['parse'];
4
+ var dependencies = ['evaluate'];
5
5
  export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
- parse
7
+ evaluate
8
8
  } = _ref;
9
9
 
10
10
  /**
@@ -74,14 +74,15 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref =
74
74
  Parser.prototype.isParser = true;
75
75
  /**
76
76
  * Parse and evaluate the given expression
77
- * @param {string} expr A string containing an expression, for example "2+3"
77
+ * @param {string | string[]} expr A string containing an expression,
78
+ * for example "2+3", or a list with expressions
78
79
  * @return {*} result The result, or undefined when the expression was empty
79
80
  * @throws {Error}
80
81
  */
81
82
 
82
83
  Parser.prototype.evaluate = function (expr) {
83
84
  // TODO: validate arguments
84
- return parse(expr).compile().evaluate(this.scope);
85
+ return evaluate(expr, this.scope);
85
86
  };
86
87
  /**
87
88
  * Get a variable (a function or variable) by name from the parsers scope.
@@ -2,7 +2,7 @@ export var setCartesianDocs = {
2
2
  name: 'setCartesian',
3
3
  category: 'Set',
4
4
  syntax: ['setCartesian(set1, set2)'],
5
- description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',
5
+ description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',
6
6
  examples: ['setCartesian([1, 2], [3, 4])'],
7
7
  seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']
8
8
  };
@@ -21,8 +21,9 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
21
21
  * @param {string} fn Function name, for example 'add'
22
22
  * @param {Node[]} args Operator arguments
23
23
  * @param {boolean} [implicit] Is this an implicit multiplication?
24
+ * @param {boolean} [isPercentage] Is this an percentage Operation?
24
25
  */
25
- function OperatorNode(op, fn, args, implicit) {
26
+ function OperatorNode(op, fn, args, implicit, isPercentage) {
26
27
  if (!(this instanceof OperatorNode)) {
27
28
  throw new SyntaxError('Constructor must be called with the new operator');
28
29
  } // validate input
@@ -41,6 +42,7 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
41
42
  }
42
43
 
43
44
  this.implicit = implicit === true;
45
+ this.isPercentage = isPercentage === true;
44
46
  this.op = op;
45
47
  this.fn = fn;
46
48
  this.args = args || [];
@@ -123,7 +125,7 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
123
125
  args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));
124
126
  }
125
127
 
126
- return new OperatorNode(this.op, this.fn, args, this.implicit);
128
+ return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);
127
129
  };
128
130
  /**
129
131
  * Create a clone of this node, a shallow copy
@@ -132,7 +134,7 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
132
134
 
133
135
 
134
136
  OperatorNode.prototype.clone = function () {
135
- return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit);
137
+ return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);
136
138
  };
137
139
  /**
138
140
  * Check whether this is an unary OperatorNode:
@@ -466,20 +468,21 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
466
468
  op: this.op,
467
469
  fn: this.fn,
468
470
  args: this.args,
469
- implicit: this.implicit
471
+ implicit: this.implicit,
472
+ isPercentage: this.isPercentage
470
473
  };
471
474
  };
472
475
  /**
473
476
  * Instantiate an OperatorNode from its JSON representation
474
477
  * @param {Object} json An object structured like
475
- * `{"mathjs": "OperatorNode", "op": "+", "fn": "add", "args": [...], "implicit": false}`,
478
+ * `{"mathjs": "OperatorNode", "op": "+", "fn": "add", "args": [...], "implicit": false, "isPercentage":false}`,
476
479
  * where mathjs is optional
477
480
  * @returns {OperatorNode}
478
481
  */
479
482
 
480
483
 
481
484
  OperatorNode.fromJSON = function (json) {
482
- return new OperatorNode(json.op, json.fn, json.args, json.implicit);
485
+ return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);
483
486
  };
484
487
  /**
485
488
  * Get HTML representation.
@@ -1006,7 +1006,14 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1006
1006
  name = state.token;
1007
1007
  fn = operators[name];
1008
1008
  getTokenSkipNewline(state);
1009
- params = [node, parseMultiplyDivide(state)];
1009
+ var rightNode = parseMultiplyDivide(state);
1010
+
1011
+ if (rightNode.isPercentage) {
1012
+ params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];
1013
+ } else {
1014
+ params = [node, rightNode];
1015
+ }
1016
+
1010
1017
  node = new OperatorNode(name, fn, params);
1011
1018
  }
1012
1019
 
@@ -1027,9 +1034,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1027
1034
  '*': 'multiply',
1028
1035
  '.*': 'dotMultiply',
1029
1036
  '/': 'divide',
1030
- './': 'dotDivide',
1031
- '%': 'mod',
1032
- mod: 'mod'
1037
+ './': 'dotDivide'
1033
1038
  };
1034
1039
 
1035
1040
  while (true) {
@@ -1087,7 +1092,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1087
1092
 
1088
1093
 
1089
1094
  function parseRule2(state) {
1090
- var node = parseUnary(state);
1095
+ var node = parsePercentage(state);
1091
1096
  var last = node;
1092
1097
  var tokenStates = [];
1093
1098
 
@@ -1109,7 +1114,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1109
1114
  _extends(state, tokenStates.pop());
1110
1115
 
1111
1116
  tokenStates.pop();
1112
- last = parseUnary(state);
1117
+ last = parsePercentage(state);
1113
1118
  node = new OperatorNode('/', 'divide', [node, last]);
1114
1119
  } else {
1115
1120
  // Not a match, so rewind
@@ -1132,6 +1137,37 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1132
1137
 
1133
1138
  return node;
1134
1139
  }
1140
+ /**
1141
+ * percentage or mod
1142
+ * @return {Node} node
1143
+ * @private
1144
+ */
1145
+
1146
+
1147
+ function parsePercentage(state) {
1148
+ var node, name, fn, params;
1149
+ node = parseUnary(state);
1150
+ var operators = {
1151
+ '%': 'mod',
1152
+ mod: 'mod'
1153
+ };
1154
+
1155
+ while (hasOwnProperty(operators, state.token)) {
1156
+ name = state.token;
1157
+ fn = operators[name];
1158
+ getTokenSkipNewline(state);
1159
+
1160
+ if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {
1161
+ // If the expression contains only %, then treat that as /100
1162
+ node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);
1163
+ } else {
1164
+ params = [node, parseUnary(state)];
1165
+ node = new OperatorNode(name, fn, params);
1166
+ }
1167
+ }
1168
+
1169
+ return node;
1170
+ }
1135
1171
  /**
1136
1172
  * Unary plus and minus, and logical and bitwise not
1137
1173
  * @return {Node} node
@@ -14,7 +14,8 @@ export var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref
14
14
 
15
15
  /**
16
16
  * Create the cartesian product of two (multi)sets.
17
- * Multi-dimension arrays will be converted to single-dimension arrays before the operation.
17
+ * Multi-dimension arrays will be converted to single-dimension arrays
18
+ * and the values will be sorted in ascending order before the operation.
18
19
  *
19
20
  * Syntax:
20
21
  *
@@ -23,6 +24,7 @@ export var createSetCartesian = /* #__PURE__ */factory(name, dependencies, _ref
23
24
  * Examples:
24
25
  *
25
26
  * math.setCartesian([1, 2], [3, 4]) // returns [[1, 3], [1, 4], [2, 3], [2, 4]]
27
+ * math.setCartesian([4, 3], [2, 1]) // returns [[3, 1], [3, 2], [4, 1], [4, 2]]
26
28
  *
27
29
  * See also:
28
30
  *
@@ -1,2 +1,2 @@
1
- export var version = '9.4.5'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '9.5.0'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "9.4.5",
3
+ "version": "9.5.0",
4
4
  "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
5
5
  "author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
6
6
  "homepage": "https://mathjs.org",
package/types/index.d.ts CHANGED
@@ -21,7 +21,7 @@ declare namespace math {
21
21
  interface FactoryFunctionMap {
22
22
  [key: string]: FactoryFunction<any> | FactoryFunctionMap;
23
23
  }
24
-
24
+
25
25
 
26
26
  /** Available options for parse */
27
27
  interface ParseOptions {
@@ -1808,8 +1808,8 @@ declare namespace math {
1808
1808
 
1809
1809
  /**
1810
1810
  * Create the cartesian product of two (multi)sets. Multi-dimension
1811
- * arrays will be converted to single-dimension arrays before the
1812
- * operation.
1811
+ * arrays will be converted to single-dimension arrays and the values
1812
+ * will be sorted in ascending order before the operation.
1813
1813
  * @param a1 A (multi)set
1814
1814
  * @param a2 A (multi)set
1815
1815
  * @returns The cartesian product of two (multi)sets
@@ -2431,7 +2431,7 @@ declare namespace math {
2431
2431
 
2432
2432
  /**
2433
2433
  * Test whether a value is an numeric value. In case of a string,
2434
- * true is returned if the string contains a numeric value.
2434
+ * true is returned if the string contains a numeric value.
2435
2435
  * @param x Value to be tested
2436
2436
  * @returns Returns true when x is a number, BigNumber, Fraction, Boolean, or a String containing number.
2437
2437
  * Returns false for other types.
@@ -2948,7 +2948,7 @@ declare namespace math {
2948
2948
  toJSON(): MathJSON;
2949
2949
  formatUnits(): string;
2950
2950
  format(options: FormatOptions): string;
2951
- splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
2951
+ splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
2952
2952
  }
2953
2953
 
2954
2954
  interface CreateUnitOptions {
@@ -3155,7 +3155,7 @@ declare namespace math {
3155
3155
  }
3156
3156
 
3157
3157
  interface Parser {
3158
- evaluate(expr: string): any;
3158
+ evaluate(expr: string | string[]): any;
3159
3159
  get(variable: string): any;
3160
3160
  getAll(): { [key: string]: any };
3161
3161
  set: (variable: string, value: any) => void;
@@ -4303,8 +4303,8 @@ declare namespace math {
4303
4303
 
4304
4304
  /**
4305
4305
  * Create the cartesian product of two (multi)sets. Multi-dimension
4306
- * arrays will be converted to single-dimension arrays before the
4307
- * operation.
4306
+ * arrays will be converted to single-dimension arrays and the values
4307
+ * will be sorted in ascending order before the operation.
4308
4308
  * @param a2 A (multi)set
4309
4309
  */
4310
4310
  setCartesian(a2: MathArray | Matrix): MathJsChain;