@sdeverywhere/runtime 0.2.8 → 0.2.9
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.
- package/README.md +1 -1
- package/dist/index.cjs +70 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -770,6 +770,7 @@ interface JsModelFunctions {
|
|
|
770
770
|
GAME(inputs: JsModelLookup, x: number): number;
|
|
771
771
|
INTEG(value: number, rate: number): number;
|
|
772
772
|
INTEGER(x: number): number;
|
|
773
|
+
INVERT_MATRIX(matrix: number[][], n: number): number[][];
|
|
773
774
|
LN(x: number): number;
|
|
774
775
|
MAX(x: number, y: number): number;
|
|
775
776
|
MIN(x: number, y: number): number;
|
package/dist/index.d.ts
CHANGED
|
@@ -770,6 +770,7 @@ interface JsModelFunctions {
|
|
|
770
770
|
GAME(inputs: JsModelLookup, x: number): number;
|
|
771
771
|
INTEG(value: number, rate: number): number;
|
|
772
772
|
INTEGER(x: number): number;
|
|
773
|
+
INVERT_MATRIX(matrix: number[][], n: number): number[][];
|
|
773
774
|
LN(x: number): number;
|
|
774
775
|
MAX(x: number, y: number): number;
|
|
775
776
|
MIN(x: number, y: number): number;
|
package/dist/index.js
CHANGED
|
@@ -1196,6 +1196,8 @@ function getJsModelFunctions() {
|
|
|
1196
1196
|
let ctx;
|
|
1197
1197
|
const cachedVectors = /* @__PURE__ */ new Map();
|
|
1198
1198
|
const cachedSortVectors = /* @__PURE__ */ new Map();
|
|
1199
|
+
const cachedInvertWorkMatrices = /* @__PURE__ */ new Map();
|
|
1200
|
+
const cachedInvertResultMatrices = /* @__PURE__ */ new Map();
|
|
1199
1201
|
return {
|
|
1200
1202
|
setContext(context) {
|
|
1201
1203
|
ctx = context;
|
|
@@ -1230,6 +1232,74 @@ function getJsModelFunctions() {
|
|
|
1230
1232
|
INTEGER(x) {
|
|
1231
1233
|
return Math.trunc(x);
|
|
1232
1234
|
},
|
|
1235
|
+
INVERT_MATRIX(matrix, n) {
|
|
1236
|
+
let work = cachedInvertWorkMatrices.get(n);
|
|
1237
|
+
if (work === void 0) {
|
|
1238
|
+
work = Array(n);
|
|
1239
|
+
for (let i = 0; i < n; i++) {
|
|
1240
|
+
work[i] = Array(2 * n);
|
|
1241
|
+
}
|
|
1242
|
+
cachedInvertWorkMatrices.set(n, work);
|
|
1243
|
+
}
|
|
1244
|
+
let result = cachedInvertResultMatrices.get(n);
|
|
1245
|
+
if (result === void 0) {
|
|
1246
|
+
result = Array(n);
|
|
1247
|
+
for (let i = 0; i < n; i++) {
|
|
1248
|
+
result[i] = Array(n);
|
|
1249
|
+
}
|
|
1250
|
+
cachedInvertResultMatrices.set(n, result);
|
|
1251
|
+
}
|
|
1252
|
+
for (let i = 0; i < n; i++) {
|
|
1253
|
+
for (let j = 0; j < n; j++) {
|
|
1254
|
+
work[i][j] = matrix[i][j];
|
|
1255
|
+
work[i][n + j] = i === j ? 1 : 0;
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
for (let k = 0; k < n; k++) {
|
|
1259
|
+
let pivot = k;
|
|
1260
|
+
let max = Math.abs(work[k][k]);
|
|
1261
|
+
for (let i = k + 1; i < n; i++) {
|
|
1262
|
+
const v = Math.abs(work[i][k]);
|
|
1263
|
+
if (v > max) {
|
|
1264
|
+
max = v;
|
|
1265
|
+
pivot = i;
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
if (max === 0) {
|
|
1269
|
+
for (let i = 0; i < n; i++) {
|
|
1270
|
+
for (let j = 0; j < n; j++) {
|
|
1271
|
+
result[i][j] = _NA_;
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
return result;
|
|
1275
|
+
}
|
|
1276
|
+
if (pivot !== k) {
|
|
1277
|
+
const tmpRow = work[k];
|
|
1278
|
+
work[k] = work[pivot];
|
|
1279
|
+
work[pivot] = tmpRow;
|
|
1280
|
+
}
|
|
1281
|
+
const p = work[k][k];
|
|
1282
|
+
for (let j = 0; j < 2 * n; j++) {
|
|
1283
|
+
work[k][j] /= p;
|
|
1284
|
+
}
|
|
1285
|
+
for (let i = 0; i < n; i++) {
|
|
1286
|
+
if (i !== k) {
|
|
1287
|
+
const f = work[i][k];
|
|
1288
|
+
if (f !== 0) {
|
|
1289
|
+
for (let j = 0; j < 2 * n; j++) {
|
|
1290
|
+
work[i][j] -= f * work[k][j];
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
for (let i = 0; i < n; i++) {
|
|
1297
|
+
for (let j = 0; j < n; j++) {
|
|
1298
|
+
result[i][j] = work[i][n + j];
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
return result;
|
|
1302
|
+
},
|
|
1233
1303
|
LN(x) {
|
|
1234
1304
|
return Math.log(x);
|
|
1235
1305
|
},
|