mathjs 11.3.3 → 11.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.
Files changed (57) hide show
  1. package/HISTORY.md +25 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/entry/dependenciesAny/dependenciesLyap.generated.js +26 -0
  6. package/lib/cjs/entry/dependenciesAny/dependenciesPolynomialRoot.generated.js +42 -0
  7. package/lib/cjs/entry/dependenciesAny/dependenciesSchur.generated.js +30 -0
  8. package/lib/cjs/entry/dependenciesAny/dependenciesSylvester.generated.js +46 -0
  9. package/lib/cjs/entry/dependenciesAny.generated.js +28 -0
  10. package/lib/cjs/entry/impureFunctionsAny.generated.js +21 -17
  11. package/lib/cjs/entry/pureFunctionsAny.generated.js +100 -48
  12. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -0
  13. package/lib/cjs/expression/embeddedDocs/function/algebra/polynomialRoot.js +15 -0
  14. package/lib/cjs/expression/embeddedDocs/function/matrix/lyap.js +15 -0
  15. package/lib/cjs/expression/embeddedDocs/function/matrix/reshape.js +1 -1
  16. package/lib/cjs/expression/embeddedDocs/function/matrix/schur.js +15 -0
  17. package/lib/cjs/expression/embeddedDocs/function/matrix/sylvester.js +15 -0
  18. package/lib/cjs/factoriesAny.js +28 -0
  19. package/lib/cjs/function/algebra/decomposition/schur.js +75 -0
  20. package/lib/cjs/function/algebra/lyap.js +57 -0
  21. package/lib/cjs/function/algebra/polynomialRoot.js +139 -0
  22. package/lib/cjs/function/algebra/simplify/wildcards.js +38 -0
  23. package/lib/cjs/function/algebra/simplify.js +161 -48
  24. package/lib/cjs/function/algebra/simplifyConstant.js +29 -12
  25. package/lib/cjs/function/algebra/sylvester.js +127 -0
  26. package/lib/cjs/function/matrix/forEach.js +1 -1
  27. package/lib/cjs/function/matrix/reshape.js +1 -1
  28. package/lib/cjs/function/string/format.js +24 -24
  29. package/lib/cjs/header.js +2 -2
  30. package/lib/cjs/version.js +1 -1
  31. package/lib/esm/entry/dependenciesAny/dependenciesLyap.generated.js +18 -0
  32. package/lib/esm/entry/dependenciesAny/dependenciesPolynomialRoot.generated.js +34 -0
  33. package/lib/esm/entry/dependenciesAny/dependenciesSchur.generated.js +22 -0
  34. package/lib/esm/entry/dependenciesAny/dependenciesSylvester.generated.js +38 -0
  35. package/lib/esm/entry/dependenciesAny.generated.js +4 -0
  36. package/lib/esm/entry/impureFunctionsAny.generated.js +22 -18
  37. package/lib/esm/entry/pureFunctionsAny.generated.js +87 -39
  38. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +8 -0
  39. package/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js +8 -0
  40. package/lib/esm/expression/embeddedDocs/function/matrix/lyap.js +8 -0
  41. package/lib/esm/expression/embeddedDocs/function/matrix/reshape.js +1 -1
  42. package/lib/esm/expression/embeddedDocs/function/matrix/schur.js +8 -0
  43. package/lib/esm/expression/embeddedDocs/function/matrix/sylvester.js +8 -0
  44. package/lib/esm/factoriesAny.js +4 -0
  45. package/lib/esm/function/algebra/decomposition/schur.js +70 -0
  46. package/lib/esm/function/algebra/lyap.js +52 -0
  47. package/lib/esm/function/algebra/polynomialRoot.js +122 -0
  48. package/lib/esm/function/algebra/simplify/wildcards.js +20 -0
  49. package/lib/esm/function/algebra/simplify.js +162 -49
  50. package/lib/esm/function/algebra/simplifyConstant.js +29 -12
  51. package/lib/esm/function/algebra/sylvester.js +118 -0
  52. package/lib/esm/function/matrix/forEach.js +1 -1
  53. package/lib/esm/function/matrix/reshape.js +1 -1
  54. package/lib/esm/function/string/format.js +24 -24
  55. package/lib/esm/version.js +1 -1
  56. package/package.json +14 -14
  57. package/types/index.d.ts +88 -6
