mathjs 12.2.1 → 12.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/HISTORY.md +27 -0
  2. package/NOTICE +1 -1
  3. package/README.md +4 -3
  4. package/bin/cli.js +1 -1
  5. package/lib/browser/math.js +1 -1
  6. package/lib/browser/math.js.LICENSE.txt +3 -3
  7. package/lib/browser/math.js.map +1 -1
  8. package/lib/cjs/entry/configReadonly.js +1 -1
  9. package/lib/cjs/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
  10. package/lib/cjs/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
  11. package/lib/cjs/entry/impureFunctionsAny.generated.js +14 -14
  12. package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
  13. package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -11
  14. package/lib/cjs/expression/Help.js +21 -4
  15. package/lib/cjs/expression/node/AccessorNode.js +4 -5
  16. package/lib/cjs/expression/node/ArrayNode.js +4 -5
  17. package/lib/cjs/expression/node/AssignmentNode.js +4 -5
  18. package/lib/cjs/expression/node/BlockNode.js +4 -5
  19. package/lib/cjs/expression/node/ConditionalNode.js +4 -5
  20. package/lib/cjs/expression/node/ConstantNode.js +4 -5
  21. package/lib/cjs/expression/node/FunctionAssignmentNode.js +4 -5
  22. package/lib/cjs/expression/node/FunctionNode.js +5 -6
  23. package/lib/cjs/expression/node/IndexNode.js +4 -5
  24. package/lib/cjs/expression/node/ObjectNode.js +4 -5
  25. package/lib/cjs/expression/node/OperatorNode.js +4 -5
  26. package/lib/cjs/expression/node/ParenthesisNode.js +4 -5
  27. package/lib/cjs/expression/node/RangeNode.js +4 -5
  28. package/lib/cjs/expression/node/RelationalNode.js +4 -5
  29. package/lib/cjs/expression/node/SymbolNode.js +4 -5
  30. package/lib/cjs/function/string/bin.js +3 -3
  31. package/lib/cjs/function/string/format.js +3 -3
  32. package/lib/cjs/function/string/hex.js +3 -3
  33. package/lib/cjs/function/string/oct.js +3 -3
  34. package/lib/cjs/header.js +3 -3
  35. package/lib/cjs/type/unit/Unit.js +86 -2
  36. package/lib/cjs/type/unit/physicalConstants.js +1 -1
  37. package/lib/cjs/utils/bignumber/formatter.js +17 -27
  38. package/lib/cjs/utils/number.js +75 -33
  39. package/lib/cjs/version.js +1 -1
  40. package/lib/esm/entry/configReadonly.js +1 -1
  41. package/lib/esm/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
  42. package/lib/esm/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
  43. package/lib/esm/entry/impureFunctionsAny.generated.js +16 -16
  44. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
  45. package/lib/esm/entry/pureFunctionsAny.generated.js +12 -12
  46. package/lib/esm/expression/Help.js +21 -4
  47. package/lib/esm/function/string/bin.js +3 -3
  48. package/lib/esm/function/string/format.js +3 -3
  49. package/lib/esm/function/string/hex.js +3 -3
  50. package/lib/esm/function/string/oct.js +3 -3
  51. package/lib/esm/header.js +1 -1
  52. package/lib/esm/type/unit/Unit.js +86 -2
  53. package/lib/esm/type/unit/physicalConstants.js +1 -1
  54. package/lib/esm/utils/bignumber/formatter.js +19 -28
  55. package/lib/esm/utils/number.js +76 -34
  56. package/lib/esm/version.js +1 -1
  57. package/package.json +14 -14
  58. package/types/index.d.ts +30 -18
