mathjs 9.5.1 → 10.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/HISTORY.md +37 -0
  2. package/bin/cli.js +0 -0
  3. package/docs/reference/constants.md +1 -1
  4. package/docs/reference/functions/parser.md +4 -4
  5. package/examples/expressions.js +1 -1
  6. package/lib/browser/math.js +6 -6
  7. package/lib/browser/math.js.map +1 -1
  8. package/lib/cjs/constants.js +1 -1
  9. package/lib/cjs/core/function/config.js +1 -1
  10. package/lib/cjs/core/function/import.js +2 -1
  11. package/lib/cjs/entry/dependenciesAny/dependenciesIntersect.generated.js +6 -0
  12. package/lib/cjs/entry/dependenciesAny.generated.js +999 -999
  13. package/lib/cjs/entry/dependenciesNumber.generated.js +581 -581
  14. package/lib/cjs/entry/impureFunctionsAny.generated.js +314 -313
  15. package/lib/cjs/entry/impureFunctionsNumber.generated.js +223 -222
  16. package/lib/cjs/entry/mainAny.js +8 -8
  17. package/lib/cjs/entry/mainNumber.js +8 -8
  18. package/lib/cjs/entry/pureFunctionsAny.generated.js +1102 -1100
  19. package/lib/cjs/entry/pureFunctionsNumber.generated.js +375 -375
  20. package/lib/cjs/entry/typeChecks.js +12 -12
  21. package/lib/cjs/expression/Parser.js +1 -1
  22. package/lib/cjs/expression/function/parser.js +4 -4
  23. package/lib/cjs/expression/operators.js +1 -1
  24. package/lib/cjs/factoriesAny.js +660 -660
  25. package/lib/cjs/factoriesNumber.js +268 -237
  26. package/lib/cjs/function/algebra/simplify.js +3 -0
  27. package/lib/cjs/function/arithmetic/round.js +2 -2
  28. package/lib/cjs/function/geometry/intersect.js +12 -13
  29. package/lib/cjs/function/probability/gamma.js +28 -30
  30. package/lib/cjs/header.js +2 -2
  31. package/lib/cjs/plain/bignumber/arithmetic.js +2 -2
  32. package/lib/cjs/plain/number/arithmetic.js +10 -10
  33. package/lib/cjs/plain/number/constants.js +1 -1
  34. package/lib/cjs/plain/number/logical.js +1 -1
  35. package/lib/cjs/plain/number/probability.js +2 -1
  36. package/lib/cjs/plain/number/trigonometry.js +1 -1
  37. package/lib/cjs/plain/number/utils.js +1 -1
  38. package/lib/cjs/type/matrix/SparseMatrix.js +19 -15
  39. package/lib/cjs/type/unit/Unit.js +2 -2
  40. package/lib/cjs/type/unit/physicalConstants.js +1 -1
  41. package/lib/cjs/utils/array.js +14 -14
  42. package/lib/cjs/utils/bignumber/bitwise.js +1 -1
  43. package/lib/cjs/utils/customs.js +5 -5
  44. package/lib/cjs/utils/factory.js +3 -3
  45. package/lib/cjs/utils/function.js +1 -1
  46. package/lib/cjs/utils/is.js +23 -23
  47. package/lib/cjs/utils/latex.js +2 -1
  48. package/lib/cjs/utils/map.js +3 -3
  49. package/lib/cjs/utils/noop.js +1 -1
  50. package/lib/cjs/utils/number.js +11 -7
  51. package/lib/cjs/utils/object.js +8 -8
  52. package/lib/cjs/utils/snapshot.js +3 -3
  53. package/lib/cjs/utils/string.js +2 -2
  54. package/lib/cjs/version.js +1 -1
  55. package/lib/esm/core/function/import.js +2 -1
  56. package/lib/esm/entry/dependenciesAny/dependenciesIntersect.generated.js +4 -0
  57. package/lib/esm/entry/dependenciesAny.generated.js +270 -270
  58. package/lib/esm/entry/dependenciesNumber.generated.js +163 -163
  59. package/lib/esm/entry/impureFunctionsAny.generated.js +301 -301
  60. package/lib/esm/entry/impureFunctionsNumber.generated.js +211 -211
  61. package/lib/esm/entry/pureFunctionsAny.generated.js +818 -816
  62. package/lib/esm/entry/pureFunctionsNumber.generated.js +234 -234
  63. package/lib/esm/expression/Parser.js +1 -1
  64. package/lib/esm/expression/function/parser.js +4 -4
  65. package/lib/esm/function/algebra/simplify.js +3 -0
  66. package/lib/esm/function/arithmetic/round.js +2 -2
  67. package/lib/esm/function/geometry/intersect.js +12 -12
  68. package/lib/esm/function/probability/gamma.js +28 -30
  69. package/lib/esm/type/matrix/SparseMatrix.js +19 -15
  70. package/lib/esm/type/unit/Unit.js +2 -2
  71. package/lib/esm/utils/number.js +1 -1
  72. package/lib/esm/utils/snapshot.js +2 -2
  73. package/lib/esm/version.js +1 -1
  74. package/package.json +17 -17
  75. package/types/index.d.ts +47 -47
