mathjs 11.11.2 → 12.0.0

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