mathjs 9.4.5 → 9.5.0

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