@@ -37,7 +37,7 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref =
37
37
  * // define variables and functions
38
38
  * parser.evaluate('x = 7 / 2') // 3.5
39
39
  * parser.evaluate('x + 3') // 6.5
40
- * parser.evaluate('function f(x, y) = x^y') // f(x, y)
40
+ * parser.evaluate('f(x, y) = x^y') // f(x, y)
41
41
  * parser.evaluate('f(2, 3)') // 8
42
42
  *
43
43
  * // get and set variables and functions
@@ -25,10 +25,10 @@ export var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {
25
25
  * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476
26
26
  *
27
27
  * // define variables and functions
28
- * parser.evaluate('x = 7 / 2') // 3.5
29
- * parser.evaluate('x + 3') // 6.5
30
- * parser.evaluate('function f(x, y) = x^y') // f(x, y)
31
- * parser.evaluate('f(2, 3)') // 8
28
+ * parser.evaluate('x = 7 / 2') // 3.5
29
+ * parser.evaluate('x + 3') // 6.5
30
+ * parser.evaluate('f(x, y) = x^y') // f(x, y)
31
+ * parser.evaluate('f(2, 3)') // 8
32
32
  *
33
33
  * // get and set variables and functions
34
34
  * const x = parser.get('x') // 7
@@ -365,6 +365,9 @@ export var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {
365
365
  {
366
366
  l: 'n1/(n2/n3)',
367
367
  r: '(n1*n3)/n2'
368
+ }, {
369
+ l: 'n1/(-n2)',
370
+ r: '-n1/n2'
368
371
  }];
369
372
  /**
370
373
  * Parse the string array of rules into nodes
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  import { factory } from '../../utils/factory.js';
8
8
  import { deepMap } from '../../utils/collection.js';
@@ -1,7 +1,6 @@
1
- import { isBigNumber } from '../../utils/is.js';
2
1
  import { factory } from '../../utils/factory.js';
3
2
  var name = 'intersect';
4
- var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten'];
3
+ var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten', 'isZero', 'isNumeric'];
5
4
  export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref => {
6
5
  var {
7
6
  typed,
@@ -16,7 +15,9 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
16
15
  subtract,
17
16
  smaller,
18
17
  equalScalar,
19
- flatten
18
+ flatten,
19
+ isZero,
20
+ isNumeric
20
21
  } = _ref;
21
22
 
22
23
  /**
@@ -142,21 +143,16 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
142
143
  return arr;
143
144
  }
144
145
 
145
- function _isNumeric(a) {
146
- // intersect supports numbers and bignumbers
147
- return typeof a === 'number' || isBigNumber(a);
148
- }
149
-
150
146
  function _2d(x) {
151
- return x.length === 2 && _isNumeric(x[0]) && _isNumeric(x[1]);
147
+ return x.length === 2 && isNumeric(x[0]) && isNumeric(x[1]);
152
148
  }
153
149
 
154
150
  function _3d(x) {
155
- return x.length === 3 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]);
151
+ return x.length === 3 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]);
156
152
  }
157
153
 
158
154
  function _4d(x) {
159
- return x.length === 4 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]) && _isNumeric(x[3]);
155
+ return x.length === 4 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]) && isNumeric(x[3]);
160
156
  }
161
157
 
162
158
  function _intersect2d(p1a, p1b, p2a, p2b) {
@@ -165,6 +161,7 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
165
161
  var d1 = subtract(o1, p1b);
166
162
  var d2 = subtract(o2, p2b);
167
163
  var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));
164
+ if (isZero(det)) return null;
168
165
 
169
166
  if (smaller(abs(det), config.epsilon)) {
170
167
  return null;
@@ -197,7 +194,10 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
197
194
 
198
195
  var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);
199
196
 
200
- var ta = divideScalar(subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343)), subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321)));
197
+ var numerator = subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343));
198
+ var denominator = subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321));
199
+ if (isZero(denominator)) return null;
200
+ var ta = divideScalar(numerator, denominator);
201
201
  var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);
202
202
  var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));
203
203
  var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));
@@ -41,44 +41,42 @@ export var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {
41
41
  Complex: function Complex(n) {
42
42
  if (n.im === 0) {
43
43
  return this(n.re);
44
- }
44
+ } // Lanczos approximation doesn't work well with real part lower than 0.5
45
+ // So reflection formula is required
46
+
47
+
48
+ if (n.re < 0.5) {
49
+ // Euler's reflection formula
50
+ // gamma(1-z) * gamma(z) = PI / sin(PI * z)
51
+ // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
52
+ // thanks to imperfect sin implementation sin(PI * n) != 0
53
+ // we can safely use it anyway
54
+ var _t = new _Complex(1 - n.re, -n.im);
55
+
56
+ var r = new _Complex(Math.PI * n.re, Math.PI * n.im);
57
+ return new _Complex(Math.PI).div(r.sin()).div(this(_t));
58
+ } // Lanczos approximation
59
+ // z -= 1
60
+
45
61
 
46
- n = new _Complex(n.re - 1, n.im);
47
- var x = new _Complex(gammaP[0], 0);
62
+ n = new _Complex(n.re - 1, n.im); // x = gammaPval[0]
63
+
64
+ var x = new _Complex(gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
48
65
 
49
66
  for (var i = 1; i < gammaP.length; ++i) {
50
- var real = n.re + i; // x += p[i]/(n+i)
67
+ // x += gammaPval / (z + i)
68
+ var gammaPval = new _Complex(gammaP[i], 0);
69
+ x = x.add(gammaPval.div(n.add(i)));
70
+ } // t = z + gammaG + 0.5
51
71
 
52
- var den = real * real + n.im * n.im;
53
72
 
54
- if (den !== 0) {
55
- x.re += gammaP[i] * real / den;
56
- x.im += -(gammaP[i] * n.im) / den;
57
- } else {
58
- x.re = gammaP[i] < 0 ? -Infinity : Infinity;
59
- }
60
- }
73
+ var t = new _Complex(n.re + gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
61
74
 
62
- var t = new _Complex(n.re + gammaG + 0.5, n.im);
63
75
  var twoPiSqrt = Math.sqrt(2 * Math.PI);
64
- n.re += 0.5;
65
- var result = pow(t, n);
66
-
67
- if (result.im === 0) {
68
- // sqrt(2*PI)*result
69
- result.re *= twoPiSqrt;
70
- } else if (result.re === 0) {
71
- result.im *= twoPiSqrt;
72
- } else {
73
- result.re *= twoPiSqrt;
74
- result.im *= twoPiSqrt;
75
- }
76
-
77
- var r = Math.exp(-t.re); // exp(-t)
76
+ var tpow = t.pow(n.add(0.5));
77
+ var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
78
78
 
79
- t.re = r * Math.cos(-t.im);
80
- t.im = r * Math.sin(-t.im);
81
- return multiplyScalar(multiplyScalar(result, t), x);
79
+ return x.mul(twoPiSqrt).mul(tpow).mul(expt);
82
80
  },
83
81
  BigNumber: function BigNumber(n) {
84
82
  if (n.isInteger()) {
@@ -417,23 +417,27 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
417
417
 
418
418
  if (!deepStrictEqual(iSize, sSize)) {
419
419
  throw new DimensionError(iSize, sSize, '>');
420
- } // offsets
420
+ } // insert the sub matrix
421
421
 
422
422
 
423
- var x0 = index.min()[0];
424
- var y0 = index.min()[1]; // submatrix rows and columns
425
-
426
- var m = sSize[0];
427
- var n = sSize[1]; // loop submatrix
428
-
429
- for (var x = 0; x < m; x++) {
430
- // loop columns
431
- for (var y = 0; y < n; y++) {
432
- // value at i, j
433
- var v = submatrix[x][y]; // invoke set (zero value will remove entry from matrix)
434
-
435
- matrix.set([x + x0, y + y0], v, defaultValue);
436
- }
423
+ if (iSize.length === 1) {
424
+ // if the replacement index only has 1 dimension, go trough each one and set its value
425
+ var range = index.dimension(0);
426
+ range.forEach(function (dataIndex, subIndex) {
427
+ validateIndex(dataIndex);
428
+ matrix.set([dataIndex, 0], submatrix[subIndex[0]], defaultValue);
429
+ });
430
+ } else {
431
+ // if the replacement index has 2 dimensions, go through each one and set the value in the correct index
432
+ var firstDimensionRange = index.dimension(0);
433
+ var secondDimensionRange = index.dimension(1);
434
+ firstDimensionRange.forEach(function (firstDataIndex, firstSubIndex) {
435
+ validateIndex(firstDataIndex);
436
+ secondDimensionRange.forEach(function (secondDataIndex, secondSubIndex) {
437
+ validateIndex(secondDataIndex);
438
+ matrix.set([firstDataIndex, secondDataIndex], submatrix[firstSubIndex[0]][secondSubIndex[0]], defaultValue);
439
+ });
440
+ });
437
441
  }
438
442
  }
439
443
 
@@ -1,9 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
 
4
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
 
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
 
8
8
  import { isComplex, isUnit, typeOf } from '../../utils/is.js';
9
9
  import { factory } from '../../utils/factory.js';
@@ -318,7 +318,7 @@ export function format(value, options) {
318
318
 
319
319
  export function splitNumber(value) {
320
320
  // parse the input value
321
- var match = String(value).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);
321
+ var match = String(value).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);
322
322
 
323
323
  if (!match) {
324
324
  throw new SyntaxError('Invalid number ' + value);
@@ -1,9 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
 
4
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
 
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
 
8
8
  /**
9
9
  * This file contains helper methods to create expected snapshot structures
@@ -1,2 +1,2 @@
1
- export var version = '9.5.1'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '10.0.2'; // 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.5.1",
3
+ "version": "10.0.2",
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,39 +25,39 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.15.4",
28
+ "@babel/runtime": "^7.16.5",
29
29
  "complex.js": "^2.0.15",
30
30
  "decimal.js": "^10.3.1",
31
31
  "escape-latex": "^1.2.0",
32
- "fraction.js": "^4.1.1",
32
+ "fraction.js": "^4.1.2",
33
33
  "javascript-natural-sort": "^0.7.1",
34
34
  "seedrandom": "^3.0.5",
35
35
  "tiny-emitter": "^2.1.0",
36
36
  "typed-function": "^2.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.15.5",
40
- "@babel/plugin-transform-object-assign": "7.14.5",
41
- "@babel/plugin-transform-runtime": "7.15.0",
42
- "@babel/preset-env": "7.15.6",
43
- "@babel/register": "7.15.3",
44
- "babel-loader": "8.2.2",
39
+ "@babel/core": "7.16.5",
40
+ "@babel/plugin-transform-object-assign": "7.16.5",
41
+ "@babel/plugin-transform-runtime": "7.16.5",
42
+ "@babel/preset-env": "7.16.5",
43
+ "@babel/register": "7.16.5",
44
+ "babel-loader": "8.2.3",
45
45
  "benchmark": "2.1.4",
46
46
  "codecov": "3.8.3",
47
- "core-js": "3.17.3",
47
+ "core-js": "3.20.1",
48
48
  "del": "6.0.0",
49
- "dtslint": "4.1.6",
49
+ "dtslint": "4.2.1",
50
50
  "expr-eval": "2.0.2",
51
51
  "fancy-log": "1.3.3",
52
- "glob": "7.1.7",
52
+ "glob": "7.2.0",
53
53
  "gulp": "4.0.2",
54
54
  "gulp-babel": "8.0.0",
55
55
  "handlebars": "4.7.7",
56
56
  "istanbul": "0.4.5",
57
- "jsep": "1.0.3",
58
- "karma": "6.3.4",
57
+ "jsep": "1.2.0",
58
+ "karma": "6.3.9",
59
59
  "karma-browserstack-launcher": "1.6.0",
60
- "karma-firefox-launcher": "2.1.1",
60
+ "karma-firefox-launcher": "2.1.2",
61
61
  "karma-mocha": "2.0.1",
62
62
  "karma-mocha-reporter": "2.2.5",
63
63
  "karma-webpack": "4.0.2",
@@ -72,9 +72,9 @@
72
72
  "numericjs": "1.2.6",
73
73
  "nyc": "15.1.0",
74
74
  "pad-right": "0.2.2",
75
- "standard": "16.0.3",
75
+ "standard": "16.0.4",
76
76
  "sylvester": "0.0.21",
77
- "typescript": "4.4.3",
77
+ "typescript": "4.5.4",
78
78
  "webpack": "4.46.0",
79
79
  "zeros": "1.0.0"
80
80
  },
package/types/index.d.ts CHANGED
@@ -5,10 +5,10 @@ export as namespace math;
5
5
  export = math;
6
6
 
7
7
  type NoLiteralType<T> =
8
- T extends number ? number :
9
- T extends string ? string :
10
- T extends boolean ? boolean :
11
- T;
8
+ T extends number ? number :
9
+ T extends string ? string :
10
+ T extends boolean ? boolean :
11
+ T;
12
12
 
13
13
  declare namespace math {
14
14
  type MathArray = number[] | number[][];
@@ -273,7 +273,7 @@ declare namespace math {
273
273
  interface OperatorNodeCtor {
274
274
  new(op: string, fn: string, args: MathNode[], implicit?: boolean): OperatorNode;
275
275
  }
276
-
276
+
277
277
  interface ParenthesisNode extends MathNodeCommon {
278
278
  type: 'ParenthesisNode';
279
279
  isParenthesisNode: true;
@@ -314,8 +314,8 @@ declare namespace math {
314
314
  }
315
315
 
316
316
  type MathNode = AccessorNode | ArrayNode | AssignmentNode | BlockNode | ConditionalNode | ConstantNode |
317
- FunctionAssignmentNode | FunctionNode | IndexNode | ObjectNode | OperatorNode | ParenthesisNode | RangeNode |
318
- RelationalNode | SymbolNode;
317
+ FunctionAssignmentNode | FunctionNode | IndexNode | ObjectNode | OperatorNode | ParenthesisNode | RangeNode |
318
+ RelationalNode | SymbolNode;
319
319
 
320
320
 
321
321
  type MathJsFunctionName = keyof MathJsStatic;
@@ -489,8 +489,8 @@ declare namespace math {
489
489
  * @returns Returns a fraction
490
490
  */
491
491
  fraction(
492
- numerator: number | string | MathArray | Matrix,
493
- denominator?: number | string | MathArray | Matrix
492
+ numerator: number | string | MathArray | Matrix,
493
+ denominator?: number | string | MathArray | Matrix
494
494
  ): Fraction | MathArray | Matrix;
495
495
 
496
496
  /**
@@ -693,11 +693,11 @@ declare namespace math {
693
693
  * @returns The rational polynomial of expr
694
694
  */
695
695
  rationalize(
696
- expr: MathNode | string,
697
- optional?: object | boolean,
698
- detailed?: true
696
+ expr: MathNode | string,
697
+ optional?: object | boolean,
698
+ detailed?: true
699
699
  ): { expression: MathNode | string; variables: string[]; coefficients: MathType[] };
700
-
700
+
701
701
 
702
702
  /**
703
703
  * Simplify an expression tree.
@@ -903,17 +903,17 @@ declare namespace math {
903
903
  floor(x: MathArray): MathArray;
904
904
  floor(x: Matrix): Matrix;
905
905
 
906
- /**
906
+ /**
907
907
  * Round a value towards minus infinity. For matrices, the function is
908
908
  * evaluated element wise.
909
909
  * @param x Number to be rounded
910
910
  * @param n Number of decimals Default value: 0.
911
911
  * @returns Rounded value
912
912
  */
913
- floor(
913
+ floor(
914
914
  x: number | BigNumber | Fraction | Complex | MathArray | Matrix,
915
915
  n: number | BigNumber | MathArray
916
- ): number | BigNumber | Fraction | Complex | MathArray | Matrix;
916
+ ): number | BigNumber | Fraction | Complex | MathArray | Matrix;
917
917
 
918
918
  /**
919
919
  * Calculate the greatest common divisor for two or more values or
@@ -1009,8 +1009,8 @@ declare namespace math {
1009
1009
  * @returns Returns the remainder of x divided by y
1010
1010
  */
1011
1011
  mod<T extends number | BigNumber | Fraction | MathArray | Matrix>(
1012
- x: T,
1013
- y: number | BigNumber | Fraction | MathArray | Matrix
1012
+ x: T,
1013
+ y: number | BigNumber | Fraction | MathArray | Matrix
1014
1014
  ): NoLiteralType<T>;
1015
1015
 
1016
1016
  /**
@@ -1063,8 +1063,8 @@ declare namespace math {
1063
1063
  * @returns Rounded value of x
1064
1064
  */
1065
1065
  round<T extends number | BigNumber | Fraction | Complex | MathArray | Matrix>(
1066
- x: T,
1067
- n?: number | BigNumber | MathArray
1066
+ x: T,
1067
+ n?: number | BigNumber | MathArray
1068
1068
  ): NoLiteralType<T>;
1069
1069
 
1070
1070
  /**
@@ -1378,8 +1378,8 @@ declare namespace math {
1378
1378
  * nonzero/nonempty value.
1379
1379
  */
1380
1380
  and(
1381
- x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1382
- y: number | BigNumber | Complex | Unit | MathArray | Matrix
1381
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1382
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1383
1383
  ): boolean | MathArray | Matrix;
1384
1384
 
1385
1385
  /**
@@ -1400,8 +1400,8 @@ declare namespace math {
1400
1400
  * nonzero/nonempty value.
1401
1401
  */
1402
1402
  or(
1403
- x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1404
- y: number | BigNumber | Complex | Unit | MathArray | Matrix
1403
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1404
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1405
1405
  ): boolean | MathArray | Matrix;
1406
1406
 
1407
1407
  /**
@@ -1414,8 +1414,8 @@ declare namespace math {
1414
1414
  * nonzero/nonempty value.
1415
1415
  */
1416
1416
  xor(
1417
- x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1418
- y: number | BigNumber | Complex | Unit | MathArray | Matrix
1417
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1418
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1419
1419
  ): boolean | MathArray | Matrix;
1420
1420
 
1421
1421
  /*************************************************************************
@@ -1432,7 +1432,7 @@ declare namespace math {
1432
1432
  * array or 1-d matrix as an input and return a number.
1433
1433
  * @returns The residual matrix with the function applied over some dimension.
1434
1434
  */
1435
- apply<T extends MathArray | Matrix>(array: T, dim: number, callback: (array: MathArray | Matrix) => number): T
1435
+ apply<T extends MathArray | Matrix>(array: T, dim: number, callback: (array: MathArray | Matrix) => number): T
1436
1436
 
1437
1437
 
1438
1438
  /**
@@ -1502,7 +1502,7 @@ declare namespace math {
1502
1502
  * @param prec Precision, default value: 1e-15
1503
1503
  * @returns Object containing an array of eigenvalues and a matrix with eigenvectors as columns.
1504
1504
  */
1505
- eigs(x: MathArray | Matrix, prec?:number|BigNumber): {values: MathArray | Matrix, vectors: MathArray | Matrix}
1505
+ eigs(x: MathArray | Matrix, prec?:number|BigNumber): {values: MathArray | Matrix, vectors: MathArray | Matrix}
1506
1506
 
1507
1507
  /**
1508
1508
  * Compute the matrix exponential, expm(A) = e^A. The matrix must be
@@ -1541,8 +1541,8 @@ declare namespace math {
1541
1541
  * traversed. The function must return a boolean.
1542
1542
  */
1543
1543
  filter(
1544
- x: Matrix | MathArray | string[],
1545
- test: ((value: any, index: any, matrix: Matrix | MathArray | string[]) => boolean) | RegExp
1544
+ x: Matrix | MathArray | string[],
1545
+ test: ((value: any, index: any, matrix: Matrix | MathArray | string[]) => boolean) | RegExp
1546
1546
  ): Matrix | MathArray;
1547
1547
 
1548
1548
  /**
@@ -2619,7 +2619,7 @@ declare namespace math {
2619
2619
  */
2620
2620
  clone(x: any): any;
2621
2621
 
2622
- /**
2622
+ /**
2623
2623
  * Test whether a value is an numeric value. In case of a string,
2624
2624
  * true is returned if the string contains a numeric value.
2625
2625
  * @param x Value to be tested
@@ -2627,7 +2627,7 @@ declare namespace math {
2627
2627
  * Returns false for other types.
2628
2628
  * Throws an error in case of unknown types.
2629
2629
  */
2630
- hasNumericValue(x: any ): boolean| boolean[];
2630
+ hasNumericValue(x: any ): boolean| boolean[];
2631
2631
 
2632
2632
  /**
2633
2633
  * Test whether a value is an integer number. The function supports
@@ -2732,10 +2732,10 @@ declare namespace math {
2732
2732
  interface FactoryDependencies {
2733
2733
  create: (factories: FactoryFunctionMap, config?: ConfigOptions) => MathJsStatic;
2734
2734
  factory: <T>(
2735
- name: string,
2736
- dependencies: MathJsFunctionName[],
2737
- create: (injected: Partial<MathJsStatic>) => T,
2738
- meta?: any
2735
+ name: string,
2736
+ dependencies: MathJsFunctionName[],
2737
+ create: (injected: Partial<MathJsStatic>) => T,
2738
+ meta?: any
2739
2739
  ) => FactoryFunction<T>;
2740
2740
  all: FactoryFunctionMap;
2741
2741
 
@@ -3164,15 +3164,15 @@ declare namespace math {
3164
3164
 
3165
3165
  interface Simplify {
3166
3166
  (
3167
- expr: MathNode | string,
3168
- rules?: SimplifyRule[],
3169
- scope?: object,
3170
- options?: SimplifyOptions,
3167
+ expr: MathNode | string,
3168
+ rules?: SimplifyRule[],
3169
+ scope?: object,
3170
+ options?: SimplifyOptions,
3171
3171
  ): MathNode;
3172
3172
  (
3173
- expr: MathNode | string,
3174
- scope?: object,
3175
- options?: SimplifyOptions,
3173
+ expr: MathNode | string,
3174
+ scope?: object,
3175
+ options?: SimplifyOptions,
3176
3176
  ): MathNode;
3177
3177
 
3178
3178
  rules: SimplifyRule[];
@@ -3197,8 +3197,8 @@ declare namespace math {
3197
3197
  isNode: true;
3198
3198
  comment: string;
3199
3199
  type: 'AccessorNode' | 'ArrayNode' | 'AssignmentNode' | 'BlockNode' | 'ConditionalNode' | 'ConstantNode' |
3200
- 'FunctionAssignmentNode' | 'FunctionNode' | 'IndexNode' | 'ObjectNode' | 'OperatorNode' | 'ParenthesisNode' |
3201
- 'RangeNode' | 'RelationalNode' | 'SymbolNode';
3200
+ 'FunctionAssignmentNode' | 'FunctionNode' | 'IndexNode' | 'ObjectNode' | 'OperatorNode' | 'ParenthesisNode' |
3201
+ 'RangeNode' | 'RelationalNode' | 'SymbolNode';
3202
3202
 
3203
3203
  isUpdateNode?: boolean;
3204
3204
 
@@ -3275,7 +3275,7 @@ declare namespace math {
3275
3275
  /**
3276
3276
  * Get a HTML representation of the parsed expression.
3277
3277
  */
3278
- toHtml(options?: object): string;
3278
+ toHTML(options?: object): string;
3279
3279
 
3280
3280
  /**
3281
3281
  * Get a string representation of the parsed expression. This is not
@@ -3690,7 +3690,7 @@ declare namespace math {
3690
3690
  * array or 1-d matrix as an input and return a number.
3691
3691
  * @returns The residual matrix with the function applied over some dimension.
3692
3692
  */
3693
- apply(dim: number, callback: (array: Array<MathType> | Matrix) => number): MathJsChain;
3693
+ apply(dim: number, callback: (array: Array<MathType> | Matrix) => number): MathJsChain;
3694
3694
 
3695
3695
  /**
3696
3696
  * Calculate the cubic root of a value. For matrices, the function is