mathjs 11.11.2 → 12.0.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 (107) hide show
  1. package/HISTORY.md +48 -0
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +1 -1
  4. package/lib/browser/math.js.LICENSE.txt +2 -2
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +2 -2
  7. package/lib/cjs/defaultInstance.js +2 -2
  8. package/lib/cjs/entry/allFactoriesAny.js +2 -2
  9. package/lib/cjs/entry/allFactoriesNumber.js +2 -2
  10. package/lib/cjs/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
  11. package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  12. package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +4 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
  14. package/lib/cjs/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
  15. package/lib/cjs/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
  16. package/lib/cjs/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
  17. package/lib/cjs/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +17 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
  21. package/lib/cjs/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
  22. package/lib/cjs/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
  23. package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +17 -0
  26. package/lib/cjs/entry/dependenciesNumber.generated.js +7 -0
  27. package/lib/cjs/entry/impureFunctionsAny.generated.js +4 -3
  28. package/lib/cjs/entry/impureFunctionsNumber.generated.js +2 -1
  29. package/lib/cjs/entry/pureFunctionsAny.generated.js +43 -37
  30. package/lib/cjs/entry/pureFunctionsNumber.generated.js +16 -13
  31. package/lib/cjs/expression/embeddedDocs/function/matrix/eigs.js +2 -2
  32. package/lib/cjs/expression/node/AssignmentNode.js +1 -1
  33. package/lib/cjs/expression/node/FunctionAssignmentNode.js +1 -1
  34. package/lib/cjs/expression/parse.js +50 -69
  35. package/lib/cjs/factoriesAny.js +7 -0
  36. package/lib/cjs/factoriesNumber.js +2 -1
  37. package/lib/cjs/function/algebra/decomposition/lup.js +3 -3
  38. package/lib/cjs/function/algebra/decomposition/qr.js +5 -5
  39. package/lib/cjs/function/algebra/solver/lsolve.js +4 -4
  40. package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -6
  41. package/lib/cjs/function/algebra/solver/usolve.js +4 -4
  42. package/lib/cjs/function/algebra/solver/usolveAll.js +6 -6
  43. package/lib/cjs/function/arithmetic/subtract.js +7 -37
  44. package/lib/cjs/function/arithmetic/subtractScalar.js +52 -0
  45. package/lib/cjs/function/combinatorics/stirlingS2.js +2 -2
  46. package/lib/cjs/function/geometry/distance.js +10 -10
  47. package/lib/cjs/function/matrix/det.js +4 -4
  48. package/lib/cjs/function/matrix/eigs/complexEigs.js +73 -68
  49. package/lib/cjs/function/matrix/eigs/{realSymetric.js → realSymmetric.js} +57 -51
  50. package/lib/cjs/function/matrix/eigs.js +118 -45
  51. package/lib/cjs/header.js +2 -2
  52. package/lib/cjs/type/unit/Unit.js +5 -5
  53. package/lib/cjs/utils/number.js +1 -1
  54. package/lib/cjs/utils/object.js +4 -2
  55. package/lib/cjs/utils/snapshot.js +3 -3
  56. package/lib/cjs/utils/string.js +12 -16
  57. package/lib/cjs/version.js +1 -1
  58. package/lib/esm/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
  59. package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  60. package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +4 -0
  61. package/lib/esm/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
  62. package/lib/esm/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
  63. package/lib/esm/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
  64. package/lib/esm/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
  65. package/lib/esm/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
  66. package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
  67. package/lib/esm/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +10 -0
  68. package/lib/esm/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
  69. package/lib/esm/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
  70. package/lib/esm/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
  71. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  72. package/lib/esm/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
  73. package/lib/esm/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +10 -0
  74. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  75. package/lib/esm/entry/impureFunctionsAny.generated.js +5 -4
  76. package/lib/esm/entry/impureFunctionsNumber.generated.js +3 -2
  77. package/lib/esm/entry/pureFunctionsAny.generated.js +42 -37
  78. package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -13
  79. package/lib/esm/expression/embeddedDocs/function/matrix/eigs.js +2 -2
  80. package/lib/esm/expression/node/AssignmentNode.js +1 -1
  81. package/lib/esm/expression/node/FunctionAssignmentNode.js +1 -1
  82. package/lib/esm/expression/parse.js +50 -69
  83. package/lib/esm/factoriesAny.js +1 -0
  84. package/lib/esm/factoriesNumber.js +1 -0
  85. package/lib/esm/function/algebra/decomposition/lup.js +3 -3
  86. package/lib/esm/function/algebra/decomposition/qr.js +5 -5
  87. package/lib/esm/function/algebra/solver/lsolve.js +4 -4
  88. package/lib/esm/function/algebra/solver/lsolveAll.js +6 -6
  89. package/lib/esm/function/algebra/solver/usolve.js +4 -4
  90. package/lib/esm/function/algebra/solver/usolveAll.js +6 -6
  91. package/lib/esm/function/arithmetic/subtract.js +7 -27
  92. package/lib/esm/function/arithmetic/subtractScalar.js +46 -0
  93. package/lib/esm/function/combinatorics/stirlingS2.js +2 -2
  94. package/lib/esm/function/geometry/distance.js +10 -10
  95. package/lib/esm/function/matrix/det.js +4 -4
  96. package/lib/esm/function/matrix/eigs/complexEigs.js +73 -68
  97. package/lib/esm/function/matrix/eigs/{realSymetric.js → realSymmetric.js} +55 -51
  98. package/lib/esm/function/matrix/eigs.js +119 -47
  99. package/lib/esm/type/unit/Unit.js +5 -5
  100. package/lib/esm/utils/number.js +1 -1
  101. package/lib/esm/utils/object.js +5 -3
  102. package/lib/esm/utils/snapshot.js +1 -1
  103. package/lib/esm/utils/string.js +12 -16
  104. package/lib/esm/version.js +1 -1
  105. package/package.json +14 -14
  106. package/types/EXPLANATION.md +54 -0
  107. package/types/index.d.ts +6797 -6446