@@ -24,53 +24,53 @@ export var createFormat = /* #__PURE__ */factory(name, dependencies, _ref => {
24
24
  * An object with formatting options. Available options:
25
25
  * - `notation: string`
26
26
  * Number notation. Choose from:
27
- * - 'fixed'
27
+ * - `'fixed'`
28
28
  * Always use regular number notation.
29
- * For example '123.40' and '14000000'
30
- * - 'exponential'
29
+ * For example `'123.40'` and `'14000000'`
30
+ * - `'exponential'`
31
31
  * Always use exponential notation.
32
- * For example '1.234e+2' and '1.4e+7'
33
- * - 'engineering'
32
+ * For example `'1.234e+2'` and `'1.4e+7'`
33
+ * - `'engineering'`
34
34
  * Always use engineering notation: always have exponential notation,
35
- * and select the exponent to be a multiple of 3.
36
- * For example '123.4e+0' and '14.0e+6'
37
- * - 'auto' (default)
35
+ * and select the exponent to be a multiple of `3`.
36
+ * For example `'123.4e+0'` and `'14.0e+6'`
37
+ * - `'auto'` (default)
38
38
  * Regular number notation for numbers having an absolute value between
39
39
  * `lower` and `upper` bounds, and uses exponential notation elsewhere.
40
40
  * Lower bound is included, upper bound is excluded.
41
- * For example '123.4' and '1.4e7'.
42
- * - 'bin', 'oct, or 'hex'
41
+ * For example `'123.4'` and `'1.4e7'`.
42
+ * - `'bin'`, `'oct'`, or `'hex'`
43
43
  * Format the number using binary, octal, or hexadecimal notation.
44
- * For example '0b1101' and '0x10fe'.
44
+ * For example `'0b1101'` and `'0x10fe'`.
45
45
  * - `wordSize: number`
46
46
  * The word size in bits to use for formatting in binary, octal, or
47
- * hexadecimal notation. To be used only with 'bin', 'oct', or 'hex'
48
- * values for 'notation' option. When this option is defined the value
47
+ * hexadecimal notation. To be used only with `'bin'`, `'oct'`, or `'hex'`
48
+ * values for `notation` option. When this option is defined the value
49
49
  * is formatted as a signed twos complement integer of the given word
50
50
  * size and the size suffix is appended to the output.
51
- * For example format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'.
51
+ * For example `format(-1, {notation: 'hex', wordSize: 8}) === '0xffi8'`.
52
52
  * Default value is undefined.
53
53
  * - `precision: number`
54
54
  * Limit the number of digits of the formatted value.
55
- * For regular numbers, must be a number between 0 and 16.
55
+ * For regular numbers, must be a number between `0` and `16`.
56
56
  * For bignumbers, the maximum depends on the configured precision,
57
57
  * see function `config()`.
58
- * In case of notations 'exponential', 'engineering', and 'auto', `precision`
59
- * defines the total number of significant digits returned.
60
- * In case of notation 'fixed', `precision` defines the number of
58
+ * In case of notations `'exponential'`, `'engineering'`, and `'auto'`,
59
+ * `precision` defines the total number of significant digits returned.
60
+ * In case of notation `'fixed'`, `precision` defines the number of
61
61
  * significant digits after the decimal point.
62
62
  * `precision` is undefined by default.
63
63
  * - `lowerExp: number`
64
64
  * Exponent determining the lower boundary for formatting a value with
65
- * an exponent when `notation='auto`. Default value is `-3`.
65
+ * an exponent when `notation='auto'`. Default value is `-3`.
66
66
  * - `upperExp: number`
67
67
  * Exponent determining the upper boundary for formatting a value with
68
- * an exponent when `notation='auto`. Default value is `5`.
69
- * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'.
70
- * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is
71
- * configured, and will output `0.(3)` when 'decimal' is configured.
68
+ * an exponent when `notation='auto'`. Default value is `5`.
69
+ * - `fraction: string`. Available values: `'ratio'` (default) or `'decimal'`.
70
+ * For example `format(fraction(1, 3))` will output `'1/3'` when `'ratio'`
71
+ * is configured, and will output `'0.(3)'` when `'decimal'` is configured.
72
72
  * - `truncate: number`. Specifies the maximum allowed length of the
73
- * returned string. If it would have been longer, the excess characters
73
+ * returned string. If it had been longer, the excess characters
74
74
  * are deleted and replaced with `'...'`.
75
75
  * - `callback: function`
76
76
  * A custom formatting function, invoked for all numeric elements in `value`,
@@ -1,3 +1,3 @@
1
- export var version = '11.3.3';
1
+ export var version = '11.5.0';
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": "11.3.3",
3
+ "version": "11.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",
@@ -25,9 +25,9 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.20.1",
28
+ "@babel/runtime": "^7.20.6",
29
29
  "complex.js": "^2.1.1",
30
- "decimal.js": "^10.4.2",
30
+ "decimal.js": "^10.4.3",
31
31
  "escape-latex": "^1.2.0",
32
32
  "fraction.js": "^4.2.0",
33
33
  "javascript-natural-sort": "^0.7.1",
@@ -36,28 +36,28 @@
36
36
  "typed-function": "^4.1.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.20.2",
39
+ "@babel/core": "7.20.5",
40
40
  "@babel/plugin-transform-object-assign": "7.18.6",
41
41
  "@babel/plugin-transform-runtime": "7.19.6",
42
42
  "@babel/preset-env": "7.20.2",
43
43
  "@babel/register": "7.18.9",
44
44
  "@types/assert": "1.5.6",
45
- "@types/mocha": "10.0.0",
46
- "@typescript-eslint/eslint-plugin": "5.42.0",
47
- "@typescript-eslint/parser": "5.42.0",
45
+ "@types/mocha": "10.0.1",
46
+ "@typescript-eslint/eslint-plugin": "5.45.0",
47
+ "@typescript-eslint/parser": "5.45.0",
48
48
  "assert": "2.0.0",
49
49
  "babel-loader": "9.1.0",
50
50
  "benchmark": "2.1.4",
51
51
  "codecov": "3.8.3",
52
- "core-js": "3.26.0",
52
+ "core-js": "3.26.1",
53
53
  "del": "6.1.1",
54
54
  "dtslint": "4.2.1",
55
- "eslint": "8.27.0",
55
+ "eslint": "8.29.0",
56
56
  "eslint-config-prettier": "8.5.0",
57
57
  "eslint-config-standard": "17.0.0",
58
58
  "eslint-plugin-import": "2.26.0",
59
59
  "eslint-plugin-mocha": "10.1.0",
60
- "eslint-plugin-n": "15.5.0",
60
+ "eslint-plugin-n": "15.6.0",
61
61
  "eslint-plugin-prettier": "4.2.1",
62
62
  "eslint-plugin-promise": "6.1.1",
63
63
  "expect-type": "0.15.0",
@@ -78,7 +78,7 @@
78
78
  "math-expression-evaluator": "1.4.0",
79
79
  "mkdirp": "1.0.4",
80
80
  "mocha": "10.1.0",
81
- "mocha-junit-reporter": "2.1.1",
81
+ "mocha-junit-reporter": "2.2.0",
82
82
  "ndarray": "1.0.19",
83
83
  "ndarray-determinant": "1.0.0",
84
84
  "ndarray-gemm": "1.0.0",
@@ -87,12 +87,12 @@
87
87
  "numericjs": "1.2.6",
88
88
  "nyc": "15.1.0",
89
89
  "pad-right": "0.2.2",
90
- "prettier": "2.7.1",
90
+ "prettier": "2.8.0",
91
91
  "process": "0.11.10",
92
92
  "sylvester": "0.0.21",
93
93
  "ts-node": "10.9.1",
94
- "typescript": "4.8.4",
95
- "webpack": "5.74.0",
94
+ "typescript": "4.9.3",
95
+ "webpack": "5.75.0",
96
96
  "zeros": "1.0.0"
97
97
  },
98
98
  "type": "module",
package/types/index.d.ts CHANGED
@@ -465,6 +465,11 @@ declare namespace math {
465
465
  R: MathCollection
466
466
  }
467
467
 
468
+ interface SchurDecomposition {
469
+ U: MathCollection
470
+ T: MathCollection
471
+ }
472
+
468
473
  interface FractionDefinition {
469
474
  a: number
470
475
  b: number
@@ -894,6 +899,22 @@ declare namespace math {
894
899
  threshold?: number
895
900
  ): MathArray
896
901
 
902
+ /* Finds the roots of a polynomial of degree three or less. Coefficients are given constant first
903
+ * followed by linear and higher powers in order; coefficients beyond the degree of the polynomial
904
+ * need not be specified.
905
+ * @param {number|Complex} constantCoeff
906
+ * @param {number|Complex} linearCoeff
907
+ * @param {number|Complex} quadraticCoeff
908
+ * @param {number|Complex} cubicCoeff
909
+ * @returns {Array<number|Complex>} array of roots of specified polynomial
910
+ */
911
+ polynomialRoot(
912
+ constantCoeff: number | Complex,
913
+ linearCoeff: number | Complex,
914
+ quadraticCoeff?: number | Complex,
915
+ cubicCoeff?: number | Complex
916
+ ): (number | Complex)[]
917
+
897
918
  /**
898
919
  * Calculate the Matrix QR decomposition. Matrix A is decomposed in two
899
920
  * matrices (Q, R) where Q is an orthogonal matrix and R is an upper
@@ -1276,9 +1297,13 @@ declare namespace math {
1276
1297
  multiply<T extends Matrix>(x: T, y: MathType): Matrix
1277
1298
  multiply<T extends Matrix>(x: MathType, y: T): Matrix
1278
1299
 
1300
+ multiply<T extends MathNumericType[]>(x: T, y: T[]): T
1301
+ multiply<T extends MathNumericType[]>(x: T[], y: T): T
1302
+
1303
+ multiply<T extends MathArray>(x: T, y: T): T
1304
+
1279
1305
  multiply(x: Unit, y: Unit): Unit
1280
1306
  multiply(x: number, y: number): number
1281
- multiply(x: MathArray, y: MathArray): MathArray
1282
1307
  multiply(x: MathType, y: MathType): MathType
1283
1308
 
1284
1309
  /**
@@ -1807,6 +1832,41 @@ declare namespace math {
1807
1832
  */
1808
1833
  expm(x: Matrix): Matrix
1809
1834
 
1835
+ /**
1836
+ * Solves the real-valued Sylvester equation AX-XB=C for X, where A, B and C are
1837
+ * matrices of appropriate dimensions, being A and B squared. The method used is
1838
+ * the Bartels-Stewart algorithm.
1839
+ * https://en.wikipedia.org/wiki/Sylvester_equation
1840
+ * @param A Matrix A
1841
+ * @param B Matrix B
1842
+ * @param C Matrix C
1843
+ * @returns Matrix X, solving the Sylvester equation
1844
+ */
1845
+ sylvester(
1846
+ A: Matrix | MathArray,
1847
+ B: Matrix | MathArray,
1848
+ C: Matrix | MathArray
1849
+ ): Matrix | MathArray
1850
+
1851
+ /**
1852
+ * Performs a real Schur decomposition of the real matrix A = UTU' where U is orthogonal
1853
+ * and T is upper quasi-triangular.
1854
+ * https://en.wikipedia.org/wiki/Schur_decomposition
1855
+ * @param A Matrix A
1856
+ * @returns Object containing both matrix U and T of the Schur Decomposition A=UTU'
1857
+ */
1858
+ schur(A: Matrix | MathArray): SchurDecomposition
1859
+
1860
+ /**
1861
+ * Solves the Continuous-time Lyapunov equation AP+PA'=Q for P, where Q is a positive semidefinite
1862
+ * matrix.
1863
+ * https://en.wikipedia.org/wiki/Lyapunov_equation
1864
+ * @param A Matrix A
1865
+ * @param Q Matrix Q
1866
+ * @returns Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q
1867
+ */
1868
+ lyap(A: Matrix | MathArray, Q: Matrix | MathArray): Matrix | MathArray
1869
+
1810
1870
  /**
1811
1871
  * Create a 2-dimensional identity matrix with size m x n or n x n. The
1812
1872
  * matrix has ones on the diagonal and zeros elsewhere.
@@ -3572,6 +3632,9 @@ declare namespace math {
3572
3632
  invDependencies: FactoryFunctionMap
3573
3633
  expmDependencies: FactoryFunctionMap
3574
3634
  sqrtmDependencies: FactoryFunctionMap
3635
+ sylvesterDependencies: FactoryFunctionMap
3636
+ schurDependencies: FactoryFunctionMap
3637
+ lyapDependencies: FactoryFunctionMap
3575
3638
  divideDependencies: FactoryFunctionMap
3576
3639
  distanceDependencies: FactoryFunctionMap
3577
3640
  intersectDependencies: FactoryFunctionMap
@@ -3977,8 +4040,8 @@ declare namespace math {
3977
4040
  */
3978
4041
  forEach(
3979
4042
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3980
- callback: (node: MathNode, path: string, parent: MathNode) => any
3981
- ): MathNode[]
4043
+ callback: (node: MathNode, path: string, parent: MathNode) => void
4044
+ ): void
3982
4045
 
3983
4046
  /**
3984
4047
  * Transform a node. Creates a new MathNode having it’s child's be the
@@ -4071,8 +4134,7 @@ declare namespace math {
4071
4134
  */
4072
4135
  traverse(
4073
4136
  callback: (node: MathNode, path: string, parent: MathNode) => void
4074
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4075
- ): any
4137
+ ): void
4076
4138
  }