@@ -731,7 +731,7 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
731
731
  Unit.prototype.abs = function () {
732
732
  var ret = this.clone();
733
733
  if (ret.value !== null) {
734
- if (ret._isDerived() || ret.units[0].unit.offset === 0) {
734
+ if (ret._isDerived() || ret.units.length === 0 || ret.units[0].unit.offset === 0) {
735
735
  ret.value = abs(ret.value);
736
736
  } else {
737
737
  // To give the correct, but unexpected, results for units with an offset.
@@ -774,7 +774,7 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
774
774
  if (other.value !== null) {
775
775
  throw new Error('Cannot convert to a unit with a value');
776
776
  }
777
- if (this.value === null || this._isDerived() || this.units[0].unit.offset === other.units[0].unit.offset) {
777
+ if (this.value === null || this._isDerived() || this.units.length === 0 || other.units.length === 0 || this.units[0].unit.offset === other.units[0].unit.offset) {
778
778
  other.value = clone(value);
779
779
  } else {
780
780
  /* Need to adjust value by difference in offset to convert */
@@ -962,6 +962,10 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
962
962
  ret.units = proposedUnitList;
963
963
  ret.fixPrefix = true;
964
964
  ret.skipAutomaticSimplification = true;
965
+ if (this.value !== null) {
966
+ ret.value = null;
967
+ return this.to(ret);
968
+ }
965
969
  return ret;
966
970
  };
967
971
 
@@ -1242,6 +1246,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1242
1246
  value: 1e24,
1243
1247
  scientific: true
1244
1248
  },
1249
+ R: {
1250
+ name: 'R',
1251
+ value: 1e27,
1252
+ scientific: true
1253
+ },
1254
+ Q: {
1255
+ name: 'Q',
1256
+ value: 1e30,
1257
+ scientific: true
1258
+ },
1245
1259
  d: {
1246
1260
  name: 'd',
1247
1261
  value: 1e-1,
@@ -1291,6 +1305,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1291
1305
  name: 'y',
1292
1306
  value: 1e-24,
1293
1307
  scientific: true
1308
+ },
1309
+ r: {
1310
+ name: 'r',
1311
+ value: 1e-27,
1312
+ scientific: true
1313
+ },
1314
+ q: {
1315
+ name: 'q',
1316
+ value: 1e-30,
1317
+ scientific: true
1294
1318
  }
1295
1319
  },
1296
1320
  LONG: {
@@ -1349,6 +1373,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1349
1373
  value: 1e24,
1350
1374
  scientific: true
1351
1375
  },
1376
+ ronna: {
1377
+ name: 'ronna',
1378
+ value: 1e27,
1379
+ scientific: true
1380
+ },
1381
+ quetta: {
1382
+ name: 'quetta',
1383
+ value: 1e30,
1384
+ scientific: true
1385
+ },
1352
1386
  deci: {
1353
1387
  name: 'deci',
1354
1388
  value: 1e-1,
@@ -1398,6 +1432,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1398
1432
  name: 'yocto',
1399
1433
  value: 1e-24,
1400
1434
  scientific: true
1435
+ },
1436
+ ronto: {
1437
+ name: 'ronto',
1438
+ value: 1e-27,
1439
+ scientific: true
1440
+ },
1441
+ quecto: {
1442
+ name: 'quecto',
1443
+ value: 1e-30,
1444
+ scientific: true
1401
1445
  }
1402
1446
  },
1403
1447
  SQUARED: {
@@ -1456,6 +1500,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1456
1500
  value: 1e48,
1457
1501
  scientific: true
1458
1502
  },
1503
+ R: {
1504
+ name: 'R',
1505
+ value: 1e54,
1506
+ scientific: true
1507
+ },
1508
+ Q: {
1509
+ name: 'Q',
1510
+ value: 1e60,
1511
+ scientific: true
1512
+ },
1459
1513
  d: {
1460
1514
  name: 'd',
1461
1515
  value: 1e-2,
@@ -1505,6 +1559,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1505
1559
  name: 'y',
1506
1560
  value: 1e-48,
1507
1561
  scientific: true
1562
+ },
1563
+ r: {
1564
+ name: 'r',
1565
+ value: 1e-54,
1566
+ scientific: true
1567
+ },
1568
+ q: {
1569
+ name: 'q',
1570
+ value: 1e-60,
1571
+ scientific: true
1508
1572
  }
1509
1573
  },
1510
1574
  CUBIC: {
@@ -1563,6 +1627,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1563
1627
  value: 1e72,
1564
1628
  scientific: true
1565
1629
  },
1630
+ R: {
1631
+ name: 'R',
1632
+ value: 1e81,
1633
+ scientific: true
1634
+ },
1635
+ Q: {
1636
+ name: 'Q',
1637
+ value: 1e90,
1638
+ scientific: true
1639
+ },
1566
1640
  d: {
1567
1641
  name: 'd',
1568
1642
  value: 1e-3,
@@ -1612,6 +1686,16 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1612
1686
  name: 'y',
1613
1687
  value: 1e-72,
1614
1688
  scientific: true
1689
+ },
1690
+ r: {
1691
+ name: 'r',
1692
+ value: 1e-81,
1693
+ scientific: true
1694
+ },
1695
+ q: {
1696
+ name: 'q',
1697
+ value: 1e-90,
1698
+ scientific: true
1615
1699
  }
1616
1700
  },