@@ -155,6 +155,19 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
155
155
  undefined
156
156
  };
157
157
  var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];
158
+ var ESCAPE_CHARACTERS = {
159
+ '"': '"',
160
+ "'": "'",
161
+ '\\': '\\',
162
+ '/': '/',
163
+ b: '\b',
164
+ f: '\f',
165
+ n: '\n',
166
+ r: '\r',
167
+ t: '\t'
168
+ // note that \u is handled separately in parseStringToken()
169
+ };
170
+
158
171
  function initialState() {
159
172
  return {
160
173
  extraNodes: {},
@@ -1227,7 +1240,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1227
1240
  node = parseAccessors(state, node);
1228
1241
  return node;
1229
1242
  }
1230
- return parseDoubleQuotesString(state);
1243
+ return parseString(state);
1231
1244
  }
1232
1245
 
1233
1246
  /**
@@ -1313,61 +1326,14 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1313
1326
  }
1314
1327
 
1315
1328
  /**
1316
- * Parse a double quotes string.
1329
+ * Parse a single or double quoted string.
1317
1330
  * @return {Node} node
1318
1331
  * @private
1319
1332
  */
1320
- function parseDoubleQuotesString(state) {
1333
+ function parseString(state) {
1321
1334
  var node, str;
1322
- if (state.token === '"') {
1323
- str = parseDoubleQuotesStringToken(state);
1324
-
1325
- // create constant
1326
- node = new ConstantNode(str);
1327
-
1328
- // parse index parameters
1329
- node = parseAccessors(state, node);
1330
- return node;
1331
- }
1332
- return parseSingleQuotesString(state);
1333
- }
1334
-
1335
- /**
1336
- * Parse a string surrounded by double quotes "..."
1337
- * @return {string}
1338
- */
1339
- function parseDoubleQuotesStringToken(state) {
1340
- var str = '';
1341
- while (currentCharacter(state) !== '' && currentCharacter(state) !== '"') {
1342
- if (currentCharacter(state) === '\\') {
1343
- // escape character, immediately process the next
1344
- // character to prevent stopping at a next '\"'
1345
- var cNext = nextCharacter(state);
1346
- if (cNext !== "'") {
1347
- str += currentCharacter(state);
1348
- }
1349
- next(state);
1350
- }
1351
- str += currentCharacter(state);
1352
- next(state);
1353
- }
1354
- getToken(state);
1355
- if (state.token !== '"') {
1356
- throw createSyntaxError(state, 'End of string " expected');
1357
- }
1358
- getToken(state);
1359
- return JSON.parse('"' + str + '"'); // unescape escaped characters
1360
- }
1361
-
1362
- /**
1363
- * Parse a single quotes string.
1364
- * @return {Node} node
1365
- * @private
1366
- */
1367
- function parseSingleQuotesString(state) {
1368
- var node, str;
1369
- if (state.token === '\'') {
1370
- str = parseSingleQuotesStringToken(state);
1335
+ if (state.token === '"' || state.token === "'") {
1336
+ str = parseStringToken(state, state.token);
1371
1337
 
1372
1338
  // create constant
1373
1339
  node = new ConstantNode(str);
@@ -1380,30 +1346,47 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1380
1346
  }
1381
1347
 
1382
1348
  /**
1383
- * Parse a string surrounded by single quotes '...'
1349
+ * Parse a string surrounded by single or double quotes
1350
+ * @param {Object} state
1351
+ * @param {"'" | "\""} quote
1384
1352
  * @return {string}
1385
1353
  */
1386
- function parseSingleQuotesStringToken(state) {
1354
+ function parseStringToken(state, quote) {
1387
1355
  var str = '';
1388
- while (currentCharacter(state) !== '' && currentCharacter(state) !== '\'') {
1356
+ while (currentCharacter(state) !== '' && currentCharacter(state) !== quote) {
1389
1357
  if (currentCharacter(state) === '\\') {
1390
- // escape character, immediately process the next
1391
- // character to prevent stopping at a next '\''
1392
- var cNext = nextCharacter(state);
1393
- if (cNext !== "'" && cNext !== '"') {
1394
- str += currentCharacter(state);
1358
+ next(state);
1359
+ var char = currentCharacter(state);
1360
+ var escapeChar = ESCAPE_CHARACTERS[char];
1361
+ if (escapeChar !== undefined) {
1362
+ // an escaped control character like \" or \n
1363
+ str += escapeChar;
1364
+ state.index += 1;
1365
+ } else if (char === 'u') {
1366
+ // escaped unicode character
1367
+ var unicode = state.expression.slice(state.index + 1, state.index + 5);
1368
+ if (/^[0-9A-Fa-f]{4}$/.test(unicode)) {
1369
+ // test whether the string holds four hexadecimal values
1370
+ str += String.fromCharCode(parseInt(unicode, 16));
1371
+ state.index += 5;
1372
+ } else {
1373
+ throw createSyntaxError(state, "Invalid unicode character \\u".concat(unicode));
1374
+ }
1375
+ } else {
1376
+ throw createSyntaxError(state, "Bad escape character \\".concat(char));
1395
1377
  }
1378
+ } else {
1379
+ // any regular character
1380
+ str += currentCharacter(state);
1396
1381
  next(state);
1397
1382
  }
1398
- str += currentCharacter(state);
1399
- next(state);
1400
1383
  }
1401
1384
  getToken(state);
1402
- if (state.token !== '\'') {
1403
- throw createSyntaxError(state, 'End of string \' expected');
1385
+ if (state.token !== quote) {
1386
+ throw createSyntaxError(state, "End of string ".concat(quote, " expected"));
1404
1387
  }
1405
1388
  getToken(state);
1406
- return JSON.parse('"' + str.replace(/"/g, '\\"') + '"'); // unescape escaped characters
1389
+ return str;
1407
1390
  }
1408
1391
 
1409
1392
  /**
@@ -1498,10 +1481,8 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
1498
1481
  getToken(state);
1499
1482
  if (state.token !== '}') {
1500
1483
  // parse key
1501
- if (state.token === '"') {
1502
- key = parseDoubleQuotesStringToken(state);
1503
- } else if (state.token === '\'') {
1504
- key = parseSingleQuotesStringToken(state);
1484
+ if (state.token === '"' || state.token === "'") {
1485
+ key = parseStringToken(state, state.token);
1505
1486
  } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {
1506
1487
  key = state.token;
1507
1488
  getToken(state);
@@ -33,6 +33,7 @@ export { createUnaryPlus } from './function/arithmetic/unaryPlus.js';
33
33
  export { createAbs } from './function/arithmetic/abs.js';
34
34
  export { createApply } from './function/matrix/apply.js';
35
35
  export { createAddScalar } from './function/arithmetic/addScalar.js';
36
+ export { createSubtractScalar } from './function/arithmetic/subtractScalar.js';
36
37
  export { createCbrt } from './function/arithmetic/cbrt.js';
37
38
  export { createCeil } from './function/arithmetic/ceil.js';
38
39
  export { createCube } from './function/arithmetic/cube.js';
@@ -29,6 +29,7 @@ export var createUnaryMinus = /* #__PURE__ */createNumberFactory('unaryMinus', u
29
29
  export var createUnaryPlus = /* #__PURE__ */createNumberFactory('unaryPlus', unaryPlusNumber);
30
30
  export var createAbs = /* #__PURE__ */createNumberFactory('abs', absNumber);
31
31
  export var createAddScalar = /* #__PURE__ */createNumberFactory('addScalar', addNumber);
32
+ export var createSubtractScalar = /* #__PURE__ */createNumberFactory('subtractScalar', subtractNumber);
32
33
  export var createCbrt = /* #__PURE__ */createNumberFactory('cbrt', cbrtNumber);
33
34
  export { createCeilNumber as createCeil } from './function/arithmetic/ceil.js';
34
35
  export var createCube = /* #__PURE__ */createNumberFactory('cube', cubeNumber);
@@ -1,7 +1,7 @@
1
1
  import { clone } from '../../../utils/object.js';
2
2
  import { factory } from '../../../utils/factory.js';
3
3
  var name = 'lup';
4
- var dependencies = ['typed', 'matrix', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtract', 'larger', 'equalScalar', 'unaryMinus', 'DenseMatrix', 'SparseMatrix', 'Spa'];
4
+ var dependencies = ['typed', 'matrix', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtractScalar', 'larger', 'equalScalar', 'unaryMinus', 'DenseMatrix', 'SparseMatrix', 'Spa'];
5
5
  export var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
@@ -10,7 +10,7 @@ export var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {
10
10
  addScalar,
11
11
  divideScalar,
12
12
  multiplyScalar,
13
- subtract,
13
+ subtractScalar,
14
14
  larger,
15
15
  equalScalar,
16
16
  unaryMinus,
@@ -100,7 +100,7 @@ export var createLup = /* #__PURE__ */factory(name, dependencies, _ref => {
100
100
  // s = l[i, k] - data[k, j]
101
101
  s = addScalar(s, multiplyScalar(data[i][k], data[k][j]));
102
102
  }
103
- data[i][j] = subtract(data[i][j], s);
103
+ data[i][j] = subtractScalar(data[i][j], s);
104
104
  }
105
105
  }
106
106
  // row with larger value in cvector, row >= j
@@ -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
  }