4077
4139
 
4078
4140
  interface Parser {
@@ -5273,6 +5335,26 @@ declare namespace math {
5273
5335
 
5274
5336
  expm(this: MathJsChain<Matrix>): MathJsChain<Matrix>
5275
5337
 
5338
+ /**
5339
+ * Performs a real Schur decomposition of the real matrix A = UTU' where U is orthogonal
5340
+ * and T is upper quasi-triangular.
5341
+ * https://en.wikipedia.org/wiki/Schur_decomposition
5342
+ * @returns Object containing both matrix U and T of the Schur Decomposition A=UTU'
5343
+ */
5344
+ schur(this: MathJsChain<Matrix | MathArray>): SchurDecomposition
5345
+
5346
+ /**
5347
+ * Solves the Continuous-time Lyapunov equation AP+PA'=Q for P, where Q is a positive semidefinite
5348
+ * matrix.
5349
+ * https://en.wikipedia.org/wiki/Lyapunov_equation
5350
+ * @param Q Matrix Q
5351
+ * @returns Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q
5352
+ */
5353
+ lyap(
5354
+ this: MathJsChain<Matrix | MathArray>,
5355
+ Q: Matrix | MathArray
5356
+ ): MathJsChain<Matrix | MathArray>
5357
+
5276
5358
  /**
5277
5359
  * Create a 2-dimensional identity matrix with size m x n or n x n. The
5278
5360
  * matrix has ones on the diagonal and zeros elsewhere.
@@ -5323,7 +5405,7 @@ declare namespace math {
5323
5405
  this: MathJsChain<T>,
5324
5406
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5325
5407
  callback: (value: any, index: any, matrix: T) => void
5326
- ): MathJsChain<T>
5408
+ ): void
5327
5409
 
5328
5410
  /**
5329
5411
  * Calculate the inverse of a square matrix.