mathjs 11.11.2 → 11.12.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 (89) hide show
  1. package/HISTORY.md +11 -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/core/create.js +2 -2
  6. package/lib/cjs/defaultInstance.js +2 -2
  7. package/lib/cjs/entry/allFactoriesAny.js +2 -2
  8. package/lib/cjs/entry/allFactoriesNumber.js +2 -2
  9. package/lib/cjs/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
  10. package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  11. package/lib/cjs/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
  12. package/lib/cjs/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
  13. package/lib/cjs/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
  14. package/lib/cjs/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
  15. package/lib/cjs/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
  16. package/lib/cjs/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +17 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
  19. package/lib/cjs/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
  20. package/lib/cjs/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
  21. package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
  22. package/lib/cjs/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
  23. package/lib/cjs/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +17 -0
  24. package/lib/cjs/entry/dependenciesNumber.generated.js +7 -0
  25. package/lib/cjs/entry/impureFunctionsAny.generated.js +4 -3
  26. package/lib/cjs/entry/impureFunctionsNumber.generated.js +2 -1
  27. package/lib/cjs/entry/pureFunctionsAny.generated.js +41 -37
  28. package/lib/cjs/entry/pureFunctionsNumber.generated.js +16 -13
  29. package/lib/cjs/expression/parse.js +50 -69
  30. package/lib/cjs/factoriesAny.js +7 -0
  31. package/lib/cjs/factoriesNumber.js +2 -1
  32. package/lib/cjs/function/algebra/decomposition/lup.js +3 -3
  33. package/lib/cjs/function/algebra/decomposition/qr.js +5 -5
  34. package/lib/cjs/function/algebra/solver/lsolve.js +4 -4
  35. package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -6
  36. package/lib/cjs/function/algebra/solver/usolve.js +4 -4
  37. package/lib/cjs/function/algebra/solver/usolveAll.js +6 -6
  38. package/lib/cjs/function/arithmetic/subtract.js +7 -37
  39. package/lib/cjs/function/arithmetic/subtractScalar.js +52 -0
  40. package/lib/cjs/function/combinatorics/stirlingS2.js +2 -2
  41. package/lib/cjs/function/geometry/distance.js +10 -10
  42. package/lib/cjs/function/matrix/det.js +4 -4
  43. package/lib/cjs/header.js +2 -2
  44. package/lib/cjs/type/unit/Unit.js +5 -5
  45. package/lib/cjs/utils/object.js +4 -2
  46. package/lib/cjs/utils/snapshot.js +3 -3
  47. package/lib/cjs/utils/string.js +12 -16
  48. package/lib/cjs/version.js +1 -1
  49. package/lib/esm/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
  50. package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  51. package/lib/esm/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
  52. package/lib/esm/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
  53. package/lib/esm/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
  54. package/lib/esm/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
  55. package/lib/esm/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
  56. package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
  57. package/lib/esm/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +10 -0
  58. package/lib/esm/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
  59. package/lib/esm/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
  60. package/lib/esm/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
  61. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  62. package/lib/esm/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
  63. package/lib/esm/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +10 -0
  64. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  65. package/lib/esm/entry/impureFunctionsAny.generated.js +5 -4
  66. package/lib/esm/entry/impureFunctionsNumber.generated.js +3 -2
  67. package/lib/esm/entry/pureFunctionsAny.generated.js +40 -37
  68. package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -13
  69. package/lib/esm/expression/parse.js +50 -69
  70. package/lib/esm/factoriesAny.js +1 -0
  71. package/lib/esm/factoriesNumber.js +1 -0
  72. package/lib/esm/function/algebra/decomposition/lup.js +3 -3
  73. package/lib/esm/function/algebra/decomposition/qr.js +5 -5
  74. package/lib/esm/function/algebra/solver/lsolve.js +4 -4
  75. package/lib/esm/function/algebra/solver/lsolveAll.js +6 -6
  76. package/lib/esm/function/algebra/solver/usolve.js +4 -4
  77. package/lib/esm/function/algebra/solver/usolveAll.js +6 -6
  78. package/lib/esm/function/arithmetic/subtract.js +7 -27
  79. package/lib/esm/function/arithmetic/subtractScalar.js +46 -0
  80. package/lib/esm/function/combinatorics/stirlingS2.js +2 -2
  81. package/lib/esm/function/geometry/distance.js +10 -10
  82. package/lib/esm/function/matrix/det.js +4 -4
  83. package/lib/esm/type/unit/Unit.js +5 -5
  84. package/lib/esm/utils/object.js +5 -3
  85. package/lib/esm/utils/snapshot.js +1 -1
  86. package/lib/esm/utils/string.js +12 -16
  87. package/lib/esm/version.js +1 -1
  88. package/package.json +13 -13
  89. package/types/index.d.ts +31 -0
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import { factory } from '../../../utils/factory.js';
3
3
  var name = 'qr';
