mathjs 11.11.2 → 12.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +48 -0
- package/README.md +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +2 -2
- package/lib/cjs/defaultInstance.js +2 -2
- package/lib/cjs/entry/allFactoriesAny.js +2 -2
- package/lib/cjs/entry/allFactoriesNumber.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +17 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +17 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +7 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +4 -3
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +2 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +43 -37
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +16 -13
- package/lib/cjs/expression/embeddedDocs/function/matrix/eigs.js +2 -2
- package/lib/cjs/expression/node/AssignmentNode.js +1 -1
- package/lib/cjs/expression/node/FunctionAssignmentNode.js +1 -1
- package/lib/cjs/expression/parse.js +50 -69
- package/lib/cjs/factoriesAny.js +7 -0
- package/lib/cjs/factoriesNumber.js +2 -1
- package/lib/cjs/function/algebra/decomposition/lup.js +3 -3
- package/lib/cjs/function/algebra/decomposition/qr.js +5 -5
- package/lib/cjs/function/algebra/solver/lsolve.js +4 -4
- package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -6
- package/lib/cjs/function/algebra/solver/usolve.js +4 -4
- package/lib/cjs/function/algebra/solver/usolveAll.js +6 -6
- package/lib/cjs/function/arithmetic/subtract.js +7 -37
- package/lib/cjs/function/arithmetic/subtractScalar.js +52 -0
- package/lib/cjs/function/combinatorics/stirlingS2.js +2 -2
- package/lib/cjs/function/geometry/distance.js +10 -10
- package/lib/cjs/function/matrix/det.js +4 -4
- package/lib/cjs/function/matrix/eigs/complexEigs.js +73 -68
- package/lib/cjs/function/matrix/eigs/{realSymetric.js → realSymmetric.js} +57 -51
- package/lib/cjs/function/matrix/eigs.js +118 -45
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/unit/Unit.js +5 -5
- package/lib/cjs/utils/number.js +1 -1
- package/lib/cjs/utils/object.js +4 -2
- package/lib/cjs/utils/snapshot.js +3 -3
- package/lib/cjs/utils/string.js +12 -16
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesDet.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLsolve.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesLsolveAll.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesLup.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesQr.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesStirlingS2.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesSubtractScalar.generated.js +10 -0
- package/lib/esm/entry/dependenciesAny/dependenciesUnitClass.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesUsolve.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesUsolveAll.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny.generated.js +1 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesSubtractScalar.generated.js +10 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +5 -4
- package/lib/esm/entry/impureFunctionsNumber.generated.js +3 -2
- package/lib/esm/entry/pureFunctionsAny.generated.js +42 -37
- package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -13
- package/lib/esm/expression/embeddedDocs/function/matrix/eigs.js +2 -2
- package/lib/esm/expression/node/AssignmentNode.js +1 -1
- package/lib/esm/expression/node/FunctionAssignmentNode.js +1 -1
- package/lib/esm/expression/parse.js +50 -69
- package/lib/esm/factoriesAny.js +1 -0
- package/lib/esm/factoriesNumber.js +1 -0
- package/lib/esm/function/algebra/decomposition/lup.js +3 -3
- package/lib/esm/function/algebra/decomposition/qr.js +5 -5
- package/lib/esm/function/algebra/solver/lsolve.js +4 -4
- package/lib/esm/function/algebra/solver/lsolveAll.js +6 -6
- package/lib/esm/function/algebra/solver/usolve.js +4 -4
- package/lib/esm/function/algebra/solver/usolveAll.js +6 -6
- package/lib/esm/function/arithmetic/subtract.js +7 -27
- package/lib/esm/function/arithmetic/subtractScalar.js +46 -0
- package/lib/esm/function/combinatorics/stirlingS2.js +2 -2
- package/lib/esm/function/geometry/distance.js +10 -10
- package/lib/esm/function/matrix/det.js +4 -4
- package/lib/esm/function/matrix/eigs/complexEigs.js +73 -68
- package/lib/esm/function/matrix/eigs/{realSymetric.js → realSymmetric.js} +55 -51
- package/lib/esm/function/matrix/eigs.js +119 -47
- package/lib/esm/type/unit/Unit.js +5 -5
- package/lib/esm/utils/number.js +1 -1
- package/lib/esm/utils/object.js +5 -3
- package/lib/esm/utils/snapshot.js +1 -1
- package/lib/esm/utils/string.js +12 -16
- package/lib/esm/version.js +1 -1
- package/package.json +14 -14
- package/types/EXPLANATION.md +54 -0
- 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
|
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
|
1329
|
+
* Parse a single or double quoted string.
|
1317
1330
|
* @return {Node} node
|
1318
1331
|
* @private
|
1319
1332
|
*/
|
1320
|
-
function
|
1333
|
+
function parseString(state) {
|
1321
1334
|
var node, str;
|
1322
|
-
if (state.token === '"') {
|
1323
|
-
str =
|
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
|
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
|
-
|
1391
|
-
|
1392
|
-
var
|
1393
|
-
if (
|
1394
|
-
|
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,
|
1385
|
+
if (state.token !== quote) {
|
1386
|
+
throw createSyntaxError(state, "End of string ".concat(quote, " expected"));
|
1404
1387
|
}
|
1405
1388
|
getToken(state);
|
1406
|
-
return
|
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 =
|
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);
|
package/lib/esm/factoriesAny.js
CHANGED
@@ -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', '
|
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
|
-
|
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] =
|
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', '
|
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
|
-
|
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 =
|
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(
|
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(
|
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', '
|
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
|
-
|
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] = [
|
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] = [
|
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', '
|
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
|
-
|
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] =
|
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] =
|
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] =
|
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] =
|
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', '
|
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
|
-
|
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] = [
|
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] = [
|
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', '
|
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
|
-
|
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] =
|
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] =
|
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] =
|
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] =
|
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', '
|
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
|
-
|
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
|
-
*
|
74
|
-
* @
|
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
|
-
'
|
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', '
|
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
|
-
|
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', '
|
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
|
-
|
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 =
|
84
|
-
var yCoeff =
|
85
|
-
var constant =
|
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 =
|
107
|
-
var yCoeff =
|
108
|
-
var constant =
|
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 = [
|
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 =
|
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', '
|
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
|
-
|
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
|
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(
|
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
|
}
|