1617
1701
  BINARY_SHORT_SI: {
@@ -44,7 +44,7 @@ export var createAvogadro = /* #__PURE__ */unitFactory('avogadro', '6.02214076e2
44
44
  export var createBoltzmann = /* #__PURE__ */unitFactory('boltzmann', '1.380649e-23', 'J K^-1');
45
45
  export var createFaraday = /* #__PURE__ */unitFactory('faraday', '96485.33212331001', 'C mol^-1');
46
46
  export var createFirstRadiation = /* #__PURE__ */unitFactory('firstRadiation', '3.7417718521927573e-16', 'W m^2');
47
- // export const createSpectralRadiance = /* #__PURE__ */ unitFactory('spectralRadiance', '1.1910429723971881e-16', 'W m^2 sr^-1') // TODO spectralRadiance
47
+ // TODO spectralRadiance = 1.1910429723971881e-16 W m^2 sr^-1
48
48
  export var createLoschmidt = /* #__PURE__ */unitFactory('loschmidt', '2.686780111798444e25', 'm^-3');
49
49
  export var createGasConstant = /* #__PURE__ */unitFactory('gasConstant', '8.31446261815324', 'J K^-1 mol^-1');
50
50
  export var createMolarPlanckConstant = /* #__PURE__ */unitFactory('molarPlanckConstant', '3.990312712893431e-10', 'J s mol^-1');
@@ -1,4 +1,5 @@
1
- import { isInteger } from '../number.js';
1
+ import { isBigNumber, isNumber } from '../is.js';
2
+ import { isInteger, normalizeFormatOptions } from '../number.js';
2
3
 
3
4
  /**
4
5
  * Formats a BigNumber in a given base
@@ -119,7 +120,7 @@ function formatBigNumberToBase(n, base, size) {
119
120
  * format(12400, {notation: 'engineering'}) // returns '12.400e+3'
120
121
  *
121
122
  * @param {BigNumber} value
122
- * @param {Object | Function | number} [options]
123
+ * @param {Object | Function | number | BigNumber} [options]
123
124
  * @return {string} str The formatted value
124
125
  */
125
126
  export function format(value, options) {
@@ -132,30 +133,11 @@ export function format(value, options) {
132
133
  if (!value.isFinite()) {
133
134
  return value.isNaN() ? 'NaN' : value.gt(0) ? 'Infinity' : '-Infinity';
134
135
  }
135
-
136
- // default values for options
137
- var notation = 'auto';
138
- var precision;
139
- var wordSize;
140
- if (options !== undefined) {
141
- // determine notation from options
142
- if (options.notation) {
143
- notation = options.notation;
144
- }
145
-
146
- // determine precision from options
147
- if (typeof options === 'number') {
148
- precision = options;
149
- } else if (options.precision !== undefined) {
150
- precision = options.precision;
151
- }
152
- if (options.wordSize) {
153
- wordSize = options.wordSize;
154
- if (typeof wordSize !== 'number') {
155
- throw new Error('Option "wordSize" must be a number');
156
- }
157
- }
158
- }
136
+ var {
137
+ notation,
138
+ precision,
139
+ wordSize
140
+ } = normalizeFormatOptions(options);
159
141
 
160
142
  // handle the various notations
161
143
  switch (notation) {
@@ -175,8 +157,8 @@ export function format(value, options) {
175
157
  {
176
158
  // determine lower and upper bound for exponential notation.
177
159
  // TODO: implement support for upper and lower to be BigNumbers themselves
178
- var lowerExp = options && options.lowerExp !== undefined ? options.lowerExp : -3;
179
- var upperExp = options && options.upperExp !== undefined ? options.upperExp : 5;
160
+ var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
161
+ var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
180
162
 
181
163
  // handle special case zero
182
164
  if (value.isZero()) return '0';
@@ -249,4 +231,13 @@ export function toExponential(value, precision) {
249
231
  */
250
232
  export function toFixed(value, precision) {
251
233
  return value.toFixed(precision);
234
+ }
235
+ function _toNumberOrDefault(value, defaultValue) {
236
+ if (isNumber(value)) {
237
+ return value;
238
+ } else if (isBigNumber(value)) {
239
+ return value.toNumber();
240
+ } else {
241
+ return defaultValue;
242
+ }
252
243
  }
@@ -1,4 +1,4 @@
1
- import { isNumber } from './is.js';
1
+ import { isBigNumber, isNumber, isObject } from './is.js';
2
2
 
3
3
  /**
4
4
  * @typedef {{sign: '+' | '-' | '', coefficients: number[], exponent: number}} SplitValue
@@ -21,7 +21,7 @@ export function isInteger(value) {
21
21
  * @param {number} x
22
22
  * @returns {number}
23
23
  */
24
- export var sign = /* #__PURE__ */Math.sign || function (x) {
24
+ export var sign = Math.sign || function (x) {
25
25
  if (x > 0) {
26
26
  return 1;
27
27
  } else if (x < 0) {
@@ -36,7 +36,7 @@ export var sign = /* #__PURE__ */Math.sign || function (x) {
36
36
  * @param {number} x
37
37
  * @returns {number}
38
38
  */
39
- export var log2 = /* #__PURE__ */Math.log2 || function log2(x) {
39
+ export var log2 = Math.log2 || function log2(x) {
40
40
  return Math.log(x) / Math.LN2;
41
41
  };
42
42
 
@@ -45,7 +45,7 @@ export var log2 = /* #__PURE__ */Math.log2 || function log2(x) {
45
45
  * @param {number} x
46
46
  * @returns {number}
47
47
  */
48
- export var log10 = /* #__PURE__ */Math.log10 || function log10(x) {
48
+ export var log10 = Math.log10 || function log10(x) {
49
49
  return Math.log(x) / Math.LN10;
50
50
  };
51
51
 
@@ -54,7 +54,7 @@ export var log10 = /* #__PURE__ */Math.log10 || function log10(x) {
54
54
  * @param {number} x
55
55
  * @returns {number}
56
56
  */
57
- export var log1p = /* #__PURE__ */Math.log1p || function (x) {
57
+ export var log1p = Math.log1p || function (x) {
58
58
  return Math.log(x + 1);
59
59
  };
60
60
 
@@ -67,7 +67,7 @@ export var log1p = /* #__PURE__ */Math.log1p || function (x) {
67
67
  * @param {number} x
68
68
  * @returns {number} Returns the cubic root of x
69
69
  */
70
- export var cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
70
+ export var cbrt = Math.cbrt || function cbrt(x) {
71
71
  if (x === 0) {
72
72
  return x;
73
73
  }
@@ -91,7 +91,7 @@ export var cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
91
91
  * @param {number} x
92
92
  * @return {number} res
93
93
  */
94
- export var expm1 = /* #__PURE__ */Math.expm1 || function expm1(x) {
94
+ export var expm1 = Math.expm1 || function expm1(x) {
95
95
  return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;
96
96
  };
97
97
 
@@ -234,30 +234,11 @@ export function format(value, options) {
234
234
  } else if (isNaN(value)) {
235
235
  return 'NaN';
236
236
  }
237
-
238
- // default values for options
239
- var notation = 'auto';
240
- var precision;
241
- var wordSize;
242
- if (options) {
243
- // determine notation from options
244
- if (options.notation) {
245
- notation = options.notation;
246
- }
247
-
248
- // determine precision from options
249
- if (isNumber(options)) {
250
- precision = options;
251
- } else if (isNumber(options.precision)) {
252
- precision = options.precision;
253
- }
254
- if (options.wordSize) {
255
- wordSize = options.wordSize;
256
- if (typeof wordSize !== 'number') {
257
- throw new Error('Option "wordSize" must be a number');
258
- }
259
- }
260
- }
237
+ var {
238
+ notation,
239
+ precision,
240
+ wordSize
241
+ } = normalizeFormatOptions(options);
261
242
 
262
243
  // handle the various notations
263
244
  switch (notation) {
@@ -275,7 +256,7 @@ export function format(value, options) {
275
256
  return formatNumberToBase(value, 16, wordSize);
276
257
  case 'auto':
277
258
  // remove trailing zeros after the decimal point
278
- return toPrecision(value, precision, options && options).replace(/((\.\d*?)(0+))($|e)/, function () {
259
+ return toPrecision(value, precision, options).replace(/((\.\d*?)(0+))($|e)/, function () {
279
260
  var digits = arguments[2];
280
261
  var e = arguments[4];
281
262
  return digits !== '.' ? digits + e : e;
@@ -285,6 +266,49 @@ export function format(value, options) {
285
266
  }
286
267
  }
287
268
 
269
+ /**
270
+ * Normalize format options into an object:
271
+ * {
272
+ * notation: string,
273
+ * precision: number | undefined,
274
+ * wordSize: number | undefined
275
+ * }
276
+ */
277
+ export function normalizeFormatOptions(options) {
278
+ // default values for options
279
+ var notation = 'auto';
280
+ var precision;
281
+ var wordSize;
282
+ if (options !== undefined) {
283
+ if (isNumber(options)) {
284
+ precision = options;
285
+ } else if (isBigNumber(options)) {
286
+ precision = options.toNumber();
287
+ } else if (isObject(options)) {
288
+ if (options.precision !== undefined) {
289
+ precision = _toNumberOrThrow(options.precision, () => {
290
+ throw new Error('Option "precision" must be a number or BigNumber');
291
+ });
292
+ }
293
+ if (options.wordSize !== undefined) {
294
+ wordSize = _toNumberOrThrow(options.wordSize, () => {
295
+ throw new Error('Option "wordSize" must be a number or BigNumber');
296
+ });
297
+ }
298
+ if (options.notation) {
299
+ notation = options.notation;
300
+ }
301
+ } else {
302
+ throw new Error('Unsupported type of options, number, BigNumber, or object expected');
303
+ }
304
+ }
305
+ return {
306
+ notation,
307
+ precision,
308
+ wordSize
309
+ };
310
+ }
311
+
288
312
  /**
289
313
  * Split a number into sign, coefficients, and exponent
290
314
  * @param {number | string} value
@@ -448,8 +472,8 @@ export function toPrecision(value, precision, options) {
448
472
  }
449
473
 
450
474
  // determine lower and upper bound for exponential notation.
451
- var lowerExp = options && options.lowerExp !== undefined ? options.lowerExp : -3;
452
- var upperExp = options && options.upperExp !== undefined ? options.upperExp : 5;
475
+ var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
476
+ var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
453
477
  var split = splitNumber(value);
454
478
  var rounded = precision ? roundDigits(split, precision) : split;
455
479
  if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {
@@ -654,4 +678,22 @@ export function copysign(x, y) {
654
678
  var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;
655
679
  var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;
656
680
  return signx ^ signy ? -x : x;
681
+ }
682
+ function _toNumberOrThrow(value, onError) {
683
+ if (isNumber(value)) {
684
+ return value;
685
+ } else if (isBigNumber(value)) {
686
+ return value.toNumber();
687
+ } else {
688
+ onError();
689
+ }
690
+ }
691
+ function _toNumberOrDefault(value, defaultValue) {
692
+ if (isNumber(value)) {
693
+ return value;
694
+ } else if (isBigNumber(value)) {
695
+ return value.toNumber();
696
+ } else {
697
+ return defaultValue;
698
+ }
657
699
  }
@@ -1,3 +1,3 @@
1
- export var version = '12.2.1';
1
+ export var version = '12.3.1';
2
2
  // Note: This file is automatically generated when building math.js.
3
3
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "12.2.1",
3
+ "version": "12.3.1",
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",
@@ -25,7 +25,7 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.23.6",
28
+ "@babel/runtime": "^7.23.9",
29
29
  "complex.js": "^2.1.1",
30
30
  "decimal.js": "^10.4.3",
31
31
  "escape-latex": "^1.2.0",
@@ -36,21 +36,21 @@
36
36
  "typed-function": "^4.1.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.23.6",
39
+ "@babel/core": "7.23.9",
40
40
  "@babel/plugin-transform-object-assign": "7.23.3",
41
- "@babel/plugin-transform-runtime": "7.23.6",
42
- "@babel/preset-env": "7.23.6",
43
- "@babel/register": "7.22.15",
41
+ "@babel/plugin-transform-runtime": "7.23.9",
42
+ "@babel/preset-env": "7.23.9",
43
+ "@babel/register": "7.23.7",
44
44
  "@types/assert": "1.5.10",
45
45
  "@types/mocha": "10.0.6",
46
- "@typescript-eslint/eslint-plugin": "6.15.0",
47
- "@typescript-eslint/parser": "6.15.0",
46
+ "@typescript-eslint/eslint-plugin": "6.20.0",
47
+ "@typescript-eslint/parser": "6.20.0",
48
48
  "assert": "2.1.0",
49
49
  "babel-loader": "9.1.3",
50
50
  "benchmark": "2.1.4",
51
- "c8": "8.0.1",
51
+ "c8": "9.1.0",
52
52
  "codecov": "3.8.3",
53
- "core-js": "3.34.0",
53
+ "core-js": "3.35.1",
54
54
  "del": "6.1.1",
55
55
  "dtslint": "4.2.1",
56
56
  "eslint": "8.56.0",
@@ -58,8 +58,8 @@
58
58
  "eslint-config-standard": "17.1.0",
59
59
  "eslint-plugin-import": "2.29.1",
60
60
  "eslint-plugin-mocha": "10.2.0",
61
- "eslint-plugin-n": "16.5.0",
62
- "eslint-plugin-prettier": "5.1.0",
61
+ "eslint-plugin-n": "16.6.2",
62
+ "eslint-plugin-prettier": "5.1.3",
63
63
  "eslint-plugin-promise": "6.1.1",
64
64
  "expect-type": "0.17.3",
65
65
  "expr-eval": "2.0.2",
@@ -85,12 +85,12 @@
85
85
  "ndarray-pack": "1.2.1",
86
86
  "numericjs": "1.2.6",
87
87
  "pad-right": "0.2.2",
88
- "prettier": "3.1.1",
88
+ "prettier": "3.2.4",
89
89
  "process": "0.11.10",
90
90
  "sylvester": "0.0.21",
91
91
  "ts-node": "10.9.2",
92
92
  "typescript": "5.3.3",
93
- "webpack": "5.89.0",
93
+ "webpack": "5.90.0",
94
94
  "zeros": "1.0.0"
95
95
  },
96
96
  "type": "module",
package/types/index.d.ts CHANGED
@@ -183,11 +183,11 @@ export interface ArrayNode<TItems extends MathNode[] = MathNode[]>
183
183
  extends MathNode {
184
184
  type: 'ArrayNode'
185
185
  isArrayNode: true
186
- items: TItems
186
+ items: [...TItems]
187
187
  }
188
188
  export interface ArrayNodeCtor {
189
189
  new <TItems extends MathNode[] = MathNode[]>(
190
- items: MathNode[]
190
+ items: [...TItems]
191
191
  ): ArrayNode<TItems>
192
192
  }
193
193
 
@@ -283,12 +283,12 @@ export interface FunctionNode<
283
283
  type: 'FunctionNode'
284
284
  isFunctionNode: true
285
285
  fn: TFn
286
- args: TArgs
286
+ args: [...TArgs]
287
287
  }
288
288
  export interface FunctionNodeCtor {
289
289
  new <TFn = SymbolNode, TArgs extends MathNode[] = MathNode[]>(
290
290
  fn: TFn,
291
- args: TArgs
291
+ args: [...TArgs]
292
292
  ): FunctionNode<TFn, TArgs>
293
293
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
294
294
  onUndefinedFunction: (name: string) => any
@@ -298,13 +298,13 @@ export interface IndexNode<TDims extends MathNode[] = MathNode[]>
298
298
  extends MathNode {
299
299
  type: 'IndexNode'
300
300
  isIndexNode: true
301
- dimensions: TDims
301
+ dimensions: [...TDims]
302
302
  dotNotation: boolean
303
303
  }
304
304
  export interface IndexNodeCtor {
305
- new <TDims extends MathNode[] = MathNode[]>(dimensions: TDims): IndexNode
305
+ new <TDims extends MathNode[] = MathNode[]>(dimensions: [...TDims]): IndexNode
306
306
  new <TDims extends MathNode[] = MathNode[]>(
307
- dimensions: TDims,
307
+ dimensions: [...TDims],
308
308
  dotNotation: boolean
309
309
  ): IndexNode<TDims>
310
310
  }
@@ -367,7 +367,7 @@ export interface OperatorNode<
367
367
  isOperatorNode: true
368
368
  op: TOp
369
369
  fn: TFn
370
- args: TArgs
370
+ args: [...TArgs]
371
371
  implicit: boolean
372
372
  isUnary(): boolean
373
373
  isBinary(): boolean
@@ -381,7 +381,7 @@ export interface OperatorNodeCtor extends MathNode {
381
381
  >(
382
382
  op: TOp,
383
383
  fn: TFn,
384
- args: TArgs,
384
+ args: [...TArgs],
385
385
  implicit?: boolean
386
386
  ): OperatorNode<TOp, TFn, TArgs>
387
387
  }
@@ -423,12 +423,12 @@ export interface RelationalNode<TParams extends MathNode[] = MathNode[]>
423
423
  type: 'RelationalNode'
424
424
  isRelationalNode: true
425
425
  conditionals: string[]
426
- params: TParams
426
+ params: [...TParams]
427
427
  }
428
428
  export interface RelationalNodeCtor {
429
429
  new <TParams extends MathNode[] = MathNode[]>(
430
430
  conditionals: string[],
431
- params: TParams
431
+ params: [...TParams]
432
432
  ): RelationalNode<TParams>
433
433
  }
434
434
 
@@ -1200,7 +1200,8 @@ export interface MathJsInstance extends MathJsFactory {
1200
1200
  * whole matrix.
1201
1201
  * @returns Returns the hypothenuse of the input values.
1202
1202
  */
1203
- hypot<T extends (number | BigNumber)[]>(...args: T[]): T
1203
+ hypot<T extends number | BigNumber>(...args: T[]): T
1204
+ hypot<T extends number | BigNumber>(args: T[]): T
1204
1205
 
1205
1206
  /**
1206
1207
  * Calculate the least common multiple for two or more values or arrays.
@@ -3012,7 +3013,7 @@ export interface MathJsInstance extends MathJsFactory {
3012
3013
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3013
3014
  value: any,
3014
3015
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3015
- options?: FormatOptions | number | ((item: any) => string),
3016
+ options?: FormatOptions | number | BigNumber | ((item: any) => string),
3016
3017
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3017
3018
  callback?: (value: any) => string
3018
3019
  ): string
@@ -3860,8 +3861,10 @@ export interface Matrix {
3860
3861
  ): void
3861
3862
  toArray(): MathArray
3862
3863
  valueOf(): MathArray
3863
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3864
- format(options?: FormatOptions | number | ((value: any) => string)): string
3864
+ format(
3865
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3866
+ options?: FormatOptions | number | BigNumber | ((value: any) => string)
3867
+ ): string
3865
3868
  toString(): string
3866
3869
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3867
3870
  toJSON(): any
@@ -4252,19 +4255,19 @@ export interface FormatOptions {
4252
4255
  * case of notation 'fixed', precision defines the number of significant
4253
4256
  * digits after the decimal point, and is 0 by default.
4254
4257
  */
4255
- precision?: number
4258
+ precision?: number | BigNumber
4256
4259
 
4257
4260
  /**
4258
4261
  * Exponent determining the lower boundary for formatting a value with
4259
4262
  * an exponent when notation='auto. Default value is -3.
4260
4263
  */
4261
- lowerExp?: number
4264
+ lowerExp?: number | BigNumber
4262
4265
 
4263
4266
  /**
4264
4267
  * Exponent determining the upper boundary for formatting a value with
4265
4268
  * an exponent when notation='auto. Default value is 5.
4266
4269
  */
4267
- upperExp?: number
4270
+ upperExp?: number | BigNumber
4268
4271
 
4269
4272
  /**
4270
4273
  * Available values: 'ratio' (default) or 'decimal'. For example
@@ -4272,6 +4275,15 @@ export interface FormatOptions {
4272
4275
  * and will output 0.(3) when 'decimal' is configured.
4273
4276
  */
4274
4277
  fraction?: string
4278
+
4279
+ /**
4280
+ * The word size in bits to use for formatting in binary, octal, or
4281
+ * hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`
4282
+ * values for `notation` option. When this option is defined the value
4283
+ * is formatted as a signed twos complement integer of the given word
4284
+ * size and the size suffix is appended to the output.
4285
+ */
4286
+ wordSize?: number | BigNumber
4275
4287
  }
4276
4288
 
4277
4289
  export interface Help {