4
- var dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtract', 'complex'];
4
+ var dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'complex'];
5
5
  export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
@@ -17,7 +17,7 @@ export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
17
17
  addScalar,
18
18
  divideScalar,
19
19
  multiplyScalar,
20
- subtract,
20
+ subtractScalar,
21
21
  complex
22
22
  } = _ref;
23
23
  /**
@@ -132,7 +132,7 @@ export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
132
132
  var alpha = multiplyScalar(sgn, sqrt(alphaSquared));
133
133
  if (!isZero(alpha)) {
134
134
  // first element in vector u
135
- var u1 = subtract(pivot, alpha);
135
+ var u1 = subtractScalar(pivot, alpha);
136
136
 
137
137
  // w = v * u1 / |u| (only elements k to (rows-1) are used)
138
138
  w[k] = 1;
@@ -167,7 +167,7 @@ export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
167
167
  // calculate the jth element of [tau * transpose(w) * R]
168
168
  s = multiplyScalar(s, tau);
169
169
  for (i = k; i < rows; i++) {
170
- Rdata[i][j] = multiplyScalar(subtract(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);
170
+ Rdata[i][j] = multiplyScalar(subtractScalar(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);
171
171
  }
172
172
  }
173
173
  /*
@@ -188,7 +188,7 @@ export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
188
188
  // calculate the ith element of [tau * Q * w]
189
189
  s = multiplyScalar(s, tau);
190
190
  for (j = k; j < rows; ++j) {
191
- Qdata[i][j] = divideScalar(subtract(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);
191
+ Qdata[i][j] = divideScalar(subtractScalar(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);
192
192
  }
193
193
  }
194
194
  }
@@ -1,14 +1,14 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { createSolveValidation } from './utils/solveValidation.js';
3
3
  var name = 'lsolve';
4
- var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];
4
+ var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];
5
5
  export var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  matrix,
9
9
  divideScalar,
10
10
  multiplyScalar,
11
- subtract,
11
+ subtractScalar,
12
12
  equalScalar,
13
13
  DenseMatrix
14
14
  } = _ref;
@@ -79,7 +79,7 @@ export var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
79
79
 
80
80
  // loop rows
81
81
  for (var i = j + 1; i < rows; i++) {
82
- bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
82
+ bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
83
83
  }
84
84
  } else {
85
85
  // degenerate row, we can choose any value
@@ -141,7 +141,7 @@ export var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
141
141
  var xj = divideScalar(bj, vjj);
142
142
  for (var _k = 0, l = jIndices.length; _k < l; _k++) {
143
143
  var _i = jIndices[_k];
144
- bdata[_i] = [subtract(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];
144
+ bdata[_i] = [subtractScalar(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];
145
145
  }
146
146
  x[j] = [xj];
147
147
  } else {
@@ -1,14 +1,14 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { createSolveValidation } from './utils/solveValidation.js';
3
3
  var name = 'lsolveAll';
4
- var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];
4
+ var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];
5
5
  export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  matrix,
9
9
  divideScalar,
10
10
  multiplyScalar,
11
- subtract,
11
+ subtractScalar,
12
12
  equalScalar,
13
13
  DenseMatrix
14
14
  } = _ref;
@@ -76,7 +76,7 @@ export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
76
76
  b[i] = divideScalar(b[i], M[i][i]);
77
77
  for (var j = i + 1; j < columns; j++) {
78
78
  // b[j] -= b[i] * M[j,i]
79
- b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));
79
+ b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));
80
80
  }
81
81
  } else if (!equalScalar(b[i], 0)) {
82
82
  // singular row, nonzero RHS
@@ -96,7 +96,7 @@ export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
96
96
  var bNew = [...b];
97
97
  bNew[i] = 1;
98
98
  for (var _j = i + 1; _j < columns; _j++) {
99
- bNew[_j] = subtract(bNew[_j], M[_j][i]);
99
+ bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);
100
100
  }
101
101
  B.push(bNew);
102
102
  }
@@ -151,7 +151,7 @@ export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
151
151
  b[i] = divideScalar(b[i], Mii);
152
152
  for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {
153
153
  var _J = iIndices[_j2];
154
- b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));
154
+ b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));
155
155
  }
156
156
  } else if (!equalScalar(b[i], 0)) {
157
157
  // singular row, nonzero RHS
@@ -172,7 +172,7 @@ export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
172
172
  bNew[i] = 1;
173
173
  for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
174
174
  var _J2 = iIndices[_j3];
175
- bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);
175
+ bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);
176
176
  }
177
177
  B.push(bNew);
178
178
  }
@@ -1,14 +1,14 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { createSolveValidation } from './utils/solveValidation.js';
3
3
  var name = 'usolve';
4
- var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];
4
+ var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];
5
5
  export var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  matrix,
9
9
  divideScalar,
10
10
  multiplyScalar,
11
- subtract,
11
+ subtractScalar,
12
12
  equalScalar,
13
13
  DenseMatrix
14
14
  } = _ref;
@@ -81,7 +81,7 @@ export var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
81
81
  // loop rows
82
82
  for (var i = j - 1; i >= 0; i--) {
83
83
  // update copy of b
84
- bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
84
+ bdata[i] = [subtractScalar(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
85
85
  }
86
86
  } else {
87
87
  // zero value at j
@@ -145,7 +145,7 @@ export var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
145
145
  var xj = divideScalar(bj, vjj);
146
146
  for (var _k = 0, _lastIndex = jIndices.length; _k < _lastIndex; _k++) {
147
147
  var _i = jIndices[_k];
148
- bdata[_i] = [subtract(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];
148
+ bdata[_i] = [subtractScalar(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];
149
149
  }
150
150
  x[j] = [xj];
151
151
  } else {
@@ -1,14 +1,14 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { createSolveValidation } from './utils/solveValidation.js';
3
3
  var name = 'usolveAll';
4
- var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];
4
+ var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'equalScalar', 'DenseMatrix'];
5
5
  export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  matrix,
9
9
  divideScalar,
10
10
  multiplyScalar,
11
- subtract,
11
+ subtractScalar,
12
12
  equalScalar,
13
13
  DenseMatrix
14
14
  } = _ref;
@@ -76,7 +76,7 @@ export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
76
76
  b[i] = divideScalar(b[i], M[i][i]);
77
77
  for (var j = i - 1; j >= 0; j--) {
78
78
  // b[j] -= b[i] * M[j,i]
79
- b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));
79
+ b[j] = subtractScalar(b[j], multiplyScalar(b[i], M[j][i]));
80
80
  }
81
81
  } else if (!equalScalar(b[i], 0)) {
82
82
  // singular row, nonzero RHS
@@ -96,7 +96,7 @@ export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
96
96
  var bNew = [...b];
97
97
  bNew[i] = 1;
98
98
  for (var _j = i - 1; _j >= 0; _j--) {
99
- bNew[_j] = subtract(bNew[_j], M[_j][i]);
99
+ bNew[_j] = subtractScalar(bNew[_j], M[_j][i]);
100
100
  }
101
101
  B.push(bNew);
102
102
  }
@@ -153,7 +153,7 @@ export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
153
153
  // loop upper triangular
154
154
  for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {
155
155
  var _J = iIndices[_j2];
156
- b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));
156
+ b[_J] = subtractScalar(b[_J], multiplyScalar(b[i], iValues[_j2]));
157
157
  }
158
158
  } else if (!equalScalar(b[i], 0)) {
159
159
  // singular row, nonzero RHS
@@ -176,7 +176,7 @@ export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
176
176
  // loop upper triangular
177
177
  for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
178
178
  var _J2 = iIndices[_j3];
179
- bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);
179
+ bNew[_J2] = subtractScalar(bNew[_J2], iValues[_j3]);
180
180
  }
181
181
  B.push(bNew);
182
182
  }
@@ -6,13 +6,13 @@ import { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js'
6
6
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  var name = 'subtract';
9
- var dependencies = ['typed', 'matrix', 'equalScalar', 'addScalar', 'unaryMinus', 'DenseMatrix', 'concat'];
9
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'subtractScalar', 'unaryMinus', 'DenseMatrix', 'concat'];
10
10
  export var createSubtract = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  typed,
13
13
  matrix,
14
14
  equalScalar,
15
- addScalar,
15
+ subtractScalar,
16
16
  unaryMinus,
17
17
  DenseMatrix,
18
18
  concat
@@ -69,34 +69,14 @@ export var createSubtract = /* #__PURE__ */factory(name, dependencies, _ref => {
69
69
  *
70
70
  * add
71
71
  *
72
- * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x
73
- * Initial value
74
- * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y
75
- * Value to subtract from `x`
76
- * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix}
77
- * Subtraction of `x` and `y`
72
+ * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Initial value
73
+ * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Value to subtract from `x`
74
+ * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Subtraction of `x` and `y`
78
75
  */
79
76
  return typed(name, {
80
- 'number, number': (x, y) => x - y,
81
- 'Complex, Complex': (x, y) => x.sub(y),
82
- 'BigNumber, BigNumber': (x, y) => x.minus(y),
83
- 'Fraction, Fraction': (x, y) => x.sub(y),
84
- 'Unit, Unit': typed.referToSelf(self => (x, y) => {
85
- if (x.value === null) {
86
- throw new Error('Parameter x contains a unit with undefined value');
87
- }
88
- if (y.value === null) {
89
- throw new Error('Parameter y contains a unit with undefined value');
90
- }
91
- if (!x.equalBase(y)) {
92
- throw new Error('Units do not match');
93
- }
94
- var res = x.clone();
95
- res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);
96
- res.fixPrefix = false;
97
- return res;
98
- })
77
+ 'any, any': subtractScalar
99
78
  }, matrixAlgorithmSuite({
79
+ elop: subtractScalar,
100
80
  SS: matAlgo05xSfSf,
101
81
  DS: matAlgo01xDSid,
102
82
  SD: matAlgo03xDSf,
@@ -0,0 +1,46 @@
1
+ import { factory } from '../../utils/factory.js';
2
+ import { subtractNumber } from '../../plain/number/index.js';
3
+ var name = 'subtractScalar';
4
+ var dependencies = ['typed'];
5
+ export var createSubtractScalar = /* #__PURE__ */factory(name, dependencies, _ref => {
6
+ var {
7
+ typed
8
+ } = _ref;
9
+ /**
10
+ * Subtract two scalar values, `x - y`.
11
+ * This function is meant for internal use: it is used by the public function
12
+ * `subtract`
13
+ *
14
+ * This function does not support collections (Array or Matrix).
15
+ *
16
+ * @param {number | BigNumber | Fraction | Complex | Unit} x First value
17
+ * @param {number | BigNumber | Fraction | Complex} y Second value to be subtracted from `x`
18
+ * @return {number | BigNumber | Fraction | Complex | Unit} Difference of `x` and `y`
19
+ * @private
20
+ */
21
+ return typed(name, {
22
+ 'number, number': subtractNumber,
23
+ 'Complex, Complex': function ComplexComplex(x, y) {
24
+ return x.sub(y);
25
+ },
26
+ 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
27
+ return x.minus(y);
28
+ },
29
+ 'Fraction, Fraction': function FractionFraction(x, y) {
30
+ return x.sub(y);
31
+ },
32
+ 'Unit, Unit': typed.referToSelf(self => (x, y) => {
33
+ if (x.value === null || x.value === undefined) {
34
+ throw new Error('Parameter x contains a unit with undefined value');
35
+ }
36
+ if (y.value === null || y.value === undefined) {
37
+ throw new Error('Parameter y contains a unit with undefined value');
38
+ }
39
+ if (!x.equalBase(y)) throw new Error('Units do not match');
40
+ var res = x.clone();
41
+ res.value = typed.find(self, [res.valueType(), y.valueType()])(res.value, y.value);
42
+ res.fixPrefix = false;
43
+ return res;
44
+ })
45
+ });
46
+ });
@@ -1,12 +1,12 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { isNumber } from '../../utils/is.js';
3
3
  var name = 'stirlingS2';
4
- var dependencies = ['typed', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'factorial', 'combinations', 'isNegative', 'isInteger', 'number', '?bignumber', 'larger'];
4
+ var dependencies = ['typed', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'factorial', 'combinations', 'isNegative', 'isInteger', 'number', '?bignumber', 'larger'];
5
5
  export var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  addScalar,
9
- subtract,
9
+ subtractScalar,
10
10
  multiplyScalar,
11
11
  divideScalar,
12
12
  pow,
@@ -1,12 +1,12 @@
1
1
  import { isBigNumber } from '../../utils/is.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'distance';
4
- var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];
4
+ var dependencies = ['typed', 'addScalar', 'subtractScalar', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];
5
5
  export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  addScalar,
9
- subtract,
9
+ subtractScalar,
10
10
  multiplyScalar,
11
11
  divideScalar,
12
12
  deepEqual,
@@ -80,9 +80,9 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
80
80
  if (deepEqual(y, z)) {
81
81
  throw new TypeError('LinePoint1 should not be same with LinePoint2');
82
82
  }
83
- var xCoeff = subtract(z[1], y[1]);
84
- var yCoeff = subtract(y[0], z[0]);
85
- var constant = subtract(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
83
+ var xCoeff = subtractScalar(z[1], y[1]);
84
+ var yCoeff = subtractScalar(y[0], z[0]);
85
+ var constant = subtractScalar(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
86
86
  return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);
87
87
  } else {
88
88
  throw new TypeError('Invalid Arguments: Try again');
@@ -103,9 +103,9 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
103
103
  throw new TypeError('LinePoint1 should not be same with LinePoint2');
104
104
  }
105
105
  if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {
106
- var xCoeff = subtract(z.lineTwoPtY, y.lineOnePtY);
107
- var yCoeff = subtract(y.lineOnePtX, z.lineTwoPtX);
108
- var constant = subtract(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
106
+ var xCoeff = subtractScalar(z.lineTwoPtY, y.lineOnePtY);
107
+ var yCoeff = subtractScalar(y.lineOnePtX, z.lineTwoPtX);
108
+ var constant = subtractScalar(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
109
109
  return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);
110
110
  } else {
111
111
  throw new TypeError('Key names do not match');
@@ -269,7 +269,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
269
269
  return divideScalar(num, den);
270
270
  }
271
271
  function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {
272
- var num = [subtract(multiplyScalar(subtract(y0, y), c), multiplyScalar(subtract(z0, z), b)), subtract(multiplyScalar(subtract(z0, z), a), multiplyScalar(subtract(x0, x), c)), subtract(multiplyScalar(subtract(x0, x), b), multiplyScalar(subtract(y0, y), a))];
272
+ var num = [subtractScalar(multiplyScalar(subtractScalar(y0, y), c), multiplyScalar(subtractScalar(z0, z), b)), subtractScalar(multiplyScalar(subtractScalar(z0, z), a), multiplyScalar(subtractScalar(x0, x), c)), subtractScalar(multiplyScalar(subtractScalar(x0, x), b), multiplyScalar(subtractScalar(y0, y), a))];
273
273
  num = sqrt(addScalar(addScalar(multiplyScalar(num[0], num[0]), multiplyScalar(num[1], num[1])), multiplyScalar(num[2], num[2])));
274
274
  var den = sqrt(addScalar(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)), multiplyScalar(c, c)));
275
275
  return divideScalar(num, den);
@@ -279,7 +279,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
279
279
  var result = 0;
280
280
  var diff = 0;
281
281
  for (var i = 0; i < vectorSize; i++) {
282
- diff = subtract(x[i], y[i]);
282
+ diff = subtractScalar(x[i], y[i]);
283
283
  result = addScalar(multiplyScalar(diff, diff), result);
284
284
  }
285
285
  return sqrt(result);
@@ -3,12 +3,12 @@ import { clone } from '../../utils/object.js';
3
3
  import { format } from '../../utils/string.js';
4
4
  import { factory } from '../../utils/factory.js';
5
5
  var name = 'det';
6
- var dependencies = ['typed', 'matrix', 'subtract', 'multiply', 'divideScalar', 'isZero', 'unaryMinus'];
6
+ var dependencies = ['typed', 'matrix', 'subtractScalar', 'multiply', 'divideScalar', 'isZero', 'unaryMinus'];
7
7
  export var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  typed,
10
10
  matrix,
11
- subtract,
11
+ subtractScalar,
12
12
  multiply,
13
13
  divideScalar,
14
14
  isZero,
@@ -104,7 +104,7 @@ export var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {
104
104
  } else if (rows === 2) {
105
105
  // this is a 2 x 2 matrix
106
106
  // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12
107
- return subtract(multiply(matrix[0][0], matrix[1][1]), multiply(matrix[1][0], matrix[0][1]));
107
+ return subtractScalar(multiply(matrix[0][0], matrix[1][1]), multiply(matrix[1][0], matrix[0][1]));
108
108
  } else {
109
109
  // Bareiss algorithm
110
110
  // this algorithm have same complexity as LUP decomposition (O(n^3))
@@ -132,7 +132,7 @@ export var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {
132
132
  for (var i = k + 1; i < rows; i++) {
133
133
  var i_ = rowIndices[i];
134
134
  for (var j = k + 1; j < rows; j++) {
135
- matrix[i_][j] = divideScalar(subtract(multiply(matrix[i_][j], piv), multiply(matrix[i_][k], matrix[k_][j])), piv_);
135
+ matrix[i_][j] = divideScalar(subtractScalar(multiply(matrix[i_][j], piv), multiply(matrix[i_][k], matrix[k_][j])), piv_);
136
136
  }
137
137
  }
138
138
  }
@@ -9,13 +9,13 @@ import { endsWith } from '../../utils/string.js';
9
9
  import { clone, hasOwnProperty } from '../../utils/object.js';
10
10
  import { createBigNumberPi as createPi } from '../../utils/bignumber/constants.js';
11
11
  var name = 'Unit';
12
- var dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
12
+ var dependencies = ['?on', 'config', 'addScalar', 'subtractScalar', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
13
13
  export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref => {
14
14
  var {
15
15
  on,
16
16
  config,
17
17
  addScalar,
18
- subtract,
18
+ subtractScalar,
19
19
  multiplyScalar,
20
20
  divideScalar,
21
21
  pow,
@@ -741,7 +741,7 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
741
741
  var unitValue = convert(ret.units[0].unit.value);
742
742
  var nominalOffset = convert(ret.units[0].unit.offset);
743
743
  var unitOffset = multiplyScalar(unitValue, nominalOffset);
744
- ret.value = subtract(abs(addScalar(ret.value, unitOffset)), unitOffset);
744
+ ret.value = subtractScalar(abs(addScalar(ret.value, unitOffset)), unitOffset);
745
745
  }
746
746
  }
747
747
  for (var i in ret.units) {
@@ -786,7 +786,7 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
786
786
  var otherUnitValue = other.units[0].unit.value;
787
787
  var otherNominalOffset = other.units[0].unit.offset;
788
788
  var otherUnitOffset = multiplyScalar(otherUnitValue, otherNominalOffset);
789
- other.value = addScalar(value, convert(subtract(thisUnitOffset, otherUnitOffset)));
789
+ other.value = addScalar(value, convert(subtractScalar(thisUnitOffset, otherUnitOffset)));
790
790
  }
791
791
  other.fixPrefix = true;
792
792
  other.skipAutomaticSimplification = true;
@@ -1162,7 +1162,7 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
1162
1162
  }
1163
1163
  var y = new Unit(xFixed, parts[i].toString());
1164
1164
  ret.push(y);
1165
- x = subtract(x, y);
1165
+ x = subtractScalar(x, y);
1166
1166
  }
1167
1167
 
1168
1168
  // This little bit fixes a bug where the remainder should be 0 but is a little bit off.
@@ -1,4 +1,4 @@
1
- import { isBigNumber } from './is.js';
1
+ import { isBigNumber, isObject } from './is.js';
2
2
 
3
3
  /**
4
4
  * Clone an object
@@ -32,10 +32,12 @@ export function clone(x) {
32
32
  }
33
33
  if (x instanceof Date) return new Date(x.valueOf());
34
34
  if (isBigNumber(x)) return x; // bignumbers are immutable
35
- if (x instanceof RegExp) throw new TypeError('Cannot clone ' + x); // TODO: clone a RegExp
36
35
 
37
36
  // object
38
- return mapObject(x, clone);
37
+ if (isObject(x)) {
38
+ return mapObject(x, clone);
39
+ }
40
+ throw new TypeError("Cannot clone: unknown type of value (value: ".concat(x, ")"));
39
41
  }
40
42
 
41
43
  /**
@@ -131,7 +131,7 @@ export function createSnapshotFromFactories(factories) {
131
131
  embeddedDocs[name] = 'Object';
132
132
  }
133
133
  });
134
- embeddedDocs = exclude(embeddedDocs, ['equalScalar', 'apply', 'addScalar', 'multiplyScalar', 'print', 'divideScalar', 'parse', 'compile', 'parser', 'chain', 'reviver', 'replacer']);
134
+ embeddedDocs = exclude(embeddedDocs, ['equalScalar', 'apply', 'addScalar', 'subtractScalar', 'multiplyScalar', 'print', 'divideScalar', 'parse', 'compile', 'parser', 'chain', 'reviver', 'replacer']);
135
135
  var allTypeChecks = {};
136
136
  Object.keys(allIsFunctions).forEach(name => {
137
137
  if (name.indexOf('is') === 0) {
@@ -81,7 +81,7 @@ function _format(value, options) {
81
81
  return formatArray(value, options);
82
82
  }
83
83
  if (isString(value)) {
84
- return '"' + value + '"';
84
+ return stringify(value);
85
85
  }
86
86
  if (typeof value === 'function') {
87
87
  return value.syntax ? String(value.syntax) : 'function';
@@ -94,7 +94,7 @@ function _format(value, options) {
94
94
  return value.toString(options);
95
95
  } else {
96
96
  var entries = Object.keys(value).map(key => {
97
- return '"' + key + '": ' + format(value[key], options);
97
+ return stringify(key) + ': ' + format(value[key], options);
98
98
  });
99
99
  return '{' + entries.join(', ') + '}';
100
100
  }
@@ -114,24 +114,20 @@ export function stringify(value) {
114
114
  var i = 0;
115
115
  while (i < text.length) {
116
116
  var c = text.charAt(i);
117
- if (c === '\\') {
118
- escaped += c;
119
- i++;
120
- c = text.charAt(i);
121
- if (c === '' || '"\\/bfnrtu'.indexOf(c) === -1) {
122
- escaped += '\\'; // no valid escape character -> escape it
123
- }
124
-
125
- escaped += c;
126
- } else if (c === '"') {
127
- escaped += '\\"';
128
- } else {
129
- escaped += c;
130
- }
117
+ escaped += c in controlCharacters ? controlCharacters[c] : c;
131
118
  i++;
132
119
  }
133
120
  return '"' + escaped + '"';
134
121
  }
122
+ var controlCharacters = {
123
+ '"': '\\"',
124
+ '\\': '\\\\',
125
+ '\b': '\\b',
126
+ '\f': '\\f',
127
+ '\n': '\\n',
128
+ '\r': '\\r',
129
+ '\t': '\\t'
130
+ };
135
131
 
136
132
  /**
137
133
  * Escape special HTML characters
@@ -1,3 +1,3 @@
1
- export var version = '11.11.2';
1
+ export var version = '11.12.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.11.2",
3
+ "version": "11.12.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,7 +25,7 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.23.1",
28
+ "@babel/runtime": "^7.23.2",
29
29
  "complex.js": "^2.1.1",
30
30
  "decimal.js": "^10.4.3",
31
31
  "escape-latex": "^1.2.0",
@@ -36,27 +36,27 @@
36
36
  "typed-function": "^4.1.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.23.0",
39
+ "@babel/core": "7.23.2",
40
40
  "@babel/plugin-transform-object-assign": "7.22.5",
41
- "@babel/plugin-transform-runtime": "7.22.15",
42
- "@babel/preset-env": "7.22.20",
41
+ "@babel/plugin-transform-runtime": "7.23.2",
42
+ "@babel/preset-env": "7.23.2",
43
43
  "@babel/register": "7.22.15",
44
- "@types/assert": "1.5.7",
45
- "@types/mocha": "10.0.2",
46
- "@typescript-eslint/eslint-plugin": "6.7.5",
47
- "@typescript-eslint/parser": "6.7.5",
44
+ "@types/assert": "1.5.8",
45
+ "@types/mocha": "10.0.3",
46
+ "@typescript-eslint/eslint-plugin": "6.9.0",
47
+ "@typescript-eslint/parser": "6.9.0",
48
48
  "assert": "2.1.0",
49
49
  "babel-loader": "9.1.3",
50
50
  "benchmark": "2.1.4",
51
51
  "c8": "8.0.1",
52
52
  "codecov": "3.8.3",
53
- "core-js": "3.33.0",
53
+ "core-js": "3.33.1",
54
54
  "del": "6.1.1",
55
55
  "dtslint": "4.2.1",
56
- "eslint": "8.51.0",
56
+ "eslint": "8.52.0",
57
57
  "eslint-config-prettier": "9.0.0",
58
58
  "eslint-config-standard": "17.1.0",
59
- "eslint-plugin-import": "2.28.1",
59
+ "eslint-plugin-import": "2.29.0",
60
60
  "eslint-plugin-mocha": "10.2.0",
61
61
  "eslint-plugin-n": "16.2.0",
62
62
  "eslint-plugin-prettier": "5.0.1",
@@ -90,7 +90,7 @@
90
90
  "sylvester": "0.0.21",
91
91
  "ts-node": "10.9.1",
92
92
  "typescript": "5.2.2",
93
- "webpack": "5.88.2",
93
+ "webpack": "5.89.0",
94
94
  "zeros": "1.0.0"
95
95
  },
96
96
  "type": "module",