mathjs 11.11.2 → 11.12.0

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