@danielsimonjr/mathts-functions 0.34.0 → 0.35.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.
package/dist/index.js CHANGED
@@ -3402,10 +3402,10 @@ async function fftGpuDispatchImpl(real, imag, inverse, options) {
3402
3402
  staging.unmap();
3403
3403
  const outRe = new Float64Array(n);
3404
3404
  const outIm = new Float64Array(n);
3405
- const scale = inverse ? 1 / n : 1;
3405
+ const scale3 = inverse ? 1 / n : 1;
3406
3406
  for (let i = 0; i < n; i++) {
3407
- outRe[i] = packed[i * 2] * scale;
3408
- outIm[i] = packed[i * 2 + 1] * scale;
3407
+ outRe[i] = packed[i * 2] * scale3;
3408
+ outIm[i] = packed[i * 2 + 1] * scale3;
3409
3409
  }
3410
3410
  return { real: outRe, imag: outIm };
3411
3411
  } catch {
@@ -4290,9 +4290,9 @@ function hilbertTransform(x) {
4290
4290
  try {
4291
4291
  const paddedInput = new Array(N).fill(0);
4292
4292
  for (let i = 0; i < n; i++) paddedInput[i] = x[i];
4293
- const zeros2 = new Array(N).fill(0);
4293
+ const zeros4 = new Array(N).fill(0);
4294
4294
  const inReAlloc = wasmLoader.allocateFloat64Array(paddedInput);
4295
- const inImAlloc = wasmLoader.allocateFloat64Array(zeros2);
4295
+ const inImAlloc = wasmLoader.allocateFloat64Array(zeros4);
4296
4296
  const outReAlloc = wasmLoader.allocateFloat64ArrayEmpty(N);
4297
4297
  const outImAlloc = wasmLoader.allocateFloat64ArrayEmpty(N);
4298
4298
  try {
@@ -5511,8 +5511,8 @@ function modNumber(x, y) {
5511
5511
  }
5512
5512
  modNumber.signature = n2;
5513
5513
  function nthRootNumber(a, root2 = 2) {
5514
- const inv2 = root2 < 0;
5515
- if (inv2) {
5514
+ const inv3 = root2 < 0;
5515
+ if (inv3) {
5516
5516
  root2 = -root2;
5517
5517
  }
5518
5518
  if (root2 === 0) {
@@ -5522,14 +5522,14 @@ function nthRootNumber(a, root2 = 2) {
5522
5522
  throw new Error("Root must be odd when a is negative.");
5523
5523
  }
5524
5524
  if (a === 0) {
5525
- return inv2 ? Infinity : 0;
5525
+ return inv3 ? Infinity : 0;
5526
5526
  }
5527
5527
  if (!isFinite(a)) {
5528
- return inv2 ? 0 : a;
5528
+ return inv3 ? 0 : a;
5529
5529
  }
5530
5530
  let x = Math.pow(Math.abs(a), 1 / root2);
5531
5531
  x = a < 0 ? -x : x;
5532
- return inv2 ? 1 / x : x;
5532
+ return inv3 ? 1 / x : x;
5533
5533
  }
5534
5534
  function signNumber(x) {
5535
5535
  return sign2(x);
@@ -8256,26 +8256,26 @@ var betaPDF = mathTyped11("betaPDF", {
8256
8256
  return Promise.resolve(out);
8257
8257
  }
8258
8258
  });
8259
- function gammaPDFScalar(x, shape, scale) {
8260
- if (shape <= 0 || scale <= 0) return NaN;
8259
+ function gammaPDFScalar(x, shape, scale3) {
8260
+ if (shape <= 0 || scale3 <= 0) return NaN;
8261
8261
  if (x <= 0) return 0;
8262
8262
  return Math.exp(
8263
- (shape - 1) * Math.log(x) - x / scale - _lgammaD(shape) - shape * Math.log(scale)
8263
+ (shape - 1) * Math.log(x) - x / scale3 - _lgammaD(shape) - shape * Math.log(scale3)
8264
8264
  );
8265
8265
  }
8266
8266
  var gammaPDF = mathTyped11("gammaPDF", {
8267
- "number, number, number": (x, shape, scale) => gammaPDFScalar(x, shape, scale),
8268
- "Float64Array, number, number": (x, shape, scale) => {
8267
+ "number, number, number": (x, shape, scale3) => gammaPDFScalar(x, shape, scale3),
8268
+ "Float64Array, number, number": (x, shape, scale3) => {
8269
8269
  const out = new Float64Array(x.length);
8270
8270
  const lgShape = _lgammaD(shape);
8271
- const logScale = Math.log(scale);
8271
+ const logScale = Math.log(scale3);
8272
8272
  const logConstant = lgShape + shape * logScale;
8273
8273
  for (let i = 0; i < x.length; i++) {
8274
8274
  const xi = x[i];
8275
8275
  if (xi <= 0) {
8276
8276
  out[i] = 0;
8277
8277
  } else {
8278
- out[i] = Math.exp((shape - 1) * Math.log(xi) - xi / scale - logConstant);
8278
+ out[i] = Math.exp((shape - 1) * Math.log(xi) - xi / scale3 - logConstant);
8279
8279
  }
8280
8280
  }
8281
8281
  return Promise.resolve(out);
@@ -8381,18 +8381,18 @@ import { computePool as computePool7 } from "@danielsimonjr/mathts-parallel";
8381
8381
  var GEOMETRY_WASM_THRESHOLD = 32;
8382
8382
  var HULL3D_WASM_THRESHOLD = 1024;
8383
8383
  function angle2D(v1, v2) {
8384
- const dot5 = v1[0] * v2[0] + v1[1] * v2[1];
8384
+ const dot7 = v1[0] * v2[0] + v1[1] * v2[1];
8385
8385
  const mag1 = Math.sqrt(v1[0] ** 2 + v1[1] ** 2);
8386
8386
  const mag2 = Math.sqrt(v2[0] ** 2 + v2[1] ** 2);
8387
8387
  if (mag1 === 0 || mag2 === 0) return NaN;
8388
- return Math.acos(Math.max(-1, Math.min(1, dot5 / (mag1 * mag2))));
8388
+ return Math.acos(Math.max(-1, Math.min(1, dot7 / (mag1 * mag2))));
8389
8389
  }
8390
8390
  function angle3D(v1, v2) {
8391
- const dot5 = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
8391
+ const dot7 = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
8392
8392
  const mag1 = Math.sqrt(v1[0] ** 2 + v1[1] ** 2 + v1[2] ** 2);
8393
8393
  const mag2 = Math.sqrt(v2[0] ** 2 + v2[1] ** 2 + v2[2] ** 2);
8394
8394
  if (mag1 === 0 || mag2 === 0) return NaN;
8395
- return Math.acos(Math.max(-1, Math.min(1, dot5 / (mag1 * mag2))));
8395
+ return Math.acos(Math.max(-1, Math.min(1, dot7 / (mag1 * mag2))));
8396
8396
  }
8397
8397
  function cross3D(a, b) {
8398
8398
  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
@@ -8497,15 +8497,15 @@ function reflectVector(v, normal) {
8497
8497
  const mag = Math.sqrt(normal.reduce((s, c) => s + c * c, 0));
8498
8498
  if (mag === 0) return v.slice();
8499
8499
  const n = normal.map((c) => c / mag);
8500
- const dot5 = v.reduce((s, c, i) => s + c * n[i], 0);
8501
- return v.map((c, i) => c - 2 * dot5 * n[i]);
8500
+ const dot7 = v.reduce((s, c, i) => s + c * n[i], 0);
8501
+ return v.map((c, i) => c - 2 * dot7 * n[i]);
8502
8502
  }
8503
8503
  function projectVector(v, onto) {
8504
- const dot5 = v.reduce((s, c, i) => s + c * onto[i], 0);
8504
+ const dot7 = v.reduce((s, c, i) => s + c * onto[i], 0);
8505
8505
  const magSq = onto.reduce((s, c) => s + c * c, 0);
8506
8506
  if (magSq === 0) return onto.map(() => 0);
8507
- const scale = dot5 / magSq;
8508
- return onto.map((c) => c * scale);
8507
+ const scale3 = dot7 / magSq;
8508
+ return onto.map((c) => c * scale3);
8509
8509
  }
8510
8510
  function distance2D(a, b) {
8511
8511
  return Math.sqrt((b[0] - a[0]) ** 2 + (b[1] - a[1]) ** 2);
@@ -11487,8 +11487,8 @@ var createSolveODE = /* @__PURE__ */ factory(
11487
11487
  dependencies,
11488
11488
  ({
11489
11489
  typed: typed3,
11490
- add: add2,
11491
- subtract: subtract2,
11490
+ add: add3,
11491
+ subtract: subtract3,
11492
11492
  multiply: multiply2,
11493
11493
  divide: divide2,
11494
11494
  max: max2,
@@ -11697,16 +11697,16 @@ var createSolveODE = /* @__PURE__ */ factory(
11697
11697
  const hMag = Math.min(h0, Math.abs(tf - t0));
11698
11698
  h = isForwards ? hMag : -hMag;
11699
11699
  } else {
11700
- h = divide2(subtract2(tf, t0), steps);
11700
+ h = divide2(subtract3(tf, t0), steps);
11701
11701
  }
11702
11702
  const t = [t0];
11703
11703
  const y = [y0];
11704
- const deltaB = subtract2(b, bp);
11704
+ const deltaB = subtract3(b, bp);
11705
11705
  function stageCombo(coeffs, stages) {
11706
11706
  const m = Math.min(coeffs.length, stages.length);
11707
11707
  let acc = multiply2(coeffs[0], stages[0]);
11708
11708
  for (let j = 1; j < m; j++) {
11709
- acc = add2(acc, multiply2(coeffs[j], stages[j]));
11709
+ acc = add3(acc, multiply2(coeffs[j], stages[j]));
11710
11710
  }
11711
11711
  return acc;
11712
11712
  }
@@ -11719,14 +11719,14 @@ var createSolveODE = /* @__PURE__ */ factory(
11719
11719
  h = trimStep(t[n], tf, h);
11720
11720
  k.push(f(t[n], y[n]));
11721
11721
  for (let i = 1; i < c.length; ++i) {
11722
- k.push(f(add2(t[n], multiply2(c[i], h)), add2(y[n], multiply2(h, stageCombo(a[i], k)))));
11722
+ k.push(f(add3(t[n], multiply2(c[i], h)), add3(y[n], multiply2(h, stageCombo(a[i], k)))));
11723
11723
  }
11724
11724
  const errComb = stageCombo(deltaB, k);
11725
11725
  const errArr = Array.isArray(errComb) ? errComb : [errComb];
11726
11726
  const TE = max2(abs2(map2(errArr, (X) => isUnit(X) ? X.value : X)));
11727
11727
  if (TE < tol && tol / TE > 1 / 4) {
11728
- t.push(add2(t[n], h));
11729
- y.push(add2(y[n], multiply2(h, stageCombo(b, k))));
11728
+ t.push(add3(t[n], h));
11729
+ y.push(add3(y[n], multiply2(h, stageCombo(b, k))));
11730
11730
  n++;
11731
11731
  }
11732
11732
  let delta = 0.84 * (tol / TE) ** (1 / 5);
@@ -11807,8 +11807,8 @@ var createSolveODE = /* @__PURE__ */ factory(
11807
11807
  function _createTrimStep(isForwards) {
11808
11808
  const outOfBounds = isForwards ? larger2 : smaller2;
11809
11809
  return function(t, tf, h) {
11810
- const next = add2(t, h);
11811
- return outOfBounds(next, tf) ? subtract2(tf, t) : h;
11810
+ const next = add3(t, h);
11811
+ return outOfBounds(next, tf) ? subtract3(tf, t) : h;
11812
11812
  };
11813
11813
  }
11814
11814
  function isNumOrBig(x) {
@@ -13096,8 +13096,8 @@ function quadprog(H, f, A, b) {
13096
13096
  let aNorm = 0;
13097
13097
  for (let j = 0; j < n; j++) aNorm += A[c][j] * A[c][j];
13098
13098
  if (aNorm > 1e-15) {
13099
- const scale = (ax - b[c]) / aNorm;
13100
- for (let j = 0; j < n; j++) xNew[j] -= scale * A[c][j];
13099
+ const scale3 = (ax - b[c]) / aNorm;
13100
+ for (let j = 0; j < n; j++) xNew[j] -= scale3 * A[c][j];
13101
13101
  }
13102
13102
  }
13103
13103
  }
@@ -14397,9 +14397,9 @@ function _aggregateEigenvector(vectors, aggregation) {
14397
14397
  const count2 = vectors.length;
14398
14398
  const ref = vectors[0];
14399
14399
  const aligned = vectors.map((v) => {
14400
- let dot5 = 0;
14401
- for (let i = 0; i < n; i++) dot5 += v[i] * ref[i];
14402
- if (dot5 < 0) {
14400
+ let dot7 = 0;
14401
+ for (let i = 0; i < n; i++) dot7 += v[i] * ref[i];
14402
+ if (dot7 < 0) {
14403
14403
  const flipped = new Float64Array(n);
14404
14404
  for (let i = 0; i < n; i++) flipped[i] = -v[i];
14405
14405
  return flipped;
@@ -14935,7 +14935,7 @@ function fDist(d1, d2) {
14935
14935
  }
14936
14936
  function gammaDist(shape, rate = 1) {
14937
14937
  if (shape <= 0 || rate <= 0) throw new Error("gammaDist: shape and rate must be positive");
14938
- const scale = 1 / rate;
14938
+ const scale3 = 1 / rate;
14939
14939
  return {
14940
14940
  pdf: (x) => {
14941
14941
  if (x < 0) return 0;
@@ -14956,7 +14956,7 @@ function gammaDist(shape, rate = 1) {
14956
14956
  if (p <= 0) return 0;
14957
14957
  if (p >= 1) return Infinity;
14958
14958
  let lo = 0;
14959
- let hi = shape * scale * 20;
14959
+ let hi = shape * scale3 * 20;
14960
14960
  while (_gammainc(shape, hi * rate) < p) hi *= 2;
14961
14961
  for (let i = 0; i < 100; i++) {
14962
14962
  const mid = (lo + hi) / 2;
@@ -14966,13 +14966,13 @@ function gammaDist(shape, rate = 1) {
14966
14966
  }
14967
14967
  return (lo + hi) / 2;
14968
14968
  },
14969
- mean: shape * scale,
14970
- variance: shape * scale * scale,
14971
- sample: () => _gammaRandom(shape) * scale,
14972
- sampleN: (n, opts) => _sampleNDispatch("gamma", [shape, scale], n, opts, (count2, rng) => {
14969
+ mean: shape * scale3,
14970
+ variance: shape * scale3 * scale3,
14971
+ sample: () => _gammaRandom(shape) * scale3,
14972
+ sampleN: (n, opts) => _sampleNDispatch("gamma", [shape, scale3], n, opts, (count2, rng) => {
14973
14973
  const out = new Float64Array(count2);
14974
14974
  for (let i = 0; i < count2; i++) {
14975
- out[i] = _gammaRandomRng(shape, rng) * scale;
14975
+ out[i] = _gammaRandomRng(shape, rng) * scale3;
14976
14976
  }
14977
14977
  return out;
14978
14978
  })
@@ -16298,9 +16298,9 @@ function principalComponentAnalysis(data, k) {
16298
16298
  const explained = eigenvalues.map((ev) => totalVar > 0 ? Math.abs(ev) / totalVar : 0);
16299
16299
  const scores = centered.map((row2) => {
16300
16300
  return eigenvectors.map((ev) => {
16301
- let dot5 = 0;
16302
- for (let j = 0; j < p; j++) dot5 += row2[j] * ev[j];
16303
- return dot5;
16301
+ let dot7 = 0;
16302
+ for (let j = 0; j < p; j++) dot7 += row2[j] * ev[j];
16303
+ return dot7;
16304
16304
  });
16305
16305
  });
16306
16306
  return { components: eigenvectors, explained, scores };
@@ -16702,9 +16702,9 @@ function mahalanobis(u, v, cov2) {
16702
16702
  if (u.length !== v.length || cov2.length !== u.length) {
16703
16703
  throw new Error("mahalanobis: u, v, and cov dimensions must match");
16704
16704
  }
16705
- const inv2 = _matInverse(cov2);
16705
+ const inv3 = _matInverse(cov2);
16706
16706
  const d = u.map((ui, i) => ui - v[i]);
16707
- return Math.sqrt(_quadForm(d, inv2));
16707
+ return Math.sqrt(_quadForm(d, inv3));
16708
16708
  }
16709
16709
  function hotellingT2(data, mu0) {
16710
16710
  const n = data.length;
@@ -16847,9 +16847,9 @@ function rowReduce(A, tol = 1e-10) {
16847
16847
  if (maxRow !== pivotRow) {
16848
16848
  [M[pivotRow], M[maxRow]] = [M[maxRow], M[pivotRow]];
16849
16849
  }
16850
- const scale = M[pivotRow][col];
16850
+ const scale3 = M[pivotRow][col];
16851
16851
  for (let j = col; j < n; j++) {
16852
- M[pivotRow][j] /= scale;
16852
+ M[pivotRow][j] /= scale3;
16853
16853
  }
16854
16854
  for (let row2 = 0; row2 < m; row2++) {
16855
16855
  if (row2 === pivotRow) continue;
@@ -16935,30 +16935,30 @@ function hessenbergForm(A) {
16935
16935
  if (normV < 1e-30) continue;
16936
16936
  const beta2 = 2 / normV;
16937
16937
  for (let j = k; j < n; j++) {
16938
- let dot5 = 0;
16938
+ let dot7 = 0;
16939
16939
  for (let i = 0; i < len; i++) {
16940
- dot5 += v[i] * H[k + 1 + i][j];
16940
+ dot7 += v[i] * H[k + 1 + i][j];
16941
16941
  }
16942
16942
  for (let i = 0; i < len; i++) {
16943
- H[k + 1 + i][j] -= beta2 * v[i] * dot5;
16943
+ H[k + 1 + i][j] -= beta2 * v[i] * dot7;
16944
16944
  }
16945
16945
  }
16946
16946
  for (let i = 0; i < n; i++) {
16947
- let dot5 = 0;
16947
+ let dot7 = 0;
16948
16948
  for (let j = 0; j < len; j++) {
16949
- dot5 += H[i][k + 1 + j] * v[j];
16949
+ dot7 += H[i][k + 1 + j] * v[j];
16950
16950
  }
16951
16951
  for (let j = 0; j < len; j++) {
16952
- H[i][k + 1 + j] -= beta2 * dot5 * v[j];
16952
+ H[i][k + 1 + j] -= beta2 * dot7 * v[j];
16953
16953
  }
16954
16954
  }
16955
16955
  for (let i = 0; i < n; i++) {
16956
- let dot5 = 0;
16956
+ let dot7 = 0;
16957
16957
  for (let j = 0; j < len; j++) {
16958
- dot5 += Q2[i][k + 1 + j] * v[j];
16958
+ dot7 += Q2[i][k + 1 + j] * v[j];
16959
16959
  }
16960
16960
  for (let j = 0; j < len; j++) {
16961
- Q2[i][k + 1 + j] -= beta2 * dot5 * v[j];
16961
+ Q2[i][k + 1 + j] -= beta2 * dot7 * v[j];
16962
16962
  }
16963
16963
  }
16964
16964
  }
@@ -16978,9 +16978,9 @@ async function matrixPower(A, p) {
16978
16978
  return matPowBySquaring(A, p);
16979
16979
  }
16980
16980
  if (isInt && p < 0) {
16981
- const inv2 = matrixInverse(A);
16982
- if (p === -1) return inv2;
16983
- return matPowBySquaring(inv2, -p);
16981
+ const inv3 = matrixInverse(A);
16982
+ if (p === -1) return inv3;
16983
+ return matPowBySquaring(inv3, -p);
16984
16984
  }
16985
16985
  return matPowFractional(A, p);
16986
16986
  }
@@ -17017,8 +17017,8 @@ function matrixInverse(A) {
17017
17017
  }
17018
17018
  if (maxVal < 1e-15) throw new Error("matrixPower: singular matrix cannot be inverted");
17019
17019
  if (maxRow !== col) [M[col], M[maxRow]] = [M[maxRow], M[col]];
17020
- const scale = M[col][col];
17021
- for (let j = 0; j < 2 * n; j++) M[col][j] /= scale;
17020
+ const scale3 = M[col][col];
17021
+ for (let j = 0; j < 2 * n; j++) M[col][j] /= scale3;
17022
17022
  for (let row2 = 0; row2 < n; row2++) {
17023
17023
  if (row2 === col) continue;
17024
17024
  const factor2 = M[row2][col];
@@ -17092,10 +17092,10 @@ async function matLogScalingSquaring(A) {
17092
17092
  }
17093
17093
  }
17094
17094
  }
17095
- const scale = Math.pow(2, numSquares);
17095
+ const scale3 = Math.pow(2, numSquares);
17096
17096
  for (let i = 0; i < n; i++) {
17097
17097
  for (let j = 0; j < n; j++) {
17098
- logM[i][j] *= scale;
17098
+ logM[i][j] *= scale3;
17099
17099
  }
17100
17100
  }
17101
17101
  return logM;
@@ -17358,9 +17358,9 @@ async function solveApprox(A, b, n) {
17358
17358
  }
17359
17359
  }
17360
17360
  if (maxRow !== col) [M[col], M[maxRow]] = [M[maxRow], M[col]];
17361
- const scale = M[col][col];
17362
- if (Math.abs(scale) < 1e-30) continue;
17363
- for (let j = 0; j <= n; j++) M[col][j] /= scale;
17361
+ const scale3 = M[col][col];
17362
+ if (Math.abs(scale3) < 1e-30) continue;
17363
+ for (let j = 0; j <= n; j++) M[col][j] /= scale3;
17364
17364
  for (let row2 = 0; row2 < n; row2++) {
17365
17365
  if (row2 === col) continue;
17366
17366
  const factor2 = M[row2][col];
@@ -22171,41 +22171,41 @@ var createDot = /* @__PURE__ */ factory(
22171
22171
  const bdt = isMatrix(b) ? b._datatype || b.getDataType() : void 0;
22172
22172
  const aIsColumn = _size(a).length === 2;
22173
22173
  const bIsColumn = _size(b).length === 2;
22174
- let add2 = addScalar2;
22174
+ let add3 = addScalar2;
22175
22175
  let mul = multiplyScalar2;
22176
22176
  if (adt && bdt && adt === bdt && typeof adt === "string" && adt !== "mixed") {
22177
22177
  const dt = adt;
22178
- add2 = typed3.find(addScalar2, [dt, dt]);
22178
+ add3 = typed3.find(addScalar2, [dt, dt]);
22179
22179
  mul = typed3.find(multiplyScalar2, [dt, dt]);
22180
22180
  }
22181
- if (!aIsColumn && !bIsColumn && add2 === addScalar2 && mul === multiplyScalar2 && _isFlatNumbers(adata) && _isFlatNumbers(bdata)) {
22181
+ if (!aIsColumn && !bIsColumn && add3 === addScalar2 && mul === multiplyScalar2 && _isFlatNumbers(adata) && _isFlatNumbers(bdata)) {
22182
22182
  return pairwiseDot2(adata, bdata);
22183
22183
  }
22184
22184
  if (!aIsColumn && !bIsColumn) {
22185
22185
  let c = mul(conj3(adata[0]), bdata[0]);
22186
22186
  for (let i = 1; i < N; i++) {
22187
- c = add2(c, mul(conj3(adata[i]), bdata[i]));
22187
+ c = add3(c, mul(conj3(adata[i]), bdata[i]));
22188
22188
  }
22189
22189
  return c;
22190
22190
  }
22191
22191
  if (!aIsColumn && bIsColumn) {
22192
22192
  let c = mul(conj3(adata[0]), bdata[0][0]);
22193
22193
  for (let i = 1; i < N; i++) {
22194
- c = add2(c, mul(conj3(adata[i]), bdata[i][0]));
22194
+ c = add3(c, mul(conj3(adata[i]), bdata[i][0]));
22195
22195
  }
22196
22196
  return c;
22197
22197
  }
22198
22198
  if (aIsColumn && !bIsColumn) {
22199
22199
  let c = mul(conj3(adata[0][0]), bdata[0]);
22200
22200
  for (let i = 1; i < N; i++) {
22201
- c = add2(c, mul(conj3(adata[i][0]), bdata[i]));
22201
+ c = add3(c, mul(conj3(adata[i][0]), bdata[i]));
22202
22202
  }
22203
22203
  return c;
22204
22204
  }
22205
22205
  {
22206
22206
  let c = mul(conj3(adata[0][0]), bdata[0][0]);
22207
22207
  for (let i = 1; i < N; i++) {
22208
- c = add2(c, mul(conj3(adata[i][0]), bdata[i][0]));
22208
+ c = add3(c, mul(conj3(adata[i][0]), bdata[i][0]));
22209
22209
  }
22210
22210
  return c;
22211
22211
  }
@@ -22217,7 +22217,7 @@ var createDot = /* @__PURE__ */ factory(
22217
22217
  const yindex = y._index;
22218
22218
  const yvalues = y._values;
22219
22219
  let c = 0;
22220
- const add2 = addScalar2;
22220
+ const add3 = addScalar2;
22221
22221
  const mul = multiplyScalar2;
22222
22222
  let i = 0;
22223
22223
  let j = 0;
@@ -22233,7 +22233,7 @@ var createDot = /* @__PURE__ */ factory(
22233
22233
  continue;
22234
22234
  }
22235
22235
  if (I2 === J) {
22236
- c = add2(c, mul(xvalues[i], yvalues[j]));
22236
+ c = add3(c, mul(xvalues[i], yvalues[j]));
22237
22237
  i++;
22238
22238
  j++;
22239
22239
  }
@@ -22750,10 +22750,10 @@ var dependencies85 = ["typed", "transpose", "conj"];
22750
22750
  var createCtranspose = /* @__PURE__ */ factory(
22751
22751
  name85,
22752
22752
  dependencies85,
22753
- ({ typed: typed3, transpose: transpose4, conj: conj3 }) => {
22753
+ ({ typed: typed3, transpose: transpose5, conj: conj3 }) => {
22754
22754
  return typed3(name85, {
22755
22755
  any: function(x) {
22756
- return conj3(transpose4(x));
22756
+ return conj3(transpose5(x));
22757
22757
  }
22758
22758
  });
22759
22759
  }
@@ -23325,7 +23325,7 @@ var dependencies95 = ["typed", "matrix", "add"];
23325
23325
  var createTrace = /* @__PURE__ */ factory(
23326
23326
  name95,
23327
23327
  dependencies95,
23328
- ({ typed: typed3, matrix: matrix2, add: add2 }) => {
23328
+ ({ typed: typed3, matrix: matrix2, add: add3 }) => {
23329
23329
  return typed3("trace", {
23330
23330
  Array: function _arrayTrace(x) {
23331
23331
  return _denseTrace(matrix2(x));
@@ -23349,7 +23349,7 @@ var createTrace = /* @__PURE__ */ factory(
23349
23349
  if (rows === cols) {
23350
23350
  let sum3 = 0;
23351
23351
  for (let i = 0; i < rows; i++) {
23352
- sum3 = add2(sum3, data[i][i]);
23352
+ sum3 = add3(sum3, data[i][i]);
23353
23353
  }
23354
23354
  return sum3;
23355
23355
  } else {
@@ -23376,7 +23376,7 @@ var createTrace = /* @__PURE__ */ factory(
23376
23376
  for (let k = k0; k < k1; k++) {
23377
23377
  const i = index[k];
23378
23378
  if (i === j) {
23379
- sum3 = add2(sum3, values[k]);
23379
+ sum3 = add3(sum3, values[k]);
23380
23380
  break;
23381
23381
  }
23382
23382
  if (i > j) {
@@ -23607,7 +23607,7 @@ function acceleratedInv(a, factoryInv2) {
23607
23607
  const Ld = L.toArray();
23608
23608
  const Ud = U.toArray();
23609
23609
  const n = a.length;
23610
- const inv2 = Array.from({ length: n }, () => new Array(n).fill(0));
23610
+ const inv3 = Array.from({ length: n }, () => new Array(n).fill(0));
23611
23611
  for (let j = 0; j < n; j++) {
23612
23612
  const b = new Array(n).fill(0);
23613
23613
  for (let i = 0; i < n; i++) if (P2[i] === j) b[i] = 1;
@@ -23623,9 +23623,9 @@ function acceleratedInv(a, factoryInv2) {
23623
23623
  for (let k = i + 1; k < n; k++) s -= Ud[i][k] * x[k];
23624
23624
  x[i] = s / Ud[i][i];
23625
23625
  }
23626
- for (let i = 0; i < n; i++) inv2[i][j] = x[i];
23626
+ for (let i = 0; i < n; i++) inv3[i][j] = x[i];
23627
23627
  }
23628
- return inv2;
23628
+ return inv3;
23629
23629
  } catch {
23630
23630
  return factoryInv2(a);
23631
23631
  }
@@ -23743,7 +23743,7 @@ var dependencies98 = ["add", "multiply", "transpose"];
23743
23743
  var createCsAmd = /* @__PURE__ */ factory(
23744
23744
  name98,
23745
23745
  dependencies98,
23746
- ({ add: add2, multiply: multiply2, transpose: transpose4 }) => {
23746
+ ({ add: add3, multiply: multiply2, transpose: transpose5 }) => {
23747
23747
  function _tryWasmAmd(a, n) {
23748
23748
  const wasm = wasmLoader.getModule();
23749
23749
  if (!wasm || !a._ptr || !a._index) return null;
@@ -24037,9 +24037,9 @@ var createCsAmd = /* @__PURE__ */ factory(
24037
24037
  return P2;
24038
24038
  };
24039
24039
  function _createTargetMatrix(order, a, m, n, dense) {
24040
- const at = transpose4(a);
24040
+ const at = transpose5(a);
24041
24041
  if (order === 1 && n === m) {
24042
- return add2(a, at);
24042
+ return add3(a, at);
24043
24043
  }
24044
24044
  if (order === 2) {
24045
24045
  const tindex = at._index;
@@ -24056,7 +24056,7 @@ var createCsAmd = /* @__PURE__ */ factory(
24056
24056
  }
24057
24057
  }
24058
24058
  tptr[m] = p2;
24059
- a = transpose4(at);
24059
+ a = transpose5(at);
24060
24060
  return multiply2(at, a);
24061
24061
  }
24062
24062
  return multiply2(at, a);
@@ -24157,7 +24157,7 @@ var dependencies99 = ["transpose"];
24157
24157
  var createCsCounts = /* @__PURE__ */ factory(
24158
24158
  name99,
24159
24159
  dependencies99,
24160
- ({ transpose: transpose4 }) => {
24160
+ ({ transpose: transpose5 }) => {
24161
24161
  function _tryWasmCounts(a, parent, post, n) {
24162
24162
  const wasm = wasmLoader.getModule();
24163
24163
  if (!wasm || n < WASM_COUNTS_THRESHOLD || !a._index || !a._ptr) return null;
@@ -24219,7 +24219,7 @@ var createCsCounts = /* @__PURE__ */ factory(
24219
24219
  w[k] = -1;
24220
24220
  }
24221
24221
  const colcount = [];
24222
- const at = transpose4(a);
24222
+ const at = transpose5(a);
24223
24223
  const tindex = at._index;
24224
24224
  const tptr = at._ptr;
24225
24225
  for (k = 0; k < n; k++) {
@@ -24388,9 +24388,9 @@ var dependencies100 = ["add", "multiply", "transpose"];
24388
24388
  var createCsSqr = /* @__PURE__ */ factory(
24389
24389
  name100,
24390
24390
  dependencies100,
24391
- ({ add: add2, multiply: multiply2, transpose: transpose4 }) => {
24392
- const csAmd2 = createCsAmd({ add: add2, multiply: multiply2, transpose: transpose4 });
24393
- const csCounts2 = createCsCounts({ transpose: transpose4 });
24391
+ ({ add: add3, multiply: multiply2, transpose: transpose5 }) => {
24392
+ const csAmd2 = createCsAmd({ add: add3, multiply: multiply2, transpose: transpose5 });
24393
+ const csCounts2 = createCsCounts({ transpose: transpose5 });
24394
24394
  return function csSqr2(order, a, qr2) {
24395
24395
  const aptr = a._ptr;
24396
24396
  const asize = a._size;
@@ -25647,7 +25647,7 @@ var dependencies111 = [
25647
25647
  var createRound = /* @__PURE__ */ factory(
25648
25648
  name111,
25649
25649
  dependencies111,
25650
- ({ typed: typed3, config: config2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, BigNumber: BigNumber9, DenseMatrix: DenseMatrix6 }) => {
25650
+ ({ typed: typed3, config: config2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, BigNumber: BigNumber9, DenseMatrix: DenseMatrix6 }) => {
25651
25651
  const matAlgo11xS0s = createMatAlgo11xS0s({ typed: typed3, equalScalar: equalScalar3 });
25652
25652
  const matAlgo12xSfs = createMatAlgo12xSfs({ typed: typed3, DenseMatrix: DenseMatrix6 });
25653
25653
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
@@ -25767,7 +25767,7 @@ var createRound = /* @__PURE__ */ factory(
25767
25767
  "number | Complex | BigNumber | Fraction, SparseMatrix": typed3.referToSelf(
25768
25768
  (self) => (x, n) => {
25769
25769
  if (equalScalar3(x, 0)) {
25770
- return zeros2(n.size(), n.storage());
25770
+ return zeros4(n.size(), n.storage());
25771
25771
  }
25772
25772
  return matAlgo12xSfs(n, x, self, true);
25773
25773
  }
@@ -25775,7 +25775,7 @@ var createRound = /* @__PURE__ */ factory(
25775
25775
  "number | Complex | BigNumber | Fraction, DenseMatrix": typed3.referToSelf(
25776
25776
  (self) => (x, n) => {
25777
25777
  if (equalScalar3(x, 0)) {
25778
- return zeros2(n.size(), n.storage());
25778
+ return zeros4(n.size(), n.storage());
25779
25779
  }
25780
25780
  return matAlgo14xDs(n, x, self, true);
25781
25781
  }
@@ -26394,8 +26394,8 @@ var createSubset = /* @__PURE__ */ factory(
26394
26394
  ({
26395
26395
  typed: typed3,
26396
26396
  matrix: matrix2,
26397
- zeros: zeros2,
26398
- add: add2
26397
+ zeros: zeros4,
26398
+ add: add3
26399
26399
  }) => {
26400
26400
  const referTo = typed3.referTo;
26401
26401
  return typed3(name119, {
@@ -26454,7 +26454,7 @@ var createSubset = /* @__PURE__ */ factory(
26454
26454
  const indexSize = index.size();
26455
26455
  if (indexSize.every((d) => d > 0)) {
26456
26456
  try {
26457
- return add2(replacement, zeros2(indexSize));
26457
+ return add3(replacement, zeros4(indexSize));
26458
26458
  } catch {
26459
26459
  return replacement;
26460
26460
  }
@@ -27127,7 +27127,7 @@ var dependencies127 = ["typed", "add", "multiply", "Complex", "number"];
27127
27127
  var createZpk2tf = /* @__PURE__ */ factory(
27128
27128
  name127,
27129
27129
  dependencies127,
27130
- ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex13, number: number2 }) => {
27130
+ ({ typed: typed3, add: add3, multiply: multiply2, Complex: Complex13, number: number2 }) => {
27131
27131
  return typed3(name127, {
27132
27132
  "Array,Array,number": function(z, p, k) {
27133
27133
  return _zpk2tf(z, p, k);
@@ -27172,7 +27172,7 @@ var createZpk2tf = /* @__PURE__ */ factory(
27172
27172
  c[i] = Complex13(0, 0);
27173
27173
  for (let j = 0; j < a.length; j++) {
27174
27174
  if (i - j >= 0 && i - j < b.length) {
27175
- c[i] = add2(c[i], multiply2(a[j], b[i - j]));
27175
+ c[i] = add3(c[i], multiply2(a[j], b[i - j]));
27176
27176
  }
27177
27177
  }
27178
27178
  }
@@ -27196,7 +27196,7 @@ var dependencies128 = ["typed", "add", "unaryPlus"];
27196
27196
  var createCumSum = /* @__PURE__ */ factory(
27197
27197
  name128,
27198
27198
  dependencies128,
27199
- ({ typed: typed3, add: add2, unaryPlus: unaryPlus2 }) => {
27199
+ ({ typed: typed3, add: add3, unaryPlus: unaryPlus2 }) => {
27200
27200
  return typed3(name128, {
27201
27201
  // sum([a, b, c, d, ...])
27202
27202
  Array: _cumsum,
@@ -27237,7 +27237,7 @@ var createCumSum = /* @__PURE__ */ factory(
27237
27237
  }
27238
27238
  const sums = [unaryPlus2(array[0])];
27239
27239
  for (let i = 1; i < array.length; ++i) {
27240
- sums.push(add2(sums[i - 1], array[i]));
27240
+ sums.push(add3(sums[i - 1], array[i]));
27241
27241
  }
27242
27242
  return sums;
27243
27243
  }
@@ -27295,7 +27295,7 @@ var dependencies129 = ["typed", "config", "add", "numeric", "parseNumberWithConf
27295
27295
  var createSum = /* @__PURE__ */ factory(
27296
27296
  name129,
27297
27297
  dependencies129,
27298
- ({ typed: typed3, config: config2, add: add2, numeric: numeric2, parseNumberWithConfig: parseNumberWithConfig2 }) => {
27298
+ ({ typed: typed3, config: config2, add: add3, numeric: numeric2, parseNumberWithConfig: parseNumberWithConfig2 }) => {
27299
27299
  return typed3(name129, {
27300
27300
  // sum(string) - single string input
27301
27301
  string: function(x) {
@@ -27321,7 +27321,7 @@ var createSum = /* @__PURE__ */ factory(
27321
27321
  deepForEach2(array, function(value) {
27322
27322
  try {
27323
27323
  const converted = typeof value === "string" ? parseNumberWithConfig2(value) : value;
27324
- sum3 = sum3 === void 0 ? converted : add2(sum3, converted);
27324
+ sum3 = sum3 === void 0 ? converted : add3(sum3, converted);
27325
27325
  } catch (err) {
27326
27326
  throw improveErrorMessage(err, "sum", value);
27327
27327
  }
@@ -27334,7 +27334,7 @@ var createSum = /* @__PURE__ */ factory(
27334
27334
  function _nsumDim(array, dim) {
27335
27335
  try {
27336
27336
  const dimValue = typeof dim === "number" ? dim : dim.valueOf();
27337
- const sum3 = reduce2(array, dimValue, add2);
27337
+ const sum3 = reduce2(array, dimValue, add3);
27338
27338
  return sum3;
27339
27339
  } catch (err) {
27340
27340
  throw improveErrorMessage(err, "sum", void 0);
@@ -27604,7 +27604,7 @@ var createFloorNumber = /* @__PURE__ */ factory(
27604
27604
  var createFloor = /* @__PURE__ */ factory(
27605
27605
  name134,
27606
27606
  dependencies134,
27607
- ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6 }) => {
27607
+ ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6 }) => {
27608
27608
  const matAlgo11xS0s = createMatAlgo11xS0s({ typed: typed3, equalScalar: equalScalar3 });
27609
27609
  const matAlgo12xSfs = createMatAlgo12xSfs({ typed: typed3, DenseMatrix: DenseMatrix6 });
27610
27610
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
@@ -27692,7 +27692,7 @@ var createFloor = /* @__PURE__ */ factory(
27692
27692
  ),
27693
27693
  "number | Complex | Fraction | BigNumber, Matrix": typed3.referToSelf(
27694
27694
  (self) => (x, y) => {
27695
- if (equalScalar3(x, 0)) return zeros2(y.size(), y.storage());
27695
+ if (equalScalar3(x, 0)) return zeros4(y.size(), y.storage());
27696
27696
  if (y.storage() === "dense") {
27697
27697
  return matAlgo14xDs(y, x, self, true);
27698
27698
  }
@@ -27817,14 +27817,14 @@ var dependencies136 = [
27817
27817
  var createMod = /* @__PURE__ */ factory(
27818
27818
  name136,
27819
27819
  dependencies136,
27820
- ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
27820
+ ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
27821
27821
  const floor2 = createFloor({
27822
27822
  typed: typed3,
27823
27823
  config: config2,
27824
27824
  round: round2,
27825
27825
  matrix: matrix2,
27826
27826
  equalScalar: equalScalar3,
27827
- zeros: zeros2,
27827
+ zeros: zeros4,
27828
27828
  DenseMatrix: DenseMatrix6
27829
27829
  });
27830
27830
  const matAlgo02xDS0 = createMatAlgo02xDS0({ typed: typed3, equalScalar: equalScalar3 });
@@ -28121,7 +28121,7 @@ var createGcd = /* @__PURE__ */ factory(
28121
28121
  config: config2,
28122
28122
  round: round2,
28123
28123
  equalScalar: equalScalar3,
28124
- zeros: zeros2,
28124
+ zeros: zeros4,
28125
28125
  BigNumber: BigNumber9,
28126
28126
  DenseMatrix: DenseMatrix6,
28127
28127
  concat: concat3
@@ -28132,7 +28132,7 @@ var createGcd = /* @__PURE__ */ factory(
28132
28132
  round: round2,
28133
28133
  matrix: matrix2,
28134
28134
  equalScalar: equalScalar3,
28135
- zeros: zeros2,
28135
+ zeros: zeros4,
28136
28136
  DenseMatrix: DenseMatrix6,
28137
28137
  concat: concat3
28138
28138
  });
@@ -28518,8 +28518,8 @@ var createNthRoot = /* @__PURE__ */ factory(
28518
28518
  const Big = BigNumber9.clone({ precision: precision + 2 });
28519
28519
  const zero = new BigNumber9(0);
28520
28520
  const one = new Big(1);
28521
- const inv2 = root2.isNegative();
28522
- if (inv2) {
28521
+ const inv3 = root2.isNegative();
28522
+ if (inv3) {
28523
28523
  root2 = root2.neg();
28524
28524
  }
28525
28525
  if (root2.isZero()) {
@@ -28529,14 +28529,14 @@ var createNthRoot = /* @__PURE__ */ factory(
28529
28529
  throw new Error("Root must be odd when a is negative.");
28530
28530
  }
28531
28531
  if (a.isZero()) {
28532
- return inv2 ? new Big(Infinity) : 0;
28532
+ return inv3 ? new Big(Infinity) : 0;
28533
28533
  }
28534
28534
  if (!a.isFinite()) {
28535
- return inv2 ? zero : a;
28535
+ return inv3 ? zero : a;
28536
28536
  }
28537
28537
  let x = a.abs().pow(one.div(root2));
28538
28538
  x = a.isNeg() ? x.neg() : x;
28539
- return new BigNumber9((inv2 ? one.div(x) : x).toPrecision(precision));
28539
+ return new BigNumber9((inv3 ? one.div(x) : x).toPrecision(precision));
28540
28540
  }
28541
28541
  }
28542
28542
  );
@@ -28563,7 +28563,7 @@ var createPow = /* @__PURE__ */ factory(
28563
28563
  identity: identity2,
28564
28564
  multiply: multiply2,
28565
28565
  matrix: matrix2,
28566
- inv: inv2,
28566
+ inv: inv3,
28567
28567
  number: number2,
28568
28568
  fraction: fraction2,
28569
28569
  Complex: Complex13
@@ -28642,7 +28642,7 @@ var createPow = /* @__PURE__ */ factory(
28642
28642
  }
28643
28643
  if (y < 0) {
28644
28644
  try {
28645
- return _powArray(inv2(x), -y);
28645
+ return _powArray(inv3(x), -y);
28646
28646
  } catch (error) {
28647
28647
  if (error instanceof Error && error.message === "Cannot calculate inverse, determinant is zero") {
28648
28648
  throw new TypeError(
@@ -28705,7 +28705,7 @@ var createCeilNumber = /* @__PURE__ */ factory(
28705
28705
  var createCeil = /* @__PURE__ */ factory(
28706
28706
  name146,
28707
28707
  dependencies146,
28708
- ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6 }) => {
28708
+ ({ typed: typed3, config: config2, round: round2, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6 }) => {
28709
28709
  const matAlgo11xS0s = createMatAlgo11xS0s({ typed: typed3, equalScalar: equalScalar3 });
28710
28710
  const matAlgo12xSfs = createMatAlgo12xSfs({ typed: typed3, DenseMatrix: DenseMatrix6 });
28711
28711
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
@@ -28793,7 +28793,7 @@ var createCeil = /* @__PURE__ */ factory(
28793
28793
  ),
28794
28794
  "number | Complex | Fraction | BigNumber, Matrix": typed3.referToSelf(
28795
28795
  (self) => (x, y) => {
28796
- if (equalScalar3(x, 0)) return zeros2(y.size(), y.storage());
28796
+ if (equalScalar3(x, 0)) return zeros4(y.size(), y.storage());
28797
28797
  if (y.storage() === "dense") {
28798
28798
  return matAlgo14xDs(y, x, self, true);
28799
28799
  }
@@ -29016,7 +29016,7 @@ var dependencies151 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix",
29016
29016
  var createLeftShift = /* @__PURE__ */ factory(
29017
29017
  name151,
29018
29018
  dependencies151,
29019
- ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29019
+ ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29020
29020
  const matAlgo01xDSid = createMatAlgo01xDSid({ typed: typed3 });
29021
29021
  const matAlgo02xDS0 = createMatAlgo02xDS0({ typed: typed3, equalScalar: equalScalar3 });
29022
29022
  const matAlgo08xS0Sid = createMatAlgo08xS0Sid({ typed: typed3, equalScalar: equalScalar3 });
@@ -29057,7 +29057,7 @@ var createLeftShift = /* @__PURE__ */ factory(
29057
29057
  "number | BigNumber, SparseMatrix": typed3.referToSelf(
29058
29058
  (self) => (x, y) => {
29059
29059
  if (equalScalar3(x, 0)) {
29060
- return zeros2(y.size(), y.storage());
29060
+ return zeros4(y.size(), y.storage());
29061
29061
  }
29062
29062
  return matAlgo10xSids(y, x, self, true);
29063
29063
  }
@@ -29065,7 +29065,7 @@ var createLeftShift = /* @__PURE__ */ factory(
29065
29065
  "number | BigNumber, DenseMatrix": typed3.referToSelf(
29066
29066
  (self) => (x, y) => {
29067
29067
  if (equalScalar3(x, 0)) {
29068
- return zeros2(y.size(), y.storage());
29068
+ return zeros4(y.size(), y.storage());
29069
29069
  }
29070
29070
  return matAlgo14xDs(y, x, self, true);
29071
29071
  }
@@ -29087,7 +29087,7 @@ var dependencies152 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix",
29087
29087
  var createRightArithShift = /* @__PURE__ */ factory(
29088
29088
  name152,
29089
29089
  dependencies152,
29090
- ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29090
+ ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29091
29091
  const matAlgo01xDSid = createMatAlgo01xDSid({ typed: typed3 });
29092
29092
  const matAlgo02xDS0 = createMatAlgo02xDS0({ typed: typed3, equalScalar: equalScalar3 });
29093
29093
  const matAlgo08xS0Sid = createMatAlgo08xS0Sid({ typed: typed3, equalScalar: equalScalar3 });
@@ -29128,7 +29128,7 @@ var createRightArithShift = /* @__PURE__ */ factory(
29128
29128
  "number | BigNumber, SparseMatrix": typed3.referToSelf(
29129
29129
  (self) => (x, y) => {
29130
29130
  if (equalScalar3(x, 0)) {
29131
- return zeros2(y.size(), y.storage());
29131
+ return zeros4(y.size(), y.storage());
29132
29132
  }
29133
29133
  return matAlgo10xSids(y, x, self, true);
29134
29134
  }
@@ -29136,7 +29136,7 @@ var createRightArithShift = /* @__PURE__ */ factory(
29136
29136
  "number | BigNumber, DenseMatrix": typed3.referToSelf(
29137
29137
  (self) => (x, y) => {
29138
29138
  if (equalScalar3(x, 0)) {
29139
- return zeros2(y.size(), y.storage());
29139
+ return zeros4(y.size(), y.storage());
29140
29140
  }
29141
29141
  return matAlgo14xDs(y, x, self, true);
29142
29142
  }
@@ -29158,7 +29158,7 @@ var dependencies153 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix",
29158
29158
  var createRightLogShift = /* @__PURE__ */ factory(
29159
29159
  name153,
29160
29160
  dependencies153,
29161
- ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29161
+ ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6, concat: concat3 }) => {
29162
29162
  const matAlgo01xDSid = createMatAlgo01xDSid({ typed: typed3 });
29163
29163
  const matAlgo02xDS0 = createMatAlgo02xDS0({ typed: typed3, equalScalar: equalScalar3 });
29164
29164
  const matAlgo08xS0Sid = createMatAlgo08xS0Sid({ typed: typed3, equalScalar: equalScalar3 });
@@ -29198,7 +29198,7 @@ var createRightLogShift = /* @__PURE__ */ factory(
29198
29198
  "number | BigNumber, SparseMatrix": typed3.referToSelf(
29199
29199
  (self) => (x, y) => {
29200
29200
  if (equalScalar3(x, 0)) {
29201
- return zeros2(y.size(), y.storage());
29201
+ return zeros4(y.size(), y.storage());
29202
29202
  }
29203
29203
  return matAlgo10xSids(y, x, self, true);
29204
29204
  }
@@ -29206,7 +29206,7 @@ var createRightLogShift = /* @__PURE__ */ factory(
29206
29206
  "number | BigNumber, DenseMatrix": typed3.referToSelf(
29207
29207
  (self) => (x, y) => {
29208
29208
  if (equalScalar3(x, 0)) {
29209
- return zeros2(y.size(), y.storage());
29209
+ return zeros4(y.size(), y.storage());
29210
29210
  }
29211
29211
  return matAlgo14xDs(y, x, self, true);
29212
29212
  }
@@ -29897,7 +29897,7 @@ var createFixNumber = /* @__PURE__ */ factory(
29897
29897
  var createFix = /* @__PURE__ */ factory(
29898
29898
  name167,
29899
29899
  dependencies167,
29900
- ({ typed: typed3, Complex: Complex13, matrix: matrix2, ceil: ceil2, floor: floor2, equalScalar: equalScalar3, zeros: zeros2, DenseMatrix: DenseMatrix6 }) => {
29900
+ ({ typed: typed3, Complex: Complex13, matrix: matrix2, ceil: ceil2, floor: floor2, equalScalar: equalScalar3, zeros: zeros4, DenseMatrix: DenseMatrix6 }) => {
29901
29901
  const matAlgo12xSfs = createMatAlgo12xSfs({ typed: typed3, DenseMatrix: DenseMatrix6 });
29902
29902
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
29903
29903
  const fixNumber = createFixNumber({ typed: typed3, ceil: ceil2, floor: floor2 });
@@ -29972,7 +29972,7 @@ var createFix = /* @__PURE__ */ factory(
29972
29972
  ),
29973
29973
  "number | Complex | Fraction | BigNumber, Matrix": typed3.referToSelf(
29974
29974
  (self) => (x, y) => {
29975
- if (equalScalar3(x, 0)) return zeros2(y.size(), y.storage());
29975
+ if (equalScalar3(x, 0)) return zeros4(y.size(), y.storage());
29976
29976
  if (y.storage() === "dense") {
29977
29977
  return matAlgo14xDs(y, x, self, true);
29978
29978
  }
@@ -29996,7 +29996,7 @@ var createInvmod = /* @__PURE__ */ factory(
29996
29996
  equal: equal2,
29997
29997
  smaller: smaller2,
29998
29998
  mod: mod2,
29999
- add: add2,
29999
+ add: add3,
30000
30000
  isInteger: isInteger3
30001
30001
  }) => {
30002
30002
  return typed3(name168, {
@@ -30012,9 +30012,9 @@ var createInvmod = /* @__PURE__ */ factory(
30012
30012
  const resVal = res.valueOf();
30013
30013
  const [gcd2, invValue] = resVal;
30014
30014
  if (!equal2(gcd2, 1)) return NaN;
30015
- let inv2 = mod2(invValue, b);
30016
- if (smaller2(inv2, 0)) inv2 = add2(inv2, b);
30017
- return inv2;
30015
+ let inv3 = mod2(invValue, b);
30016
+ if (smaller2(inv3, 0)) inv3 = add3(inv3, b);
30017
+ return inv3;
30018
30018
  }
30019
30019
  }
30020
30020
  );
@@ -30025,7 +30025,7 @@ var dependencies169 = ["typed", "matrix", "equalScalar", "zeros", "not", "concat
30025
30025
  var createAnd = /* @__PURE__ */ factory(
30026
30026
  name169,
30027
30027
  dependencies169,
30028
- ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros2, not: not3, concat: concat3 }) => {
30028
+ ({ typed: typed3, matrix: matrix2, equalScalar: equalScalar3, zeros: zeros4, not: not3, concat: concat3 }) => {
30029
30029
  const matAlgo02xDS0 = createMatAlgo02xDS0({ typed: typed3, equalScalar: equalScalar3 });
30030
30030
  const matAlgo06xS0S0 = createMatAlgo06xS0S0({ typed: typed3, equalScalar: equalScalar3 });
30031
30031
  const matAlgo11xS0s = createMatAlgo11xS0s({ typed: typed3, equalScalar: equalScalar3 });
@@ -30052,7 +30052,7 @@ var createAnd = /* @__PURE__ */ factory(
30052
30052
  "SparseMatrix, any": typed3.referToSelf(
30053
30053
  (self) => (x, y) => {
30054
30054
  if (not3(y)) {
30055
- return zeros2(x.size(), x.storage());
30055
+ return zeros4(x.size(), x.storage());
30056
30056
  }
30057
30057
  return matAlgo11xS0s(x, y, self, false);
30058
30058
  }
@@ -30060,7 +30060,7 @@ var createAnd = /* @__PURE__ */ factory(
30060
30060
  "DenseMatrix, any": typed3.referToSelf(
30061
30061
  (self) => (x, y) => {
30062
30062
  if (not3(y)) {
30063
- return zeros2(x.size(), x.storage());
30063
+ return zeros4(x.size(), x.storage());
30064
30064
  }
30065
30065
  return matAlgo14xDs(x, y, self, false);
30066
30066
  }
@@ -30068,7 +30068,7 @@ var createAnd = /* @__PURE__ */ factory(
30068
30068
  "any, SparseMatrix": typed3.referToSelf(
30069
30069
  (self) => (x, y) => {
30070
30070
  if (not3(x)) {
30071
- return zeros2(y.size(), y.storage());
30071
+ return zeros4(y.size(), y.storage());
30072
30072
  }
30073
30073
  return matAlgo11xS0s(y, x, self, true);
30074
30074
  }
@@ -30076,7 +30076,7 @@ var createAnd = /* @__PURE__ */ factory(
30076
30076
  "any, DenseMatrix": typed3.referToSelf(
30077
30077
  (self) => (x, y) => {
30078
30078
  if (not3(x)) {
30079
- return zeros2(y.size(), y.storage());
30079
+ return zeros4(y.size(), y.storage());
30080
30080
  }
30081
30081
  return matAlgo14xDs(y, x, self, true);
30082
30082
  }
@@ -30266,15 +30266,15 @@ var createPinv = /* @__PURE__ */ factory(
30266
30266
  ({
30267
30267
  typed: typed3,
30268
30268
  matrix: matrix2,
30269
- inv: inv2,
30269
+ inv: inv3,
30270
30270
  deepEqual: deepEqual3,
30271
30271
  equal: equal2,
30272
30272
  dotDivide: dotDivide2,
30273
- dot: dot5,
30273
+ dot: dot7,
30274
30274
  ctranspose: ctranspose2,
30275
30275
  divideScalar: divideScalar2,
30276
30276
  multiply: multiply2,
30277
- add: add2,
30277
+ add: add3,
30278
30278
  Complex: Complex13
30279
30279
  }) => {
30280
30280
  return typed3(name172, {
@@ -30284,9 +30284,9 @@ var createPinv = /* @__PURE__ */ factory(
30284
30284
  case 1:
30285
30285
  if (_isZeros(x)) return ctranspose2(x);
30286
30286
  if (size2[0] === 1) {
30287
- return inv2(x);
30287
+ return inv3(x);
30288
30288
  } else {
30289
- return dotDivide2(ctranspose2(x), dot5(x, x));
30289
+ return dotDivide2(ctranspose2(x), dot7(x, x));
30290
30290
  }
30291
30291
  case 2: {
30292
30292
  if (_isZeros(x)) return ctranspose2(x);
@@ -30294,7 +30294,7 @@ var createPinv = /* @__PURE__ */ factory(
30294
30294
  const cols = size2[1];
30295
30295
  if (rows === cols) {
30296
30296
  try {
30297
- return inv2(x);
30297
+ return inv3(x);
30298
30298
  } catch (err) {
30299
30299
  if (err instanceof Error && err.message.match(/Cannot calculate inverse, determinant is zero/)) {
30300
30300
  } else {
@@ -30325,8 +30325,8 @@ var createPinv = /* @__PURE__ */ factory(
30325
30325
  });
30326
30326
  function _pinv(mat, rows, cols) {
30327
30327
  const { C, F } = _rankFact(mat, rows, cols);
30328
- const Cpinv = multiply2(inv2(multiply2(ctranspose2(C), C)), ctranspose2(C));
30329
- const Fpinv = multiply2(ctranspose2(F), inv2(multiply2(F, ctranspose2(F))));
30328
+ const Cpinv = multiply2(inv3(multiply2(ctranspose2(C), C)), ctranspose2(C));
30329
+ const Fpinv = multiply2(ctranspose2(F), inv3(multiply2(F, ctranspose2(F))));
30330
30330
  return multiply2(Fpinv, Cpinv);
30331
30331
  }
30332
30332
  function _rref(mat, rows, cols) {
@@ -30356,7 +30356,7 @@ var createPinv = /* @__PURE__ */ factory(
30356
30356
  if (i2 === r) continue;
30357
30357
  val = M[i2][lead];
30358
30358
  for (let j = 0; j < cols; j++) {
30359
- M[i2][j] = add2(M[i2][j], multiply2(-1, multiply2(val, M[r][j])));
30359
+ M[i2][j] = add3(M[i2][j], multiply2(-1, multiply2(val, M[r][j])));
30360
30360
  }
30361
30361
  }
30362
30362
  lead++;
@@ -30365,17 +30365,17 @@ var createPinv = /* @__PURE__ */ factory(
30365
30365
  }
30366
30366
  function _rankFact(mat, rows, cols) {
30367
30367
  const rref = _rref(mat, rows, cols);
30368
- const C = mat.map((row2) => row2.filter((_, j) => j < rows && !_isZero(dot5(rref[j], rref[j]))));
30369
- const F = rref.filter((_, i) => !_isZero(dot5(rref[i], rref[i])));
30368
+ const C = mat.map((row2) => row2.filter((_, j) => j < rows && !_isZero(dot7(rref[j], rref[j]))));
30369
+ const F = rref.filter((_, i) => !_isZero(dot7(rref[i], rref[i])));
30370
30370
  return { C, F };
30371
30371
  }
30372
30372
  function _isZero(x) {
30373
- return equal2(add2(x, Complex13(1, 1)), add2(0, Complex13(1, 1)));
30373
+ return equal2(add3(x, Complex13(1, 1)), add3(0, Complex13(1, 1)));
30374
30374
  }
30375
30375
  function _isZeros(arr10) {
30376
30376
  return deepEqual3(
30377
- add2(arr10, Complex13(1, 1)),
30378
- add2(multiply2(arr10, 0), Complex13(1, 1))
30377
+ add3(arr10, Complex13(1, 1)),
30378
+ add3(multiply2(arr10, 0), Complex13(1, 1))
30379
30379
  );
30380
30380
  }
30381
30381
  }
@@ -30427,7 +30427,7 @@ var createQr = /* @__PURE__ */ factory(
30427
30427
  ({
30428
30428
  typed: typed3,
30429
30429
  matrix: matrix2,
30430
- zeros: zeros2,
30430
+ zeros: zeros4,
30431
30431
  identity: identity2,
30432
30432
  isZero: isZero2,
30433
30433
  equal: equal2,
@@ -30505,7 +30505,7 @@ var createQr = /* @__PURE__ */ factory(
30505
30505
  const R = m.clone();
30506
30506
  const Rdata = R._data;
30507
30507
  let i, j, k;
30508
- const w = zeros2([rows], "");
30508
+ const w = zeros4([rows], "");
30509
30509
  for (k = 0; k < Math.min(cols, rows); ++k) {
30510
30510
  const pivot = Rdata[k][k];
30511
30511
  const sgn = unaryMinus2(equal2(pivot, 0) ? 1 : sign3(pivot));
@@ -30606,7 +30606,7 @@ var createRange = /* @__PURE__ */ factory(
30606
30606
  smallerEq: smallerEq2,
30607
30607
  larger: larger2,
30608
30608
  largerEq: largerEq2,
30609
- add: add2,
30609
+ add: add3,
30610
30610
  isZero: isZero2,
30611
30611
  isPositive: isPositive2
30612
30612
  }) => {
@@ -30719,7 +30719,7 @@ var createRange = /* @__PURE__ */ factory(
30719
30719
  let x = start;
30720
30720
  while (ongoing(x, end)) {
30721
30721
  array.push(x);
30722
- x = add2(x, step);
30722
+ x = add3(x, step);
30723
30723
  }
30724
30724
  return array;
30725
30725
  }
@@ -33204,7 +33204,7 @@ var dependencies199 = [
33204
33204
  var createDivide = /* @__PURE__ */ factory(
33205
33205
  name199,
33206
33206
  dependencies199,
33207
- ({ typed: typed3, matrix: matrix2, multiply: multiply2, equalScalar: equalScalar3, divideScalar: divideScalar2, inv: inv2, nodeOperations: nodeOperations2 }) => {
33207
+ ({ typed: typed3, matrix: matrix2, multiply: multiply2, equalScalar: equalScalar3, divideScalar: divideScalar2, inv: inv3, nodeOperations: nodeOperations2 }) => {
33208
33208
  const matAlgo11xS0s = createMatAlgo11xS0s({ typed: typed3, equalScalar: equalScalar3 });
33209
33209
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
33210
33210
  return typed3(
@@ -33232,7 +33232,7 @@ var createDivide = /* @__PURE__ */ factory(
33232
33232
  // MATRIX SIGNATURES - Deal with matrices
33233
33233
  // =========================================================================
33234
33234
  "Array | Matrix, Array | Matrix": function(x, y) {
33235
- return multiply2(x, inv2(y));
33235
+ return multiply2(x, inv3(y));
33236
33236
  },
33237
33237
  "DenseMatrix, any": function(x, y) {
33238
33238
  return matAlgo14xDs(
@@ -33259,7 +33259,7 @@ var createDivide = /* @__PURE__ */ factory(
33259
33259
  ).valueOf();
33260
33260
  },
33261
33261
  "any, Array | Matrix": function(x, y) {
33262
- return multiply2(x, inv2(y));
33262
+ return multiply2(x, inv3(y));
33263
33263
  }
33264
33264
  },
33265
33265
  divideScalar2.signatures
@@ -34245,7 +34245,7 @@ var createCross = /* @__PURE__ */ factory(
34245
34245
  ({
34246
34246
  typed: typed3,
34247
34247
  matrix: matrix2,
34248
- subtract: subtract2,
34248
+ subtract: subtract3,
34249
34249
  multiply: multiply2
34250
34250
  }) => {
34251
34251
  return typed3(name209, {
@@ -34272,9 +34272,9 @@ var createCross = /* @__PURE__ */ factory(
34272
34272
  );
34273
34273
  }
34274
34274
  const product3 = [
34275
- subtract2(multiply2(x[1], y[2]), multiply2(x[2], y[1])),
34276
- subtract2(multiply2(x[2], y[0]), multiply2(x[0], y[2])),
34277
- subtract2(multiply2(x[0], y[1]), multiply2(x[1], y[0]))
34275
+ subtract3(multiply2(x[1], y[2]), multiply2(x[2], y[1])),
34276
+ subtract3(multiply2(x[2], y[0]), multiply2(x[0], y[2])),
34277
+ subtract3(multiply2(x[0], y[1]), multiply2(x[1], y[0]))
34278
34278
  ];
34279
34279
  if (highestDimension > 1) {
34280
34280
  return [product3];
@@ -34294,7 +34294,7 @@ var createDiff = /* @__PURE__ */ factory(
34294
34294
  ({
34295
34295
  typed: typed3,
34296
34296
  matrix: matrix2,
34297
- subtract: subtract2,
34297
+ subtract: subtract3,
34298
34298
  number: number2
34299
34299
  }) => {
34300
34300
  return typed3(name210, {
@@ -34355,7 +34355,7 @@ var createDiff = /* @__PURE__ */ factory(
34355
34355
  return _ArrayDiff(obj1, obj2);
34356
34356
  }
34357
34357
  if (!obj1IsArray && !obj2IsArray) {
34358
- return subtract2(obj2, obj1);
34358
+ return subtract3(obj2, obj1);
34359
34359
  }
34360
34360
  throw TypeError("Cannot calculate difference between 1 array and 1 non-array");
34361
34361
  }
@@ -34392,7 +34392,7 @@ var dependencies211 = [
34392
34392
  var createSqrtm = /* @__PURE__ */ factory(
34393
34393
  name211,
34394
34394
  dependencies211,
34395
- ({ typed: typed3, abs: abs2, add: add2, multiply: multiply2, map: map2, sqrt: sqrt2, subtract: subtract2, inv: inv2, size: size2, max: max2, identity: identity2 }) => {
34395
+ ({ typed: typed3, abs: abs2, add: add3, multiply: multiply2, map: map2, sqrt: sqrt2, subtract: subtract3, inv: inv3, size: size2, max: max2, identity: identity2 }) => {
34396
34396
  const _maxIterations = 1e3;
34397
34397
  const _tolerance = 1e-6;
34398
34398
  function _tryWasmSqrtm(A, n) {
@@ -34458,9 +34458,9 @@ var createSqrtm = /* @__PURE__ */ factory(
34458
34458
  let Z = identity2(size2(A));
34459
34459
  do {
34460
34460
  const Yk = Y;
34461
- Y = multiply2(0.5, add2(Yk, inv2(Z)));
34462
- Z = multiply2(0.5, add2(Z, inv2(Yk)));
34463
- error = max2(abs2(subtract2(Y, Yk)));
34461
+ Y = multiply2(0.5, add3(Yk, inv3(Z)));
34462
+ Z = multiply2(0.5, add3(Z, inv3(Yk)));
34463
+ error = max2(abs2(subtract3(Y, Yk)));
34464
34464
  if (error > _tolerance && ++iterations > _maxIterations) {
34465
34465
  throw new Error("computing square root of matrix: iterative method could not converge");
34466
34466
  }
@@ -34924,7 +34924,7 @@ var dependencies213 = ["divideScalar", "multiply", "subtract"];
34924
34924
  var createCsSpsolve = /* @__PURE__ */ factory(
34925
34925
  name213,
34926
34926
  dependencies213,
34927
- ({ divideScalar: divideScalar2, multiply: multiply2, subtract: subtract2 }) => {
34927
+ ({ divideScalar: divideScalar2, multiply: multiply2, subtract: subtract3 }) => {
34928
34928
  return function csSpsolve2(g, b, k, xi, x, pinv2, lo) {
34929
34929
  const gvalues = g._values;
34930
34930
  const gindex = g._index;
@@ -34955,7 +34955,7 @@ var createCsSpsolve = /* @__PURE__ */ factory(
34955
34955
  q = lo ? p1 : p1 - 1;
34956
34956
  for (; p < q; p++) {
34957
34957
  const i = gindex[p];
34958
- x[i] = subtract2(x[i], multiply2(gvalues[p], x[j]));
34958
+ x[i] = subtract3(x[i], multiply2(gvalues[p], x[j]));
34959
34959
  }
34960
34960
  }
34961
34961
  return top;
@@ -34977,8 +34977,8 @@ var dependencies214 = [
34977
34977
  var createCsLu = /* @__PURE__ */ factory(
34978
34978
  name214,
34979
34979
  dependencies214,
34980
- ({ abs: abs2, divideScalar: divideScalar2, multiply: multiply2, subtract: subtract2, larger: larger2, largerEq: largerEq2, SparseMatrix }) => {
34981
- const csSpsolve2 = createCsSpsolve({ divideScalar: divideScalar2, multiply: multiply2, subtract: subtract2 });
34980
+ ({ abs: abs2, divideScalar: divideScalar2, multiply: multiply2, subtract: subtract3, larger: larger2, largerEq: largerEq2, SparseMatrix }) => {
34981
+ const csSpsolve2 = createCsSpsolve({ divideScalar: divideScalar2, multiply: multiply2, subtract: subtract3 });
34982
34982
  return function csLu2(m, s, tol) {
34983
34983
  if (!m) {
34984
34984
  return null;
@@ -35097,21 +35097,21 @@ var createSlu = /* @__PURE__ */ factory(
35097
35097
  ({
35098
35098
  typed: typed3,
35099
35099
  abs: abs2,
35100
- add: add2,
35100
+ add: add3,
35101
35101
  multiply: multiply2,
35102
- transpose: transpose4,
35102
+ transpose: transpose5,
35103
35103
  divideScalar: divideScalar2,
35104
- subtract: subtract2,
35104
+ subtract: subtract3,
35105
35105
  larger: larger2,
35106
35106
  largerEq: largerEq2,
35107
35107
  SparseMatrix
35108
35108
  }) => {
35109
- const csSqr2 = createCsSqr({ add: add2, multiply: multiply2, transpose: transpose4 });
35109
+ const csSqr2 = createCsSqr({ add: add3, multiply: multiply2, transpose: transpose5 });
35110
35110
  const csLu2 = createCsLu({
35111
35111
  abs: abs2,
35112
35112
  divideScalar: divideScalar2,
35113
35113
  multiply: multiply2,
35114
- subtract: subtract2,
35114
+ subtract: subtract3,
35115
35115
  larger: larger2,
35116
35116
  largerEq: largerEq2,
35117
35117
  SparseMatrix
@@ -35197,7 +35197,7 @@ var createCsChol = /* @__PURE__ */ factory(
35197
35197
  ({
35198
35198
  divideScalar: divideScalar2,
35199
35199
  sqrt: sqrt2,
35200
- subtract: subtract2,
35200
+ subtract: subtract3,
35201
35201
  multiply: multiply2,
35202
35202
  im: im3,
35203
35203
  re: re3,
@@ -35251,9 +35251,9 @@ var createCsChol = /* @__PURE__ */ factory(
35251
35251
  x[i] = 0;
35252
35252
  for (p = lptr[i] + 1; p < c[i]; p++) {
35253
35253
  const r = lindex[p];
35254
- x[r] = subtract2(x[r], multiply2(lvalues[p], lki));
35254
+ x[r] = subtract3(x[r], multiply2(lvalues[p], lki));
35255
35255
  }
35256
- d = subtract2(d, multiply2(lki, conj3(lki)));
35256
+ d = subtract3(d, multiply2(lki, conj3(lki)));
35257
35257
  p = c[i]++;
35258
35258
  lindex[p] = k;
35259
35259
  lvalues[p] = conj3(lki);
@@ -35411,13 +35411,13 @@ var createIntersect = /* @__PURE__ */ factory(
35411
35411
  typed: typed3,
35412
35412
  config: config2,
35413
35413
  abs: abs2,
35414
- add: add2,
35414
+ add: add3,
35415
35415
  addScalar: addScalar2,
35416
35416
  matrix: matrix2,
35417
35417
  multiply: multiply2,
35418
35418
  multiplyScalar: multiplyScalar2,
35419
35419
  divideScalar: divideScalar2,
35420
- subtract: subtract2,
35420
+ subtract: subtract3,
35421
35421
  smaller: smaller2,
35422
35422
  equalScalar: equalScalar3,
35423
35423
  flatten: flatten4,
@@ -35530,9 +35530,9 @@ var createIntersect = /* @__PURE__ */ factory(
35530
35530
  if (wasmResult !== void 0) return wasmResult;
35531
35531
  const o1 = p1a;
35532
35532
  const o2 = p2a;
35533
- const d1 = subtract2(o1, p1b);
35534
- const d2 = subtract2(o2, p2b);
35535
- const det2 = subtract2(
35533
+ const d1 = subtract3(o1, p1b);
35534
+ const d2 = subtract3(o2, p2b);
35535
+ const det2 = subtract3(
35536
35536
  multiplyScalar2(d1[0], d2[1]),
35537
35537
  multiplyScalar2(d2[0], d1[1])
35538
35538
  );
@@ -35546,12 +35546,12 @@ var createIntersect = /* @__PURE__ */ factory(
35546
35546
  const d21o20 = multiplyScalar2(d2[1], o2[0]);
35547
35547
  const t = divideScalar2(
35548
35548
  addScalar2(
35549
- subtract2(subtract2(d20o11, d21o10), d20o21),
35549
+ subtract3(subtract3(d20o11, d21o10), d20o21),
35550
35550
  d21o20
35551
35551
  ),
35552
35552
  det2
35553
35553
  );
35554
- return add2(multiply2(d1, t), o1);
35554
+ return add3(multiply2(d1, t), o1);
35555
35555
  }
35556
35556
  function _tryWasmIntersect2d(p1a, p1b, p2a, p2b) {
35557
35557
  const wasm = wasmLoader.getModule();
@@ -35583,18 +35583,18 @@ var createIntersect = /* @__PURE__ */ factory(
35583
35583
  }
35584
35584
  function _intersect3dHelper(a, b, c, d, e, f, g, h, i, j, k, l) {
35585
35585
  const add1 = multiplyScalar2(
35586
- subtract2(a, b),
35587
- subtract2(c, d)
35586
+ subtract3(a, b),
35587
+ subtract3(c, d)
35588
35588
  );
35589
35589
  const add22 = multiplyScalar2(
35590
- subtract2(e, f),
35591
- subtract2(g, h)
35590
+ subtract3(e, f),
35591
+ subtract3(g, h)
35592
35592
  );
35593
- const add3 = multiplyScalar2(
35594
- subtract2(i, j),
35595
- subtract2(k, l)
35593
+ const add32 = multiplyScalar2(
35594
+ subtract3(i, j),
35595
+ subtract3(k, l)
35596
35596
  );
35597
- return addScalar2(addScalar2(add1, add22), add3);
35597
+ return addScalar2(addScalar2(add1, add22), add32);
35598
35598
  }
35599
35599
  function _intersect3d(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) {
35600
35600
  const d1343 = _intersect3dHelper(x1, x3, x4, x3, y1, y3, y4, y3, z1, z3, z4, z3);
@@ -35602,23 +35602,23 @@ var createIntersect = /* @__PURE__ */ factory(
35602
35602
  const d1321 = _intersect3dHelper(x1, x3, x2, x1, y1, y3, y2, y1, z1, z3, z2, z1);
35603
35603
  const d4343 = _intersect3dHelper(x4, x3, x4, x3, y4, y3, y4, y3, z4, z3, z4, z3);
35604
35604
  const d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);
35605
- const numerator = subtract2(
35605
+ const numerator = subtract3(
35606
35606
  multiplyScalar2(d1343, d4321),
35607
35607
  multiplyScalar2(d1321, d4343)
35608
35608
  );
35609
- const denominator = subtract2(
35609
+ const denominator = subtract3(
35610
35610
  multiplyScalar2(d2121, d4343),
35611
35611
  multiplyScalar2(d4321, d4321)
35612
35612
  );
35613
35613
  if (isZero2(denominator)) return null;
35614
35614
  const ta = divideScalar2(numerator, denominator);
35615
35615
  const tb = divideScalar2(addScalar2(d1343, multiplyScalar2(ta, d4321)), d4343);
35616
- const pax = addScalar2(x1, multiplyScalar2(ta, subtract2(x2, x1)));
35617
- const pay = addScalar2(y1, multiplyScalar2(ta, subtract2(y2, y1)));
35618
- const paz = addScalar2(z1, multiplyScalar2(ta, subtract2(z2, z1)));
35619
- const pbx = addScalar2(x3, multiplyScalar2(tb, subtract2(x4, x3)));
35620
- const pby = addScalar2(y3, multiplyScalar2(tb, subtract2(y4, y3)));
35621
- const pbz = addScalar2(z3, multiplyScalar2(tb, subtract2(z4, z3)));
35616
+ const pax = addScalar2(x1, multiplyScalar2(ta, subtract3(x2, x1)));
35617
+ const pay = addScalar2(y1, multiplyScalar2(ta, subtract3(y2, y1)));
35618
+ const paz = addScalar2(z1, multiplyScalar2(ta, subtract3(z2, z1)));
35619
+ const pbx = addScalar2(x3, multiplyScalar2(tb, subtract3(x4, x3)));
35620
+ const pby = addScalar2(y3, multiplyScalar2(tb, subtract3(y4, y3)));
35621
+ const pbz = addScalar2(z3, multiplyScalar2(tb, subtract3(z4, z3)));
35622
35622
  if (equalScalar3(pax, pbx) && equalScalar3(pay, pby) && equalScalar3(paz, pbz)) {
35623
35623
  return [pax, pay, paz];
35624
35624
  } else {
@@ -35632,21 +35632,21 @@ var createIntersect = /* @__PURE__ */ factory(
35632
35632
  const y2y = multiplyScalar2(y2, y);
35633
35633
  const z1z = multiplyScalar2(z1, z);
35634
35634
  const z2z = multiplyScalar2(z2, z);
35635
- const numerator = subtract2(
35636
- subtract2(subtract2(c, x1x), y1y),
35635
+ const numerator = subtract3(
35636
+ subtract3(subtract3(c, x1x), y1y),
35637
35637
  z1z
35638
35638
  );
35639
- const denominator = subtract2(
35640
- subtract2(
35641
- subtract2(addScalar2(addScalar2(x2x, y2y), z2z), x1x),
35639
+ const denominator = subtract3(
35640
+ subtract3(
35641
+ subtract3(addScalar2(addScalar2(x2x, y2y), z2z), x1x),
35642
35642
  y1y
35643
35643
  ),
35644
35644
  z1z
35645
35645
  );
35646
35646
  const t = divideScalar2(numerator, denominator);
35647
- const px = addScalar2(x1, multiplyScalar2(t, subtract2(x2, x1)));
35648
- const py = addScalar2(y1, multiplyScalar2(t, subtract2(y2, y1)));
35649
- const pz = addScalar2(z1, multiplyScalar2(t, subtract2(z2, z1)));
35647
+ const px = addScalar2(x1, multiplyScalar2(t, subtract3(x2, x1)));
35648
+ const py = addScalar2(y1, multiplyScalar2(t, subtract3(y2, y1)));
35649
+ const pz = addScalar2(z1, multiplyScalar2(t, subtract3(z2, z1)));
35650
35650
  return [px, py, pz];
35651
35651
  }
35652
35652
  }
@@ -35667,7 +35667,7 @@ var dependencies219 = ["typed", "add", "divide"];
35667
35667
  var createMean = /* @__PURE__ */ factory(
35668
35668
  name219,
35669
35669
  dependencies219,
35670
- ({ typed: typed3, add: add2, divide: divide2 }) => {
35670
+ ({ typed: typed3, add: add3, divide: divide2 }) => {
35671
35671
  return typed3(name219, {
35672
35672
  // mean([a, b, c, d, ...])
35673
35673
  "Array | Matrix": _mean2,
@@ -35684,7 +35684,7 @@ var createMean = /* @__PURE__ */ factory(
35684
35684
  function _nmeanDim(array, dim) {
35685
35685
  try {
35686
35686
  const dimValue = typeof dim === "number" ? dim : dim.valueOf();
35687
- const sum3 = reduce2(array, dimValue, add2);
35687
+ const sum3 = reduce2(array, dimValue, add3);
35688
35688
  const s = Array.isArray(array) ? arraySize(array) : array.size();
35689
35689
  return divide2(sum3, s[dimValue]);
35690
35690
  } catch (err) {
@@ -35712,7 +35712,7 @@ var createMean = /* @__PURE__ */ factory(
35712
35712
  let num2 = 0;
35713
35713
  deepForEach2(array, function(value) {
35714
35714
  try {
35715
- sum3 = sum3 === void 0 ? value : add2(sum3, value);
35715
+ sum3 = sum3 === void 0 ? value : add3(sum3, value);
35716
35716
  num2++;
35717
35717
  } catch (err) {
35718
35718
  throw improveErrorMessage(err, "mean", value);
@@ -35732,7 +35732,7 @@ var dependencies220 = ["typed", "add", "divide", "compare", "partitionSelect"];
35732
35732
  var createMedian = /* @__PURE__ */ factory(
35733
35733
  name220,
35734
35734
  dependencies220,
35735
- ({ typed: typed3, add: add2, divide: divide2, compare: compare2, partitionSelect: partitionSelect2 }) => {
35735
+ ({ typed: typed3, add: add3, divide: divide2, compare: compare2, partitionSelect: partitionSelect2 }) => {
35736
35736
  function _median2(array) {
35737
35737
  try {
35738
35738
  const flat = flatten2(array.valueOf());
@@ -35765,7 +35765,7 @@ var createMedian = /* @__PURE__ */ factory(
35765
35765
  });
35766
35766
  const middle2 = typed3({
35767
35767
  "number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit": function(left, right) {
35768
- return divide2(add2(left, right), 2);
35768
+ return divide2(add3(left, right), 2);
35769
35769
  }
35770
35770
  });
35771
35771
  return typed3(name220, {
@@ -35804,8 +35804,8 @@ var createVariance = /* @__PURE__ */ factory(
35804
35804
  dependencies221,
35805
35805
  ({
35806
35806
  typed: typed3,
35807
- add: add2,
35808
- subtract: subtract2,
35807
+ add: add3,
35808
+ subtract: subtract3,
35809
35809
  multiply: multiply2,
35810
35810
  divide: divide2,
35811
35811
  mapSlices: mapSlices2,
@@ -35853,7 +35853,7 @@ var createVariance = /* @__PURE__ */ factory(
35853
35853
  let num2 = 0;
35854
35854
  deepForEach2(array, function(value) {
35855
35855
  try {
35856
- sum3 = sum3 === void 0 ? value : add2(sum3, value);
35856
+ sum3 = sum3 === void 0 ? value : add3(sum3, value);
35857
35857
  num2++;
35858
35858
  } catch (err) {
35859
35859
  throw improveErrorMessage(err, "variance", value);
@@ -35863,8 +35863,8 @@ var createVariance = /* @__PURE__ */ factory(
35863
35863
  const mean7 = divide2(sum3, num2);
35864
35864
  sum3 = void 0;
35865
35865
  deepForEach2(array, function(value) {
35866
- const diff2 = subtract2(value, mean7);
35867
- sum3 = sum3 === void 0 ? multiply2(diff2, diff2) : add2(sum3, multiply2(diff2, diff2));
35866
+ const diff2 = subtract3(value, mean7);
35867
+ sum3 = sum3 === void 0 ? multiply2(diff2, diff2) : add3(sum3, multiply2(diff2, diff2));
35868
35868
  });
35869
35869
  if (mathIsNaN(sum3)) {
35870
35870
  return sum3;
@@ -35924,8 +35924,8 @@ var createQuantileSeq = /* @__PURE__ */ factory(
35924
35924
  ({
35925
35925
  typed: typed3,
35926
35926
  bignumber: bignumber2,
35927
- add: add2,
35928
- subtract: subtract2,
35927
+ add: add3,
35928
+ subtract: subtract3,
35929
35929
  divide: divide2,
35930
35930
  multiply: multiply2,
35931
35931
  partitionSelect: partitionSelect2,
@@ -35967,7 +35967,7 @@ var createQuantileSeq = /* @__PURE__ */ factory(
35967
35967
  "N must be less than or equal to 2^32-1, as that is the maximum length of an Array"
35968
35968
  );
35969
35969
  }
35970
- const nPlusOne = add2(probOrN, 1);
35970
+ const nPlusOne = add3(probOrN, 1);
35971
35971
  probArr = [];
35972
35972
  for (let i = 0; smaller2(i, probOrN); i++) {
35973
35973
  const prob = divide2(i + 1, nPlusOne);
@@ -36013,8 +36013,8 @@ var createQuantileSeq = /* @__PURE__ */ factory(
36013
36013
  }
36014
36014
  }
36015
36015
  const fracPartConverted = isBigNumber(left) && isNumber(fracPart) ? bignumber2(fracPart) : fracPart;
36016
- return add2(
36017
- multiply2(left, subtract2(1, fracPartConverted)),
36016
+ return add3(
36017
+ multiply2(left, subtract3(1, fracPartConverted)),
36018
36018
  multiply2(right, fracPartConverted)
36019
36019
  );
36020
36020
  }
@@ -36105,7 +36105,7 @@ var dependencies224 = ["typed", "add", "divide", "multiply", "factorial", "isInt
36105
36105
  var createMultinomial = /* @__PURE__ */ factory(
36106
36106
  name224,
36107
36107
  dependencies224,
36108
- ({ typed: typed3, add: add2, divide: divide2, multiply: multiply2, factorial: factorial5, isInteger: isInteger3, isPositive: isPositive2 }) => {
36108
+ ({ typed: typed3, add: add3, divide: divide2, multiply: multiply2, factorial: factorial5, isInteger: isInteger3, isPositive: isPositive2 }) => {
36109
36109
  return typed3(name224, {
36110
36110
  "Array | Matrix": function(a) {
36111
36111
  let sum3 = 0;
@@ -36114,7 +36114,7 @@ var createMultinomial = /* @__PURE__ */ factory(
36114
36114
  if (!isInteger3(ai) || !isPositive2(ai)) {
36115
36115
  throw new TypeError("Positive integer value expected in function multinomial");
36116
36116
  }
36117
- sum3 = add2(sum3, ai);
36117
+ sum3 = add3(sum3, ai);
36118
36118
  denom = multiply2(denom, factorial5(ai));
36119
36119
  });
36120
36120
  return divide2(factorial5(sum3), denom);
@@ -36130,7 +36130,7 @@ var dependencies225 = ["typed", "add", "multiply", "Complex", "divide", "matrix"
36130
36130
  var createFreqz = /* @__PURE__ */ factory(
36131
36131
  name225,
36132
36132
  dependencies225,
36133
- ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex13, divide: divide2, matrix: matrix2 }) => {
36133
+ ({ typed: typed3, add: add3, multiply: multiply2, Complex: Complex13, divide: divide2, matrix: matrix2 }) => {
36134
36134
  return typed3(name225, {
36135
36135
  "Array, Array": function(b, a) {
36136
36136
  const w = createBins(512);
@@ -36224,13 +36224,13 @@ var createFreqz = /* @__PURE__ */ factory(
36224
36224
  let sumNum = Complex13(0, 0);
36225
36225
  let sumDen = Complex13(0, 0);
36226
36226
  for (let j = 0; j < b.length; j++) {
36227
- sumNum = add2(
36227
+ sumNum = add3(
36228
36228
  sumNum,
36229
36229
  multiply2(b[j], Complex13(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36230
36230
  );
36231
36231
  }
36232
36232
  for (let j = 0; j < a.length; j++) {
36233
- sumDen = add2(
36233
+ sumDen = add3(
36234
36234
  sumDen,
36235
36235
  multiply2(a[j], Complex13(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36236
36236
  );
@@ -37047,8 +37047,8 @@ var createPolynomialRoot = /* @__PURE__ */ factory(
37047
37047
  typed: typed3,
37048
37048
  isZero: isZero2,
37049
37049
  equalScalar: equalScalar3,
37050
- add: add2,
37051
- subtract: subtract2,
37050
+ add: add3,
37051
+ subtract: subtract3,
37052
37052
  multiply: multiply2,
37053
37053
  divide: divide2,
37054
37054
  sqrt: sqrt2,
@@ -37078,10 +37078,10 @@ var createPolynomialRoot = /* @__PURE__ */ factory(
37078
37078
  const d1 = multiply2(b, b);
37079
37079
  const d2 = multiply2(4, a, c);
37080
37080
  if (equalScalar3(d1, d2)) return [divide2(unaryMinus2(b), denom)];
37081
- const discriminant2 = sqrt2(subtract2(d1, d2));
37081
+ const discriminant2 = sqrt2(subtract3(d1, d2));
37082
37082
  return [
37083
- divide2(subtract2(discriminant2, b), denom),
37084
- divide2(subtract2(unaryMinus2(discriminant2), b), denom)
37083
+ divide2(subtract3(discriminant2, b), denom),
37084
+ divide2(subtract3(unaryMinus2(discriminant2), b), denom)
37085
37085
  ];
37086
37086
  }
37087
37087
  case 4: {
@@ -37089,15 +37089,15 @@ var createPolynomialRoot = /* @__PURE__ */ factory(
37089
37089
  const denom = unaryMinus2(multiply2(3, a));
37090
37090
  const D0_1 = multiply2(b, b);
37091
37091
  const D0_2 = multiply2(3, a, c);
37092
- const D1_1 = add2(multiply2(2, b, b, b), multiply2(27, a, a, d));
37092
+ const D1_1 = add3(multiply2(2, b, b, b), multiply2(27, a, a, d));
37093
37093
  const D1_2 = multiply2(9, a, b, c);
37094
37094
  if (equalScalar3(D0_1, D0_2) && equalScalar3(D1_1, D1_2)) {
37095
37095
  return [divide2(b, denom)];
37096
37096
  }
37097
- const Delta0 = subtract2(D0_1, D0_2);
37098
- const Delta1 = subtract2(D1_1, D1_2);
37099
- const discriminant1 = add2(multiply2(18, a, b, c, d), multiply2(b, b, c, c));
37100
- const discriminant2 = add2(
37097
+ const Delta0 = subtract3(D0_1, D0_2);
37098
+ const Delta1 = subtract3(D1_1, D1_2);
37099
+ const discriminant1 = add3(multiply2(18, a, b, c, d), multiply2(b, b, c, c));
37100
+ const discriminant2 = add3(
37101
37101
  multiply2(4, b, b, b, d),
37102
37102
  multiply2(4, a, c, c, c),
37103
37103
  multiply2(27, a, a, d, d)
@@ -37105,11 +37105,11 @@ var createPolynomialRoot = /* @__PURE__ */ factory(
37105
37105
  if (equalScalar3(discriminant1, discriminant2)) {
37106
37106
  return [
37107
37107
  divide2(
37108
- subtract2(multiply2(4, a, b, c), add2(multiply2(9, a, a, d), multiply2(b, b, b))),
37108
+ subtract3(multiply2(4, a, b, c), add3(multiply2(9, a, a, d), multiply2(b, b, b))),
37109
37109
  multiply2(a, Delta0)
37110
37110
  ),
37111
37111
  // simple root
37112
- divide2(subtract2(multiply2(9, a, d), multiply2(b, c)), multiply2(2, Delta0))
37112
+ divide2(subtract3(multiply2(9, a, d), multiply2(b, c)), multiply2(2, Delta0))
37113
37113
  // double root
37114
37114
  ];
37115
37115
  }
@@ -37118,15 +37118,15 @@ var createPolynomialRoot = /* @__PURE__ */ factory(
37118
37118
  Ccubed = Delta1;
37119
37119
  } else {
37120
37120
  Ccubed = divide2(
37121
- add2(
37121
+ add3(
37122
37122
  Delta1,
37123
- sqrt2(subtract2(multiply2(Delta1, Delta1), multiply2(4, Delta0, Delta0, Delta0)))
37123
+ sqrt2(subtract3(multiply2(Delta1, Delta1), multiply2(4, Delta0, Delta0, Delta0)))
37124
37124
  ),
37125
37125
  2
37126
37126
  );
37127
37127
  }
37128
37128
  const allRoots = true;
37129
- const rawRoots = cbrt3(Ccubed, allRoots).toArray().map((C) => divide2(add2(b, C, divide2(Delta0, C)), denom));
37129
+ const rawRoots = cbrt3(Ccubed, allRoots).toArray().map((C) => divide2(add3(b, C, divide2(Delta0, C)), denom));
37130
37130
  return rawRoots.map((r) => {
37131
37131
  if (typeOf3(r) === "Complex" && equalScalar3(re3(r), re3(r) + im3(r))) {
37132
37132
  return re3(r);
@@ -37181,8 +37181,8 @@ var createZeta = /* @__PURE__ */ factory(
37181
37181
  isNegative: isNegative2,
37182
37182
  gamma: gamma2,
37183
37183
  sin: sin2,
37184
- subtract: subtract2,
37185
- add: add2,
37184
+ subtract: subtract3,
37185
+ add: add3,
37186
37186
  Complex: Complex13,
37187
37187
  BigNumber: BigNumber9,
37188
37188
  pi
@@ -37242,28 +37242,28 @@ var createZeta = /* @__PURE__ */ factory(
37242
37242
  if (getRe(s) >= 0) {
37243
37243
  return f(s, createValue(n), createValue);
37244
37244
  } else {
37245
- let c = multiply2(pow2(2, s), pow2(createValue(pi), subtract2(s, 1)));
37245
+ let c = multiply2(pow2(2, s), pow2(createValue(pi), subtract3(s, 1)));
37246
37246
  c = multiply2(c, sin2(multiply2(divide2(createValue(pi), 2), s)));
37247
- c = multiply2(c, gamma2(subtract2(1, s)));
37248
- return multiply2(c, zeta2(subtract2(1, s), createValue, determineDigits, getRe));
37247
+ c = multiply2(c, gamma2(subtract3(1, s)));
37248
+ return multiply2(c, zeta2(subtract3(1, s), createValue, determineDigits, getRe));
37249
37249
  }
37250
37250
  }
37251
37251
  function d(k, n) {
37252
37252
  let S = k;
37253
- for (let j = k; smallerEq2(j, n); j = add2(j, 1)) {
37253
+ for (let j = k; smallerEq2(j, n); j = add3(j, 1)) {
37254
37254
  const factor2 = divide2(
37255
- multiply2(factorial5(add2(n, subtract2(j, 1))), pow2(4, j)),
37256
- multiply2(factorial5(subtract2(n, j)), factorial5(multiply2(2, j)))
37255
+ multiply2(factorial5(add3(n, subtract3(j, 1))), pow2(4, j)),
37256
+ multiply2(factorial5(subtract3(n, j)), factorial5(multiply2(2, j)))
37257
37257
  );
37258
- S = add2(S, factor2);
37258
+ S = add3(S, factor2);
37259
37259
  }
37260
37260
  return multiply2(n, S);
37261
37261
  }
37262
37262
  function f(s, n, createValue) {
37263
- const c = divide2(1, multiply2(d(createValue(0), n), subtract2(1, pow2(2, subtract2(1, s)))));
37263
+ const c = divide2(1, multiply2(d(createValue(0), n), subtract3(1, pow2(2, subtract3(1, s)))));
37264
37264
  let S = createValue(0);
37265
- for (let k = createValue(1); smallerEq2(k, n); k = add2(k, 1)) {
37266
- S = add2(S, divide2(multiply2((-1) ** (k - 1), d(k, n)), pow2(k, s)));
37265
+ for (let k = createValue(1); smallerEq2(k, n); k = add3(k, 1)) {
37266
+ S = add3(S, divide2(multiply2((-1) ** (k - 1), d(k, n)), pow2(k, s)));
37267
37267
  }
37268
37268
  return multiply2(c, S);
37269
37269
  }
@@ -37309,7 +37309,7 @@ function flattenToFloat648(matrix2, rows, cols) {
37309
37309
  }
37310
37310
  function createComplexEigs({
37311
37311
  addScalar: addScalar2,
37312
- subtract: subtract2,
37312
+ subtract: subtract3,
37313
37313
  flatten: flatten4,
37314
37314
  multiply: multiply2,
37315
37315
  multiplyScalar: multiplyScalar2,
@@ -37320,7 +37320,7 @@ function createComplexEigs({
37320
37320
  diag: diag2,
37321
37321
  size: size2,
37322
37322
  reshape: reshape3,
37323
- inv: inv2,
37323
+ inv: inv3,
37324
37324
  qr: qr2,
37325
37325
  usolve: usolve2,
37326
37326
  usolveAll: usolveAll2,
@@ -37329,7 +37329,7 @@ function createComplexEigs({
37329
37329
  larger: larger2,
37330
37330
  smaller: smaller2,
37331
37331
  matrixFromColumns: _matrixFromColumns,
37332
- dot: dot5
37332
+ dot: dot7
37333
37333
  }) {
37334
37334
  function complexEigs(arr10, N, prec, type, findVectors = true) {
37335
37335
  if (!findVectors && type === "number" && N * N >= WASM_EIGS_THRESHOLD) {
@@ -37489,14 +37489,14 @@ function createComplexEigs({
37489
37489
  continue;
37490
37490
  }
37491
37491
  for (let k = 0; k < N; k++) {
37492
- arr10[j][k] = subtract2(arr10[j][k], multiplyScalar2(n, arr10[i + 1][k]));
37492
+ arr10[j][k] = subtract3(arr10[j][k], multiplyScalar2(n, arr10[i + 1][k]));
37493
37493
  }
37494
37494
  for (let k = 0; k < N; k++) {
37495
37495
  arr10[k][i + 1] = addScalar2(arr10[k][i + 1], multiplyScalar2(n, arr10[k][j]));
37496
37496
  }
37497
37497
  if (findVectors) {
37498
37498
  for (let k = 0; k < N; k++) {
37499
- R[j][k] = subtract2(R[j][k], multiplyScalar2(n, R[i + 1][k]));
37499
+ R[j][k] = subtract3(R[j][k], multiplyScalar2(n, R[i + 1][k]));
37500
37500
  }
37501
37501
  }
37502
37502
  }
@@ -37520,7 +37520,7 @@ function createComplexEigs({
37520
37520
  lastConvergenceBefore += 1;
37521
37521
  const k = arr10[n - 1][n - 1];
37522
37522
  for (let i = 0; i < n; i++) {
37523
- arr10[i][i] = subtract2(arr10[i][i], k);
37523
+ arr10[i][i] = subtract3(arr10[i][i], k);
37524
37524
  }
37525
37525
  const { Q: Q2, R } = qr2(arr10);
37526
37526
  arr10 = multiply2(R, Q2);
@@ -37586,7 +37586,7 @@ function createComplexEigs({
37586
37586
  break;
37587
37587
  }
37588
37588
  }
37589
- lambdas.sort((a, b) => +subtract2(abs2(a), abs2(b)));
37589
+ lambdas.sort((a, b) => +subtract3(abs2(a), abs2(b)));
37590
37590
  if (lastConvergenceBefore > 100) {
37591
37591
  const err = new Error(
37592
37592
  "The eigenvalues failed to converge. Only found these eigenvalues: " + lambdas.join(", ")
@@ -37599,7 +37599,7 @@ function createComplexEigs({
37599
37599
  return { values: lambdas, C };
37600
37600
  }
37601
37601
  function findEigenvectors(A, N, C, R, values, prec, type) {
37602
- const Cinv = inv2(C);
37602
+ const Cinv = inv3(C);
37603
37603
  const U = multiply2(multiply2(Cinv, A), C);
37604
37604
  const big = type === "BigNumber";
37605
37605
  const cplx = type === "Complex";
@@ -37622,7 +37622,7 @@ function createComplexEigs({
37622
37622
  const E = diag2(Array(N).fill(one));
37623
37623
  for (let i = 0; i < len; i++) {
37624
37624
  const lambda = uniqueValues[i];
37625
- const S = subtract2(
37625
+ const S = subtract3(
37626
37626
  U,
37627
37627
  multiply2(lambda, E)
37628
37628
  );
@@ -37635,7 +37635,7 @@ function createComplexEigs({
37635
37635
  }
37636
37636
  solutions.push(approxVec);
37637
37637
  }
37638
- const correction = multiply2(inv2(R), C);
37638
+ const correction = multiply2(inv3(R), C);
37639
37639
  solutions = solutions.map(
37640
37640
  (v) => multiply2(correction, v)
37641
37641
  );
@@ -37645,13 +37645,13 @@ function createComplexEigs({
37645
37645
  }
37646
37646
  function eigenvalues2x2(a, b, c, d) {
37647
37647
  const trA = addScalar2(a, d);
37648
- const detA = subtract2(multiplyScalar2(a, d), multiplyScalar2(b, c));
37648
+ const detA = subtract3(multiplyScalar2(a, d), multiplyScalar2(b, c));
37649
37649
  const x = multiplyScalar2(trA, 0.5);
37650
37650
  const y = multiplyScalar2(
37651
- sqrt2(subtract2(multiplyScalar2(trA, trA), multiplyScalar2(4, detA))),
37651
+ sqrt2(subtract3(multiplyScalar2(trA, trA), multiplyScalar2(4, detA))),
37652
37652
  0.5
37653
37653
  );
37654
- return [addScalar2(x, y), subtract2(x, y)];
37654
+ return [addScalar2(x, y), subtract3(x, y)];
37655
37655
  }
37656
37656
  function jordanBase2x2(a, b, c, d, l1, l2, prec, type) {
37657
37657
  const big = type === "BigNumber";
@@ -37664,14 +37664,14 @@ function createComplexEigs({
37664
37664
  [zero, one]
37665
37665
  ];
37666
37666
  }
37667
- if (larger2(abs2(subtract2(l1, l2)), prec)) {
37667
+ if (larger2(abs2(subtract3(l1, l2)), prec)) {
37668
37668
  return [
37669
- [subtract2(l1, d), subtract2(l2, d)],
37669
+ [subtract3(l1, d), subtract3(l2, d)],
37670
37670
  [c, c]
37671
37671
  ];
37672
37672
  }
37673
- const na = subtract2(a, l1);
37674
- const nd = subtract2(d, l1);
37673
+ const na = subtract3(a, l1);
37674
+ const nd = subtract3(d, l1);
37675
37675
  if (smaller2(abs2(b), prec) && smaller2(abs2(nd), prec)) {
37676
37676
  return [
37677
37677
  [na, one],
@@ -37767,10 +37767,10 @@ function createComplexEigs({
37767
37767
  const vectorShape = size2(v);
37768
37768
  for (let w of orthog) {
37769
37769
  w = reshape3(w, vectorShape);
37770
- v = subtract2(
37770
+ v = subtract3(
37771
37771
  v,
37772
37772
  multiply2(
37773
- divideScalar2(dot5(w, v), dot5(w, w)),
37773
+ divideScalar2(dot7(w, v), dot7(w, w)),
37774
37774
  w
37775
37775
  )
37776
37776
  );
@@ -37778,7 +37778,7 @@ function createComplexEigs({
37778
37778
  return v;
37779
37779
  }
37780
37780
  function norm4(v) {
37781
- return abs2(sqrt2(dot5(v, v)));
37781
+ return abs2(sqrt2(dot7(v, v)));
37782
37782
  }
37783
37783
  function normalize2(v, type) {
37784
37784
  const big = type === "BigNumber";
@@ -37803,16 +37803,16 @@ function flattenToFloat649(matrix2, rows, cols) {
37803
37803
  function createRealSymmetric({
37804
37804
  config: config2,
37805
37805
  addScalar: addScalar2,
37806
- subtract: subtract2,
37806
+ subtract: subtract3,
37807
37807
  abs: abs2,
37808
37808
  atan: atan3,
37809
37809
  cos: cos2,
37810
37810
  sin: sin2,
37811
37811
  multiplyScalar: multiplyScalar2,
37812
- inv: inv2,
37812
+ inv: inv3,
37813
37813
  bignumber: bignumber2,
37814
37814
  multiply: multiply2,
37815
- add: add2
37815
+ add: add3
37816
37816
  }) {
37817
37817
  function bigGte(a, b) {
37818
37818
  if (typeof a === "number" && typeof b === "number") return a >= b;
@@ -37954,13 +37954,13 @@ function createRealSymmetric({
37954
37954
  }
37955
37955
  }
37956
37956
  function getThetaBig(aii, ajj, aij) {
37957
- const denom = subtract2(ajj, aii);
37957
+ const denom = subtract3(ajj, aii);
37958
37958
  if (bigLte(abs2(denom), bignumber2(config2.relTol))) {
37959
37959
  return bignumber2(-1).acos().div(4);
37960
37960
  } else {
37961
37961
  return multiplyScalar2(
37962
37962
  bignumber2(0.5),
37963
- atan3(multiply2(bignumber2(2), aij, inv2(denom)))
37963
+ atan3(multiply2(bignumber2(2), aij, inv3(denom)))
37964
37964
  );
37965
37965
  }
37966
37966
  }
@@ -37987,7 +37987,7 @@ function createRealSymmetric({
37987
37987
  const Ski = Array(N).fill(bignumber2(0));
37988
37988
  const Skj = Array(N).fill(bignumber2(0));
37989
37989
  for (let k = 0; k < N; k++) {
37990
- Ski[k] = subtract2(multiplyScalar2(c, Sij[k][i]), multiplyScalar2(s, Sij[k][j]));
37990
+ Ski[k] = subtract3(multiplyScalar2(c, Sij[k][i]), multiplyScalar2(s, Sij[k][j]));
37991
37991
  Skj[k] = addScalar2(multiplyScalar2(s, Sij[k][i]), multiplyScalar2(c, Sij[k][j]));
37992
37992
  }
37993
37993
  for (let k = 0; k < N; k++) {
@@ -38006,16 +38006,16 @@ function createRealSymmetric({
38006
38006
  const Akj = Array(N).fill(bignumber2(0));
38007
38007
  const csHij = multiply2(bignumber2(2), c, s, Hij[i][j]);
38008
38008
  const Aii = addScalar2(
38009
- subtract2(multiplyScalar2(c2, Hij[i][i]), csHij),
38009
+ subtract3(multiplyScalar2(c2, Hij[i][i]), csHij),
38010
38010
  multiplyScalar2(s2, Hij[j][j])
38011
38011
  );
38012
- const Ajj = add2(
38012
+ const Ajj = add3(
38013
38013
  multiplyScalar2(s2, Hij[i][i]),
38014
38014
  csHij,
38015
38015
  multiplyScalar2(c2, Hij[j][j])
38016
38016
  );
38017
38017
  for (let k = 0; k < N; k++) {
38018
- Aki[k] = subtract2(multiplyScalar2(c, Hij[i][k]), multiplyScalar2(s, Hij[j][k]));
38018
+ Aki[k] = subtract3(multiplyScalar2(c, Hij[i][k]), multiplyScalar2(s, Hij[j][k]));
38019
38019
  Akj[k] = addScalar2(multiplyScalar2(s, Hij[i][k]), multiplyScalar2(c, Hij[j][k]));
38020
38020
  }
38021
38021
  Hij[i][i] = Aii;
@@ -38170,7 +38170,7 @@ var createEigs = /* @__PURE__ */ factory(
38170
38170
  typed: typed3,
38171
38171
  matrix: matrix2,
38172
38172
  addScalar: addScalar2,
38173
- subtract: subtract2,
38173
+ subtract: subtract3,
38174
38174
  equal: equal2,
38175
38175
  abs: abs2,
38176
38176
  atan: atan3,
@@ -38178,10 +38178,10 @@ var createEigs = /* @__PURE__ */ factory(
38178
38178
  sin: sin2,
38179
38179
  multiplyScalar: multiplyScalar2,
38180
38180
  divideScalar: divideScalar2,
38181
- inv: inv2,
38181
+ inv: inv3,
38182
38182
  bignumber: bignumber2,
38183
38183
  multiply: multiply2,
38184
- add: add2,
38184
+ add: add3,
38185
38185
  larger: larger2,
38186
38186
  column: _column,
38187
38187
  flatten: flatten4,
@@ -38198,26 +38198,26 @@ var createEigs = /* @__PURE__ */ factory(
38198
38198
  re: re3,
38199
38199
  smaller: smaller2,
38200
38200
  matrixFromColumns: matrixFromColumns2,
38201
- dot: dot5
38201
+ dot: dot7
38202
38202
  }) => {
38203
38203
  const doRealSymmetric = createRealSymmetric({
38204
38204
  config: config2,
38205
38205
  addScalar: addScalar2,
38206
- subtract: subtract2,
38206
+ subtract: subtract3,
38207
38207
  abs: abs2,
38208
38208
  atan: atan3,
38209
38209
  cos: cos2,
38210
38210
  sin: sin2,
38211
38211
  multiplyScalar: multiplyScalar2,
38212
- inv: inv2,
38212
+ inv: inv3,
38213
38213
  bignumber: bignumber2,
38214
38214
  complex: complex3,
38215
38215
  multiply: multiply2,
38216
- add: add2
38216
+ add: add3
38217
38217
  });
38218
38218
  const doComplexEigs = createComplexEigs({
38219
38219
  addScalar: addScalar2,
38220
- subtract: subtract2,
38220
+ subtract: subtract3,
38221
38221
  multiply: multiply2,
38222
38222
  multiplyScalar: multiplyScalar2,
38223
38223
  flatten: flatten4,
@@ -38229,7 +38229,7 @@ var createEigs = /* @__PURE__ */ factory(
38229
38229
  size: size2,
38230
38230
  reshape: reshape3,
38231
38231
  qr: qr2,
38232
- inv: inv2,
38232
+ inv: inv3,
38233
38233
  usolve: usolve2,
38234
38234
  usolveAll: usolveAll2,
38235
38235
  equal: equal2,
@@ -38237,7 +38237,7 @@ var createEigs = /* @__PURE__ */ factory(
38237
38237
  larger: larger2,
38238
38238
  smaller: smaller2,
38239
38239
  matrixFromColumns: matrixFromColumns2,
38240
- dot: dot5
38240
+ dot: dot7
38241
38241
  });
38242
38242
  return typed3("eigs", {
38243
38243
  // The conversion to matrix in the first two implementations,
@@ -38318,7 +38318,7 @@ var createEigs = /* @__PURE__ */ factory(
38318
38318
  function isSymmetric(arr10, N, prec) {
38319
38319
  for (let i = 0; i < N; i++) {
38320
38320
  for (let j = i; j < N; j++) {
38321
- if (larger2(bignumber2(abs2(subtract2(arr10[i][j], arr10[j][i]))), prec)) {
38321
+ if (larger2(bignumber2(abs2(subtract3(arr10[i][j], arr10[j][i]))), prec)) {
38322
38322
  return false;
38323
38323
  }
38324
38324
  }
@@ -38617,7 +38617,7 @@ var dependencies239 = ["typed", "matrix", "sqrt", "sum", "subtract", "multiply",
38617
38617
  var createCorr = /* @__PURE__ */ factory(
38618
38618
  name239,
38619
38619
  dependencies239,
38620
- ({ typed: typed3, matrix: matrix2, sqrt: sqrt2, sum: sum3, subtract: subtract2, multiply: multiply2, divide: divide2 }) => {
38620
+ ({ typed: typed3, matrix: matrix2, sqrt: sqrt2, sum: sum3, subtract: subtract3, multiply: multiply2, divide: divide2 }) => {
38621
38621
  return typed3(name239, {
38622
38622
  "Array, Array": function(A, B) {
38623
38623
  return _corr(A, B);
@@ -38669,8 +38669,8 @@ var createCorr = /* @__PURE__ */ factory(
38669
38669
  }
38670
38670
  const meanX = divide2(sum3(A), n);
38671
38671
  const meanY = divide2(sum3(B), n);
38672
- const dX = A.map((x) => subtract2(x, meanX));
38673
- const dY = B.map((y) => subtract2(y, meanY));
38672
+ const dX = A.map((x) => subtract3(x, meanX));
38673
+ const dY = B.map((y) => subtract3(y, meanY));
38674
38674
  const sxy = sum3(dX.map((dx, i) => multiply2(dx, dY[i])));
38675
38675
  const sxx = sum3(dX.map((dx) => multiply2(dx, dx)));
38676
38676
  const syy = sum3(dY.map((dy) => multiply2(dy, dy)));
@@ -38694,7 +38694,7 @@ var dependencies240 = ["typed", "abs", "map", "median", "subtract"];
38694
38694
  var createMad = /* @__PURE__ */ factory(
38695
38695
  name240,
38696
38696
  dependencies240,
38697
- ({ typed: typed3, abs: abs2, map: map2, median: median2, subtract: subtract2 }) => {
38697
+ ({ typed: typed3, abs: abs2, map: map2, median: median2, subtract: subtract3 }) => {
38698
38698
  return typed3(name240, {
38699
38699
  // mad([a, b, c, d, ...])
38700
38700
  "Array | Matrix": _mad,
@@ -38725,7 +38725,7 @@ var createMad = /* @__PURE__ */ factory(
38725
38725
  const med = median2(flat);
38726
38726
  return median2(
38727
38727
  map2(flat, function(value) {
38728
- return abs2(subtract2(value, med));
38728
+ return abs2(subtract3(value, med));
38729
38729
  })
38730
38730
  );
38731
38731
  } catch (err) {
@@ -40239,7 +40239,7 @@ var createNorm = /* @__PURE__ */ factory(
40239
40239
  ({
40240
40240
  typed: typed3,
40241
40241
  abs: abs2,
40242
- add: add2,
40242
+ add: add3,
40243
40243
  pow: pow2,
40244
40244
  conj: conj3,
40245
40245
  sqrt: sqrt2,
@@ -40344,7 +40344,7 @@ var createNorm = /* @__PURE__ */ factory(
40344
40344
  if (!equalScalar3(p, 0)) {
40345
40345
  let n = 0;
40346
40346
  x.forEach(function(value) {
40347
- n = add2(pow2(abs2(value), p), n);
40347
+ n = add3(pow2(abs2(value), p), n);
40348
40348
  }, true);
40349
40349
  return pow2(n, 1 / p);
40350
40350
  }
@@ -40355,7 +40355,7 @@ var createNorm = /* @__PURE__ */ factory(
40355
40355
  function _matrixNormFrobenius(x) {
40356
40356
  let fro = 0;
40357
40357
  x.forEach(function(value) {
40358
- fro = add2(fro, multiply2(value, conj3(value)));
40358
+ fro = add3(fro, multiply2(value, conj3(value)));
40359
40359
  });
40360
40360
  return abs2(sqrt2(fro));
40361
40361
  }
@@ -40364,7 +40364,7 @@ var createNorm = /* @__PURE__ */ factory(
40364
40364
  let maxc = 0;
40365
40365
  x.forEach(function(value, index) {
40366
40366
  const j = index[1];
40367
- const cj = add2(c[j] || 0, abs2(value));
40367
+ const cj = add3(c[j] || 0, abs2(value));
40368
40368
  if (larger2(cj, maxc)) {
40369
40369
  maxc = cj;
40370
40370
  }
@@ -40388,7 +40388,7 @@ var createNorm = /* @__PURE__ */ factory(
40388
40388
  let maxr = 0;
40389
40389
  x.forEach(function(value, index) {
40390
40390
  const i = index[0];
40391
- const ri = add2(r[i] || 0, abs2(value));
40391
+ const ri = add3(r[i] || 0, abs2(value));
40392
40392
  if (larger2(ri, maxr)) {
40393
40393
  maxr = ri;
40394
40394
  }
@@ -41219,11 +41219,11 @@ var createSylvester = /* @__PURE__ */ factory(
41219
41219
  multiply: multiply2,
41220
41220
  range: range2,
41221
41221
  concat: concat3,
41222
- transpose: transpose4,
41222
+ transpose: transpose5,
41223
41223
  index,
41224
41224
  subset: subset2,
41225
- add: add2,
41226
- subtract: subtract2,
41225
+ add: add3,
41226
+ subtract: subtract3,
41227
41227
  identity: identity2,
41228
41228
  lusolve: lusolve2,
41229
41229
  abs: abs2
@@ -41261,7 +41261,7 @@ var createSylvester = /* @__PURE__ */ factory(
41261
41261
  const sB = schur2(multiply2(-1, B));
41262
41262
  const G = sB.T;
41263
41263
  const V = sB.U;
41264
- const D = multiply2(multiply2(transpose4(U), C), V);
41264
+ const D = multiply2(multiply2(transpose5(U), C), V);
41265
41265
  const all = range2(0, m);
41266
41266
  const y = [];
41267
41267
  const hc = (a, b) => concat3(a, b, 1);
@@ -41270,7 +41270,7 @@ var createSylvester = /* @__PURE__ */ factory(
41270
41270
  if (k < n - 1 && abs2(subset2(G, index(k + 1, k))) > 1e-5) {
41271
41271
  let RHS = vc(subset2(D, index(all, [k])), subset2(D, index(all, [k + 1])));
41272
41272
  for (let j = 0; j < k; j++) {
41273
- RHS = add2(
41273
+ RHS = add3(
41274
41274
  RHS,
41275
41275
  vc(multiply2(y[j], subset2(G, index(j, k))), multiply2(y[j], subset2(G, index(j, k + 1))))
41276
41276
  );
@@ -41279,7 +41279,7 @@ var createSylvester = /* @__PURE__ */ factory(
41279
41279
  const gmk = multiply2(identity2(m), multiply2(-1, subset2(G, index(k + 1, k))));
41280
41280
  const gkm = multiply2(identity2(m), multiply2(-1, subset2(G, index(k, k + 1))));
41281
41281
  const gmm = multiply2(identity2(m), multiply2(-1, subset2(G, index(k + 1, k + 1))));
41282
- const LHS = vc(hc(add2(F, gkk), gmk), hc(gkm, add2(F, gmm)));
41282
+ const LHS = vc(hc(add3(F, gkk), gmk), hc(gkm, add3(F, gmm)));
41283
41283
  const yAux = lusolve2(LHS, RHS);
41284
41284
  y[k] = yAux.subset(index(range2(0, m), [0]));
41285
41285
  y[k + 1] = yAux.subset(index(range2(m, 2 * m), [0]));
@@ -41287,15 +41287,15 @@ var createSylvester = /* @__PURE__ */ factory(
41287
41287
  } else {
41288
41288
  let RHS = subset2(D, index(all, [k]));
41289
41289
  for (let j = 0; j < k; j++) {
41290
- RHS = add2(RHS, multiply2(y[j], subset2(G, index(j, k))));
41290
+ RHS = add3(RHS, multiply2(y[j], subset2(G, index(j, k))));
41291
41291
  }
41292
41292
  const gkk = subset2(G, index(k, k));
41293
- const LHS = subtract2(F, multiply2(gkk, identity2(m)));
41293
+ const LHS = subtract3(F, multiply2(gkk, identity2(m)));
41294
41294
  y[k] = lusolve2(LHS, RHS);
41295
41295
  }
41296
41296
  }
41297
41297
  const Y = matrix2(matrixFromColumns2(...y));
41298
- const X = multiply2(U, multiply2(Y, transpose4(V)));
41298
+ const X = multiply2(U, multiply2(Y, transpose5(V)));
41299
41299
  return X;
41300
41300
  }
41301
41301
  }
@@ -41307,21 +41307,21 @@ var dependencies253 = ["typed", "matrix", "sylvester", "multiply", "transpose"];
41307
41307
  var createLyap = /* @__PURE__ */ factory(
41308
41308
  name253,
41309
41309
  dependencies253,
41310
- ({ typed: typed3, matrix: matrix2, sylvester: sylvester2, multiply: multiply2, transpose: transpose4 }) => {
41310
+ ({ typed: typed3, matrix: matrix2, sylvester: sylvester2, multiply: multiply2, transpose: transpose5 }) => {
41311
41311
  return typed3(name253, {
41312
41312
  "Matrix, Matrix": function(A, Q2) {
41313
- return sylvester2(A, transpose4(A), multiply2(-1, Q2));
41313
+ return sylvester2(A, transpose5(A), multiply2(-1, Q2));
41314
41314
  },
41315
41315
  "Array, Matrix": function(A, Q2) {
41316
- return sylvester2(matrix2(A), transpose4(matrix2(A)), multiply2(-1, Q2));
41316
+ return sylvester2(matrix2(A), transpose5(matrix2(A)), multiply2(-1, Q2));
41317
41317
  },
41318
41318
  "Matrix, Array": function(A, Q2) {
41319
- return sylvester2(A, transpose4(A), matrix2(multiply2(-1, Q2)));
41319
+ return sylvester2(A, transpose5(A), matrix2(multiply2(-1, Q2)));
41320
41320
  },
41321
41321
  "Array, Array": function(A, Q2) {
41322
41322
  return sylvester2(
41323
41323
  matrix2(A),
41324
- transpose4(matrix2(A)),
41324
+ transpose5(matrix2(A)),
41325
41325
  matrix2(multiply2(-1, Q2))
41326
41326
  ).toArray();
41327
41327
  }
@@ -43126,8 +43126,8 @@ function polyCoeffsDeg3(expr, varName) {
43126
43126
  const d2 = f[2] - 2 * f[1] + f[0];
43127
43127
  const d3 = f[3] - 3 * f[2] + 3 * f[1] - f[0];
43128
43128
  const d4 = f[4] - 4 * f[3] + 6 * f[2] - 4 * f[1] + f[0];
43129
- const scale = Math.max(1, ...f.map(Math.abs));
43130
- if (Math.abs(d4) > 1e-7 * scale) return null;
43129
+ const scale3 = Math.max(1, ...f.map(Math.abs));
43130
+ if (Math.abs(d4) > 1e-7 * scale3) return null;
43131
43131
  const c3 = d3 / 6;
43132
43132
  const c2 = d2 / 2 - d3 / 2;
43133
43133
  const c1 = d1 - d2 / 2 + d3 / 3;
@@ -45377,10 +45377,10 @@ function laplacianMatrix(adjacency, opts = {}) {
45377
45377
  const n = adjacency.length;
45378
45378
  const deg = adjacency.map((row2) => row2.reduce((s, v) => s + v, 0));
45379
45379
  if (opts.normalized) {
45380
- const inv2 = deg.map((d) => d > 0 ? 1 / Math.sqrt(d) : 0);
45380
+ const inv3 = deg.map((d) => d > 0 ? 1 / Math.sqrt(d) : 0);
45381
45381
  return Array.from(
45382
45382
  { length: n },
45383
- (_, i) => Array.from({ length: n }, (_2, j) => (i === j ? 1 : 0) - inv2[i] * adjacency[i][j] * inv2[j])
45383
+ (_, i) => Array.from({ length: n }, (_2, j) => (i === j ? 1 : 0) - inv3[i] * adjacency[i][j] * inv3[j])
45384
45384
  );
45385
45385
  }
45386
45386
  return Array.from(
@@ -45613,6 +45613,1096 @@ function fsolve(F, x0, opts = {}) {
45613
45613
  }
45614
45614
  var root = fsolve;
45615
45615
 
45616
+ // src/numeric/krylov.ts
45617
+ function isDenseMatrix2(a) {
45618
+ return Array.isArray(a);
45619
+ }
45620
+ function toMatvec(a) {
45621
+ if (!isDenseMatrix2(a)) return a;
45622
+ const rows = a;
45623
+ return (x) => {
45624
+ const n = rows.length;
45625
+ const y = new Array(n).fill(0);
45626
+ for (let i = 0; i < n; i++) {
45627
+ const row2 = rows[i];
45628
+ let sum3 = 0;
45629
+ for (let j = 0; j < row2.length; j++) sum3 += row2[j] * x[j];
45630
+ y[i] = sum3;
45631
+ }
45632
+ return y;
45633
+ };
45634
+ }
45635
+ function dot2(a, b) {
45636
+ let s = 0;
45637
+ for (let i = 0; i < a.length; i++) s += a[i] * b[i];
45638
+ return s;
45639
+ }
45640
+ function norm25(a) {
45641
+ return Math.sqrt(dot2(a, a));
45642
+ }
45643
+ function axpy(alpha, x, y) {
45644
+ const n = x.length;
45645
+ const out = new Array(n);
45646
+ for (let i = 0; i < n; i++) out[i] = alpha * x[i] + y[i];
45647
+ return out;
45648
+ }
45649
+ function scale(alpha, x) {
45650
+ return x.map((v) => alpha * v);
45651
+ }
45652
+ function subtract2(a, b) {
45653
+ return a.map((v, i) => v - b[i]);
45654
+ }
45655
+ function add2(a, b) {
45656
+ return a.map((v, i) => v + b[i]);
45657
+ }
45658
+ function zeros2(n) {
45659
+ return new Array(n).fill(0);
45660
+ }
45661
+ function resolvePreconditioner(a, preconditioner) {
45662
+ if (preconditioner === void 0) return (r) => r.slice();
45663
+ if (typeof preconditioner === "function") return preconditioner;
45664
+ if (!isDenseMatrix2(a)) {
45665
+ throw new Error(
45666
+ "krylov: 'jacobi' preconditioner requires a dense matrix (need the diagonal) \u2014 pass a custom preconditioner function when using a matvec operator"
45667
+ );
45668
+ }
45669
+ const n = a.length;
45670
+ const invDiag = new Array(n);
45671
+ for (let i = 0; i < n; i++) {
45672
+ const d = a[i][i];
45673
+ if (d === 0) {
45674
+ throw new Error(
45675
+ `krylov: Jacobi preconditioner requires a nonzero diagonal (A[${i}][${i}] = 0)`
45676
+ );
45677
+ }
45678
+ invDiag[i] = 1 / d;
45679
+ }
45680
+ return (r) => r.map((v, i) => v * invDiag[i]);
45681
+ }
45682
+ function defaultMaxIter(n) {
45683
+ return Math.min(n * 10, 1e3);
45684
+ }
45685
+ function relativeResidualNorm(rNorm, bNorm) {
45686
+ return bNorm > 0 ? rNorm / bNorm : rNorm;
45687
+ }
45688
+ function relativeResidual(matvec2, x, b, bNorm) {
45689
+ return relativeResidualNorm(norm25(subtract2(b, matvec2(x))), bNorm);
45690
+ }
45691
+ function cg(a, b, opts) {
45692
+ const n = b.length;
45693
+ const matvec2 = toMatvec(a);
45694
+ const applyM = resolvePreconditioner(a, opts?.preconditioner);
45695
+ const tol = opts?.tol ?? 1e-10;
45696
+ const maxIter = opts?.maxIter ?? defaultMaxIter(n);
45697
+ const bNorm = norm25(b);
45698
+ let x = opts?.x0 ? opts.x0.slice() : zeros2(n);
45699
+ let r = subtract2(b, matvec2(x));
45700
+ let z = applyM(r);
45701
+ let p = z.slice();
45702
+ let rzOld = dot2(r, z);
45703
+ let residual = relativeResidualNorm(norm25(r), bNorm);
45704
+ if (residual < tol) {
45705
+ return { x, iterations: 0, converged: true, residual };
45706
+ }
45707
+ let iterations = 0;
45708
+ for (let iter = 1; iter <= maxIter; iter++) {
45709
+ iterations = iter;
45710
+ const Ap = matvec2(p);
45711
+ const pAp = dot2(p, Ap);
45712
+ if (Math.abs(pAp) < 1e-300) break;
45713
+ const alpha = rzOld / pAp;
45714
+ x = axpy(alpha, p, x);
45715
+ r = axpy(-alpha, Ap, r);
45716
+ residual = relativeResidualNorm(norm25(r), bNorm);
45717
+ if (residual < tol) {
45718
+ return { x, iterations, converged: true, residual };
45719
+ }
45720
+ z = applyM(r);
45721
+ const rzNew = dot2(r, z);
45722
+ const beta2 = rzNew / rzOld;
45723
+ p = add2(z, scale(beta2, p));
45724
+ rzOld = rzNew;
45725
+ }
45726
+ return { x, iterations, converged: residual < tol, residual };
45727
+ }
45728
+ function minres(a, b, opts) {
45729
+ const n = b.length;
45730
+ const matvec2 = toMatvec(a);
45731
+ const applyM = resolvePreconditioner(a, opts?.preconditioner);
45732
+ const tol = opts?.tol ?? 1e-10;
45733
+ const maxIter = opts?.maxIter ?? defaultMaxIter(n);
45734
+ const bNorm = norm25(b);
45735
+ const x0 = opts?.x0 ? opts.x0.slice() : zeros2(n);
45736
+ const r0 = subtract2(b, matvec2(x0));
45737
+ let residual = relativeResidualNorm(norm25(r0), bNorm);
45738
+ if (residual < tol) {
45739
+ return { x: x0, iterations: 0, converged: true, residual };
45740
+ }
45741
+ const z0 = applyM(r0);
45742
+ const beta1 = Math.sqrt(dot2(r0, z0));
45743
+ if (beta1 < 1e-300) {
45744
+ return { x: x0, iterations: 0, converged: residual < tol, residual };
45745
+ }
45746
+ const V = [zeros2(n), scale(1 / beta1, r0)];
45747
+ const Z = [zeros2(n), scale(1 / beta1, z0)];
45748
+ const alphas = [];
45749
+ const betas = [beta1];
45750
+ let bestX = x0.slice();
45751
+ let bestResidual = residual;
45752
+ let iterations = 0;
45753
+ for (let k = 1; k <= maxIter; k++) {
45754
+ iterations = k;
45755
+ const vK = V[k];
45756
+ const zK = Z[k];
45757
+ const vKm1 = V[k - 1];
45758
+ const betaK = betas[k - 1];
45759
+ let p = matvec2(zK);
45760
+ p = subtract2(p, scale(betaK, vKm1));
45761
+ const alphaK = dot2(p, zK);
45762
+ alphas.push(alphaK);
45763
+ p = subtract2(p, scale(alphaK, vK));
45764
+ const zRaw = applyM(p);
45765
+ const betaNext = Math.sqrt(Math.max(0, dot2(p, zRaw)));
45766
+ const T = Array.from({ length: k + 1 }, () => new Array(k).fill(0));
45767
+ for (let i = 0; i < k; i++) {
45768
+ T[i][i] = alphas[i];
45769
+ if (i + 1 < k) {
45770
+ T[i + 1][i] = betas[i + 1];
45771
+ T[i][i + 1] = betas[i + 1];
45772
+ }
45773
+ }
45774
+ T[k][k - 1] = betaNext;
45775
+ const rhs = new Array(k + 1).fill(0);
45776
+ rhs[0] = beta1;
45777
+ const y = solveLeastSquaresQR(T, rhs);
45778
+ let xCandidate = x0.slice();
45779
+ for (let i = 0; i < k; i++) {
45780
+ xCandidate = axpy(y[i], Z[i + 1], xCandidate);
45781
+ }
45782
+ residual = relativeResidual(matvec2, xCandidate, b, bNorm);
45783
+ if (residual < bestResidual) {
45784
+ bestResidual = residual;
45785
+ bestX = xCandidate;
45786
+ }
45787
+ if (residual < tol) {
45788
+ return { x: xCandidate, iterations: k, converged: true, residual };
45789
+ }
45790
+ if (betaNext < 1e-300) break;
45791
+ betas.push(betaNext);
45792
+ V.push(scale(1 / betaNext, p));
45793
+ Z.push(scale(1 / betaNext, zRaw));
45794
+ }
45795
+ return { x: bestX, iterations, converged: bestResidual < tol, residual: bestResidual };
45796
+ }
45797
+ function solveLeastSquaresQR(T, rhs) {
45798
+ const m = T.length;
45799
+ const n = T[0]?.length ?? 0;
45800
+ const R = T.map((row2) => row2.slice());
45801
+ const c = rhs.slice();
45802
+ for (let k = 0; k < n; k++) {
45803
+ let normX = 0;
45804
+ for (let i = k; i < m; i++) normX += R[i][k] * R[i][k];
45805
+ normX = Math.sqrt(normX);
45806
+ if (normX < 1e-300) continue;
45807
+ const alpha = R[k][k] >= 0 ? -normX : normX;
45808
+ const v = new Array(m).fill(0);
45809
+ v[k] = R[k][k] - alpha;
45810
+ for (let i = k + 1; i < m; i++) v[i] = R[i][k];
45811
+ let vNormSq = 0;
45812
+ for (let i = k; i < m; i++) vNormSq += v[i] * v[i];
45813
+ if (vNormSq < 1e-300) continue;
45814
+ for (let j = k; j < n; j++) {
45815
+ let dotVR = 0;
45816
+ for (let i = k; i < m; i++) dotVR += v[i] * R[i][j];
45817
+ const factor2 = 2 * dotVR / vNormSq;
45818
+ for (let i = k; i < m; i++) R[i][j] -= factor2 * v[i];
45819
+ }
45820
+ let dotVC = 0;
45821
+ for (let i = k; i < m; i++) dotVC += v[i] * c[i];
45822
+ const factorC = 2 * dotVC / vNormSq;
45823
+ for (let i = k; i < m; i++) c[i] -= factorC * v[i];
45824
+ }
45825
+ const y = new Array(n).fill(0);
45826
+ for (let i = n - 1; i >= 0; i--) {
45827
+ let sum3 = c[i];
45828
+ for (let j = i + 1; j < n; j++) sum3 -= R[i][j] * y[j];
45829
+ y[i] = Math.abs(R[i][i]) > 1e-300 ? sum3 / R[i][i] : 0;
45830
+ }
45831
+ return y;
45832
+ }
45833
+ function gmres(a, b, opts) {
45834
+ const n = b.length;
45835
+ const matvec2 = toMatvec(a);
45836
+ const applyM = resolvePreconditioner(a, opts?.preconditioner);
45837
+ const tol = opts?.tol ?? 1e-10;
45838
+ const maxIter = opts?.maxIter ?? defaultMaxIter(n);
45839
+ const restart = Math.max(1, Math.min(opts?.restart ?? 30, n));
45840
+ const bNorm = norm25(b);
45841
+ let x = opts?.x0 ? opts.x0.slice() : zeros2(n);
45842
+ let totalIterations = 0;
45843
+ let residual = relativeResidual(matvec2, x, b, bNorm);
45844
+ if (residual < tol) {
45845
+ return { x, iterations: 0, converged: true, residual };
45846
+ }
45847
+ while (totalIterations < maxIter) {
45848
+ const r0 = applyM(subtract2(b, matvec2(x)));
45849
+ const beta2 = norm25(r0);
45850
+ if (beta2 < 1e-300) {
45851
+ return { x, iterations: totalIterations, converged: residual < tol, residual };
45852
+ }
45853
+ const m = Math.min(restart, maxIter - totalIterations);
45854
+ const V = [scale(1 / beta2, r0)];
45855
+ const H = Array.from({ length: m + 1 }, () => new Array(m).fill(0));
45856
+ const g = new Array(m + 1).fill(0);
45857
+ g[0] = beta2;
45858
+ const cs = new Array(m).fill(0);
45859
+ const sn = new Array(m).fill(0);
45860
+ let k = 0;
45861
+ for (; k < m; k++) {
45862
+ totalIterations++;
45863
+ let w = applyM(matvec2(V[k]));
45864
+ for (let i = 0; i <= k; i++) {
45865
+ H[i][k] = dot2(w, V[i]);
45866
+ w = axpy(-H[i][k], V[i], w);
45867
+ }
45868
+ H[k + 1][k] = norm25(w);
45869
+ V.push(H[k + 1][k] > 1e-300 ? scale(1 / H[k + 1][k], w) : zeros2(n));
45870
+ for (let i = 0; i < k; i++) {
45871
+ const temp2 = cs[i] * H[i][k] + sn[i] * H[i + 1][k];
45872
+ H[i + 1][k] = -sn[i] * H[i][k] + cs[i] * H[i + 1][k];
45873
+ H[i][k] = temp2;
45874
+ }
45875
+ const denom = Math.sqrt(H[k][k] * H[k][k] + H[k + 1][k] * H[k + 1][k]);
45876
+ if (denom < 1e-300) {
45877
+ cs[k] = 1;
45878
+ sn[k] = 0;
45879
+ } else {
45880
+ cs[k] = H[k][k] / denom;
45881
+ sn[k] = H[k + 1][k] / denom;
45882
+ }
45883
+ H[k][k] = cs[k] * H[k][k] + sn[k] * H[k + 1][k];
45884
+ H[k + 1][k] = 0;
45885
+ const temp = cs[k] * g[k] + sn[k] * g[k + 1];
45886
+ g[k + 1] = -sn[k] * g[k] + cs[k] * g[k + 1];
45887
+ g[k] = temp;
45888
+ residual = relativeResidualNorm(Math.abs(g[k + 1]), bNorm);
45889
+ if (residual < tol) {
45890
+ k++;
45891
+ break;
45892
+ }
45893
+ }
45894
+ const y = new Array(k).fill(0);
45895
+ for (let i = k - 1; i >= 0; i--) {
45896
+ let sum3 = g[i];
45897
+ for (let j = i + 1; j < k; j++) sum3 -= H[i][j] * y[j];
45898
+ y[i] = Math.abs(H[i][i]) > 1e-300 ? sum3 / H[i][i] : 0;
45899
+ }
45900
+ for (let i = 0; i < k; i++) {
45901
+ x = axpy(y[i], V[i], x);
45902
+ }
45903
+ residual = relativeResidual(matvec2, x, b, bNorm);
45904
+ if (residual < tol || k < m) {
45905
+ return { x, iterations: totalIterations, converged: residual < tol, residual };
45906
+ }
45907
+ }
45908
+ return { x, iterations: totalIterations, converged: residual < tol, residual };
45909
+ }
45910
+ function bicgstab(a, b, opts) {
45911
+ const n = b.length;
45912
+ const matvec2 = toMatvec(a);
45913
+ const applyM = resolvePreconditioner(a, opts?.preconditioner);
45914
+ const tol = opts?.tol ?? 1e-10;
45915
+ const maxIter = opts?.maxIter ?? defaultMaxIter(n);
45916
+ const bNorm = norm25(b);
45917
+ let x = opts?.x0 ? opts.x0.slice() : zeros2(n);
45918
+ let r = subtract2(b, matvec2(x));
45919
+ const rHat0 = r.slice();
45920
+ let residual = relativeResidualNorm(norm25(r), bNorm);
45921
+ if (residual < tol) {
45922
+ return { x, iterations: 0, converged: true, residual };
45923
+ }
45924
+ let rho = 1;
45925
+ let alpha = 1;
45926
+ let omega = 1;
45927
+ let v = zeros2(n);
45928
+ let p = zeros2(n);
45929
+ let iterations = 0;
45930
+ for (let iter = 1; iter <= maxIter; iter++) {
45931
+ iterations = iter;
45932
+ const rhoNew = dot2(rHat0, r);
45933
+ if (Math.abs(rhoNew) < 1e-300) break;
45934
+ if (iter === 1) {
45935
+ p = r.slice();
45936
+ } else {
45937
+ const beta2 = rhoNew / rho * (alpha / omega);
45938
+ p = add2(r, scale(beta2, subtract2(p, scale(omega, v))));
45939
+ }
45940
+ rho = rhoNew;
45941
+ const pHat = applyM(p);
45942
+ v = matvec2(pHat);
45943
+ const rHatV = dot2(rHat0, v);
45944
+ if (Math.abs(rHatV) < 1e-300) break;
45945
+ alpha = rho / rHatV;
45946
+ const s = axpy(-alpha, v, r);
45947
+ const sNorm = relativeResidualNorm(norm25(s), bNorm);
45948
+ if (sNorm < tol) {
45949
+ x = axpy(alpha, pHat, x);
45950
+ residual = sNorm;
45951
+ return { x, iterations, converged: true, residual };
45952
+ }
45953
+ const sHat = applyM(s);
45954
+ const t = matvec2(sHat);
45955
+ const tt = dot2(t, t);
45956
+ omega = tt > 1e-300 ? dot2(t, s) / tt : 0;
45957
+ x = axpy(alpha, pHat, x);
45958
+ x = axpy(omega, sHat, x);
45959
+ r = axpy(-omega, t, s);
45960
+ residual = relativeResidualNorm(norm25(r), bNorm);
45961
+ if (residual < tol) {
45962
+ return { x, iterations, converged: true, residual };
45963
+ }
45964
+ if (Math.abs(omega) < 1e-300) break;
45965
+ }
45966
+ return { x, iterations, converged: residual < tol, residual };
45967
+ }
45968
+
45969
+ // src/numeric/eigsh.ts
45970
+ function isDenseMatrix3(a) {
45971
+ return Array.isArray(a);
45972
+ }
45973
+ function toMatvecAndSize(a, nOpt) {
45974
+ if (isDenseMatrix3(a)) {
45975
+ const rows = a;
45976
+ const n = rows.length;
45977
+ if (n === 0 || rows.some((row2) => row2.length !== n)) {
45978
+ throw new Error("eigsh: dense matrix input must be square and non-empty");
45979
+ }
45980
+ return {
45981
+ n,
45982
+ matvec: (x) => rows.map((row2) => row2.reduce((s, v, j) => s + v * x[j], 0))
45983
+ };
45984
+ }
45985
+ if (nOpt === void 0) {
45986
+ throw new Error(
45987
+ "eigsh: a matvec operator requires opts.n (the matrix dimension) since it cannot be inferred from a function"
45988
+ );
45989
+ }
45990
+ return { matvec: a, n: nOpt };
45991
+ }
45992
+ function dot3(a, b) {
45993
+ let s = 0;
45994
+ for (let i = 0; i < a.length; i++) s += a[i] * b[i];
45995
+ return s;
45996
+ }
45997
+ function norm26(a) {
45998
+ return Math.sqrt(dot3(a, a));
45999
+ }
46000
+ function axpy2(alpha, x, y) {
46001
+ const out = new Array(x.length);
46002
+ for (let i = 0; i < x.length; i++) out[i] = alpha * x[i] + y[i];
46003
+ return out;
46004
+ }
46005
+ function scale2(alpha, x) {
46006
+ return x.map((v) => alpha * v);
46007
+ }
46008
+ function startVector(n) {
46009
+ const v = new Array(n);
46010
+ for (let i = 0; i < n; i++) v[i] = Math.sin(i + 1);
46011
+ const nrm = norm26(v);
46012
+ return nrm > 1e-300 ? scale2(1 / nrm, v) : v.map((_, i) => i === 0 ? 1 : 0);
46013
+ }
46014
+ function lanczos(matvec2, n, m) {
46015
+ const V = [startVector(n)];
46016
+ const alphas = [];
46017
+ const betas = [];
46018
+ for (let j = 0; j < m; j++) {
46019
+ const vj = V[j];
46020
+ let w = matvec2(vj);
46021
+ if (j > 0) w = axpy2(-betas[j - 1], V[j - 1], w);
46022
+ const alpha = dot3(w, vj);
46023
+ alphas.push(alpha);
46024
+ w = axpy2(-alpha, vj, w);
46025
+ for (let pass = 0; pass < 2; pass++) {
46026
+ for (let i = 0; i <= j; i++) {
46027
+ const c = dot3(w, V[i]);
46028
+ w = axpy2(-c, V[i], w);
46029
+ }
46030
+ }
46031
+ const beta2 = norm26(w);
46032
+ if (j === m - 1 || beta2 < 1e-13) break;
46033
+ betas.push(beta2);
46034
+ V.push(scale2(1 / beta2, w));
46035
+ }
46036
+ return { V, alphas, betas };
46037
+ }
46038
+ function jacobiEigenSymmetric(input, tol) {
46039
+ const n = input.length;
46040
+ const a = input.map((row2) => row2.slice());
46041
+ const v = Array.from(
46042
+ { length: n },
46043
+ (_, i) => Array.from({ length: n }, (_2, j) => i === j ? 1 : 0)
46044
+ );
46045
+ const maxSweeps = 100;
46046
+ for (let sweep = 0; sweep < maxSweeps; sweep++) {
46047
+ let offDiagSumSq = 0;
46048
+ for (let p = 0; p < n; p++) {
46049
+ for (let q = p + 1; q < n; q++) offDiagSumSq += a[p][q] * a[p][q];
46050
+ }
46051
+ if (offDiagSumSq < tol * tol) break;
46052
+ for (let p = 0; p < n; p++) {
46053
+ for (let q = p + 1; q < n; q++) {
46054
+ const apq = a[p][q];
46055
+ if (Math.abs(apq) < 1e-300) continue;
46056
+ const theta = (a[q][q] - a[p][p]) / (2 * apq);
46057
+ const sign3 = theta === 0 ? 1 : Math.sign(theta);
46058
+ const t = sign3 / (Math.abs(theta) + Math.sqrt(theta * theta + 1));
46059
+ const c = 1 / Math.sqrt(t * t + 1);
46060
+ const s = t * c;
46061
+ const app = a[p][p];
46062
+ const aqq = a[q][q];
46063
+ a[p][p] = c * c * app - 2 * s * c * apq + s * s * aqq;
46064
+ a[q][q] = s * s * app + 2 * s * c * apq + c * c * aqq;
46065
+ a[p][q] = 0;
46066
+ a[q][p] = 0;
46067
+ for (let i = 0; i < n; i++) {
46068
+ if (i === p || i === q) continue;
46069
+ const aip = a[i][p];
46070
+ const aiq = a[i][q];
46071
+ a[i][p] = c * aip - s * aiq;
46072
+ a[p][i] = a[i][p];
46073
+ a[i][q] = s * aip + c * aiq;
46074
+ a[q][i] = a[i][q];
46075
+ }
46076
+ for (let i = 0; i < n; i++) {
46077
+ const vip = v[i][p];
46078
+ const viq = v[i][q];
46079
+ v[i][p] = c * vip - s * viq;
46080
+ v[i][q] = s * vip + c * viq;
46081
+ }
46082
+ }
46083
+ }
46084
+ }
46085
+ const values = new Array(n);
46086
+ for (let i = 0; i < n; i++) values[i] = a[i][i];
46087
+ return { values, vectors: v };
46088
+ }
46089
+ function eigsh(a, k = 1, opts) {
46090
+ const which = opts?.which ?? "LM";
46091
+ const { matvec: matvec2, n } = toMatvecAndSize(a, opts?.n);
46092
+ if (!Number.isInteger(k) || k < 1 || k > n) {
46093
+ throw new Error(`eigsh: k must be an integer between 1 and n (n=${n}), got ${k}`);
46094
+ }
46095
+ const tol = opts?.tol ?? 1e-10;
46096
+ const m = Math.min(opts?.maxIter ?? Math.max(2 * k + 20, 20), n);
46097
+ const { V, alphas, betas } = lanczos(matvec2, n, m);
46098
+ const size2 = alphas.length;
46099
+ if (k > size2) {
46100
+ throw new Error(
46101
+ `eigsh: Lanczos basis collapsed to ${size2} vectors (invariant subspace) before ${k} eigenpairs could be extracted`
46102
+ );
46103
+ }
46104
+ const T = Array.from({ length: size2 }, () => new Array(size2).fill(0));
46105
+ for (let i = 0; i < size2; i++) {
46106
+ T[i][i] = alphas[i];
46107
+ if (i + 1 < size2) {
46108
+ T[i][i + 1] = betas[i];
46109
+ T[i + 1][i] = betas[i];
46110
+ }
46111
+ }
46112
+ const { values, vectors } = jacobiEigenSymmetric(T, tol);
46113
+ const order = values.map((value, index) => ({ value, index })).sort((a1, b1) => which === "LM" ? b1.value - a1.value : a1.value - b1.value);
46114
+ const eigenvalues = order.slice(0, k).map((o) => o.value);
46115
+ const eigenvectors = Array.from({ length: n }, () => new Array(k).fill(0));
46116
+ for (let col = 0; col < k; col++) {
46117
+ const ritzIndex = order[col].index;
46118
+ let full = new Array(n).fill(0);
46119
+ for (let i = 0; i < size2; i++) {
46120
+ full = axpy2(vectors[i][ritzIndex], V[i], full);
46121
+ }
46122
+ const nrm = norm26(full);
46123
+ if (nrm > 1e-300) full = scale2(1 / nrm, full);
46124
+ for (let row2 = 0; row2 < n; row2++) eigenvectors[row2][col] = full[row2];
46125
+ }
46126
+ return { eigenvalues, eigenvectors };
46127
+ }
46128
+
46129
+ // src/numeric/structured-solvers.ts
46130
+ function thomasSolve(sub, diag2, sup, d) {
46131
+ const n = diag2.length;
46132
+ if (n === 0) return [];
46133
+ if (sub.length !== n - 1 || sup.length !== n - 1 || d.length !== n) {
46134
+ throw new Error(
46135
+ `thomasSolve: expected sub/sup of length ${n - 1} and d of length ${n}, got sub=${sub.length}, sup=${sup.length}, d=${d.length}`
46136
+ );
46137
+ }
46138
+ const cp = new Array(n).fill(0);
46139
+ const dp = new Array(n).fill(0);
46140
+ if (diag2[0] === 0) throw new Error("thomasSolve: zero pivot at row 0 (no pivoting is performed)");
46141
+ cp[0] = n > 1 ? sup[0] / diag2[0] : 0;
46142
+ dp[0] = d[0] / diag2[0];
46143
+ for (let i = 1; i < n; i++) {
46144
+ const m = diag2[i] - sub[i - 1] * cp[i - 1];
46145
+ if (m === 0) {
46146
+ throw new Error(`thomasSolve: zero pivot at row ${i} (no pivoting is performed)`);
46147
+ }
46148
+ cp[i] = i < n - 1 ? sup[i] / m : 0;
46149
+ dp[i] = (d[i] - sub[i - 1] * dp[i - 1]) / m;
46150
+ }
46151
+ const x = new Array(n);
46152
+ x[n - 1] = dp[n - 1];
46153
+ for (let i = n - 2; i >= 0; i--) {
46154
+ x[i] = dp[i] - cp[i] * x[i + 1];
46155
+ }
46156
+ return x;
46157
+ }
46158
+ function solveBanded(l, u, A, b) {
46159
+ const n = A.length;
46160
+ if (b.length !== n) {
46161
+ throw new Error(`solveBanded: A is ${n}x? but b has length ${b.length}`);
46162
+ }
46163
+ for (const row2 of A) {
46164
+ if (row2.length !== n) throw new Error("solveBanded: A must be a square dense matrix");
46165
+ }
46166
+ const W = A.map((row2) => row2.slice());
46167
+ const rhs = b.slice();
46168
+ for (let k = 0; k < n - 1; k++) {
46169
+ const pivot = W[k][k];
46170
+ if (pivot === 0)
46171
+ throw new Error(`solveBanded: zero pivot at row ${k} (no pivoting is performed)`);
46172
+ const iMax = Math.min(n - 1, k + l);
46173
+ const jMax = Math.min(n - 1, k + u);
46174
+ for (let i = k + 1; i <= iMax; i++) {
46175
+ const factor2 = W[i][k] / pivot;
46176
+ if (factor2 === 0) continue;
46177
+ for (let j = k; j <= jMax; j++) {
46178
+ W[i][j] -= factor2 * W[k][j];
46179
+ }
46180
+ rhs[i] -= factor2 * rhs[k];
46181
+ }
46182
+ }
46183
+ const x = new Array(n).fill(0);
46184
+ for (let i = n - 1; i >= 0; i--) {
46185
+ let sum3 = rhs[i];
46186
+ const jMax = Math.min(n - 1, i + u);
46187
+ for (let j = i + 1; j <= jMax; j++) {
46188
+ sum3 -= W[i][j] * x[j];
46189
+ }
46190
+ if (W[i][i] === 0)
46191
+ throw new Error(`solveBanded: zero pivot at row ${i} during back-substitution`);
46192
+ x[i] = sum3 / W[i][i];
46193
+ }
46194
+ return x;
46195
+ }
46196
+ function toeplitzSolve(c, r, b) {
46197
+ const n = b.length;
46198
+ if (c.length !== n || r.length !== n) {
46199
+ throw new Error(
46200
+ `toeplitzSolve: expected c and r of length ${n}, got c=${c.length}, r=${r.length}`
46201
+ );
46202
+ }
46203
+ if (Math.abs(c[0] - r[0]) > 1e-12 * (Math.abs(c[0]) + Math.abs(r[0]) + 1)) {
46204
+ throw new Error(`toeplitzSolve: c[0] (${c[0]}) must equal r[0] (${r[0]})`);
46205
+ }
46206
+ const c0 = c[0];
46207
+ if (c0 === 0) throw new Error("toeplitzSolve: zero diagonal (c[0] === 0)");
46208
+ let x = [b[0] / c0];
46209
+ if (n === 1) return x;
46210
+ let f = [c[1] / c0];
46211
+ let fs = [r[1] / c0];
46212
+ for (let m = 1; m < n; m++) {
46213
+ const v = new Array(m);
46214
+ const u = new Array(m);
46215
+ for (let j = 0; j < m; j++) {
46216
+ v[j] = c[m - j];
46217
+ u[j] = r[m - j];
46218
+ }
46219
+ const A = new Array(m);
46220
+ const Astar = new Array(m);
46221
+ for (let i = 0; i < m; i++) {
46222
+ A[i] = fs[m - 1 - i];
46223
+ Astar[i] = f[m - 1 - i];
46224
+ }
46225
+ let vDotA = 0;
46226
+ let vDotX = 0;
46227
+ for (let i = 0; i < m; i++) {
46228
+ vDotA += v[i] * A[i];
46229
+ vDotX += v[i] * x[i];
46230
+ }
46231
+ const delta = c0 - vDotA;
46232
+ if (delta === 0) throw new Error(`toeplitzSolve: breakdown at order ${m + 1} (zero pivot)`);
46233
+ const qx = (b[m] - vDotX) / delta;
46234
+ const xNew = new Array(m + 1);
46235
+ for (let i = 0; i < m; i++) xNew[i] = x[i] - qx * A[i];
46236
+ xNew[m] = qx;
46237
+ x = xNew;
46238
+ if (m + 1 < n) {
46239
+ let vDotF = 0;
46240
+ let uDotFs = 0;
46241
+ for (let i = 0; i < m; i++) {
46242
+ vDotF += v[i] * f[i];
46243
+ uDotFs += u[i] * fs[i];
46244
+ }
46245
+ const qf = (c[m + 1] - vDotF) / delta;
46246
+ const qfs = (r[m + 1] - uDotFs) / delta;
46247
+ const fNew = new Array(m + 1);
46248
+ const fsNew = new Array(m + 1);
46249
+ for (let i = 0; i < m; i++) {
46250
+ fNew[i] = f[i] - qf * A[i];
46251
+ fsNew[i] = fs[i] - qfs * Astar[i];
46252
+ }
46253
+ fNew[m] = qf;
46254
+ fsNew[m] = qfs;
46255
+ f = fNew;
46256
+ fs = fsNew;
46257
+ }
46258
+ }
46259
+ return x;
46260
+ }
46261
+ function ldl(A) {
46262
+ const n = A.length;
46263
+ for (const row2 of A) {
46264
+ if (row2.length !== n) throw new Error("ldl: A must be a square matrix");
46265
+ }
46266
+ const W = A.map((row2) => row2.slice());
46267
+ const L = Array.from({ length: n }, () => new Array(n).fill(0));
46268
+ const D = Array.from({ length: n }, () => new Array(n).fill(0));
46269
+ const perm = Array.from({ length: n }, (_, i) => i);
46270
+ const swap = (a, b) => {
46271
+ if (a === b) return;
46272
+ [perm[a], perm[b]] = [perm[b], perm[a]];
46273
+ [W[a], W[b]] = [W[b], W[a]];
46274
+ for (let i = 0; i < n; i++) [W[i][a], W[i][b]] = [W[i][b], W[i][a]];
46275
+ [L[a], L[b]] = [L[b], L[a]];
46276
+ };
46277
+ const alpha = (1 + Math.sqrt(17)) / 8;
46278
+ let k = 0;
46279
+ while (k < n) {
46280
+ if (k === n - 1) {
46281
+ L[k][k] = 1;
46282
+ D[k][k] = W[k][k];
46283
+ k += 1;
46284
+ continue;
46285
+ }
46286
+ const w1 = Math.abs(W[k][k]);
46287
+ let r = k + 1;
46288
+ let lambda = Math.abs(W[k + 1][k]);
46289
+ for (let i = k + 2; i < n; i++) {
46290
+ const val = Math.abs(W[i][k]);
46291
+ if (val > lambda) {
46292
+ lambda = val;
46293
+ r = i;
46294
+ }
46295
+ }
46296
+ let use1x1 = true;
46297
+ let swapWith = -1;
46298
+ if (lambda !== 0 && w1 < alpha * lambda) {
46299
+ let sigma = 0;
46300
+ for (let i = k; i < n; i++) {
46301
+ if (i !== r) sigma = Math.max(sigma, Math.abs(W[i][r]));
46302
+ }
46303
+ if (w1 * sigma < alpha * lambda * lambda) {
46304
+ if (Math.abs(W[r][r]) >= alpha * sigma) {
46305
+ swapWith = r;
46306
+ } else {
46307
+ use1x1 = false;
46308
+ swapWith = r;
46309
+ }
46310
+ }
46311
+ }
46312
+ if (use1x1) {
46313
+ if (swapWith >= 0) swap(k, swapWith);
46314
+ const d = W[k][k];
46315
+ L[k][k] = 1;
46316
+ D[k][k] = d;
46317
+ if (d === 0) throw new Error(`ldl: singular 1x1 pivot at step ${k}`);
46318
+ for (let i = k + 1; i < n; i++) L[i][k] = W[i][k] / d;
46319
+ for (let i = k + 1; i < n; i++) {
46320
+ for (let j = k + 1; j < n; j++) {
46321
+ W[i][j] -= L[i][k] * d * L[j][k];
46322
+ }
46323
+ }
46324
+ k += 1;
46325
+ } else {
46326
+ swap(k + 1, swapWith);
46327
+ const a = W[k][k];
46328
+ const bVal = W[k][k + 1];
46329
+ const cVal = W[k + 1][k];
46330
+ const dd = W[k + 1][k + 1];
46331
+ const det2 = a * dd - bVal * cVal;
46332
+ if (det2 === 0) throw new Error(`ldl: singular 2x2 pivot at step ${k}`);
46333
+ D[k][k] = a;
46334
+ D[k][k + 1] = bVal;
46335
+ D[k + 1][k] = cVal;
46336
+ D[k + 1][k + 1] = dd;
46337
+ L[k][k] = 1;
46338
+ L[k + 1][k + 1] = 1;
46339
+ for (let i = k + 2; i < n; i++) {
46340
+ const wi0 = W[i][k];
46341
+ const wi1 = W[i][k + 1];
46342
+ L[i][k] = (wi0 * dd - wi1 * cVal) / det2;
46343
+ L[i][k + 1] = (-wi0 * bVal + wi1 * a) / det2;
46344
+ }
46345
+ for (let i = k + 2; i < n; i++) {
46346
+ for (let j = k + 2; j < n; j++) {
46347
+ const upd = L[i][k] * (a * L[j][k] + bVal * L[j][k + 1]) + L[i][k + 1] * (cVal * L[j][k] + dd * L[j][k + 1]);
46348
+ W[i][j] -= upd;
46349
+ }
46350
+ }
46351
+ k += 2;
46352
+ }
46353
+ }
46354
+ return { L, D, perm };
46355
+ }
46356
+
46357
+ // src/numeric/matrix-functions.ts
46358
+ import { eig as eig3 } from "@danielsimonjr/mathts-matrix";
46359
+ function cSub(a, b) {
46360
+ return { re: a.re - b.re, im: a.im - b.im };
46361
+ }
46362
+ function cMul(a, b) {
46363
+ return { re: a.re * b.re - a.im * b.im, im: a.re * b.im + a.im * b.re };
46364
+ }
46365
+ function cDiv(a, b) {
46366
+ const d = b.re * b.re + b.im * b.im;
46367
+ return { re: (a.re * b.re + a.im * b.im) / d, im: (a.im * b.re - a.re * b.im) / d };
46368
+ }
46369
+ function cAbs(a) {
46370
+ return Math.hypot(a.re, a.im);
46371
+ }
46372
+ function cZeros(n) {
46373
+ return {
46374
+ re: Array.from({ length: n }, () => new Array(n).fill(0)),
46375
+ im: Array.from({ length: n }, () => new Array(n).fill(0))
46376
+ };
46377
+ }
46378
+ function cFromReal(A) {
46379
+ const n = A.length;
46380
+ return {
46381
+ re: A.map((row2) => row2.slice()),
46382
+ im: Array.from({ length: n }, () => new Array(n).fill(0))
46383
+ };
46384
+ }
46385
+ function cShiftedReal(A, lambda) {
46386
+ const n = A.length;
46387
+ const re3 = A.map((row2) => row2.slice());
46388
+ const im3 = Array.from({ length: n }, () => new Array(n).fill(0));
46389
+ for (let i = 0; i < n; i++) {
46390
+ re3[i][i] -= lambda.re;
46391
+ im3[i][i] -= lambda.im;
46392
+ }
46393
+ return { re: re3, im: im3 };
46394
+ }
46395
+ function cMatMul(X, Y) {
46396
+ const n = X.re.length;
46397
+ const out = cZeros(n);
46398
+ for (let i = 0; i < n; i++) {
46399
+ for (let k = 0; k < n; k++) {
46400
+ const xr = X.re[i][k];
46401
+ const xi = X.im[i][k];
46402
+ if (xr === 0 && xi === 0) continue;
46403
+ for (let j = 0; j < n; j++) {
46404
+ const yr = Y.re[k][j];
46405
+ const yi = Y.im[k][j];
46406
+ out.re[i][j] += xr * yr - xi * yi;
46407
+ out.im[i][j] += xr * yi + xi * yr;
46408
+ }
46409
+ }
46410
+ }
46411
+ return out;
46412
+ }
46413
+ function cMatScalarDiv(X, s) {
46414
+ const n = X.re.length;
46415
+ const out = cZeros(n);
46416
+ for (let i = 0; i < n; i++) {
46417
+ for (let j = 0; j < n; j++) {
46418
+ const q = cDiv({ re: X.re[i][j], im: X.im[i][j] }, s);
46419
+ out.re[i][j] = q.re;
46420
+ out.im[i][j] = q.im;
46421
+ }
46422
+ }
46423
+ return out;
46424
+ }
46425
+ function cAccumulate(F, s, M) {
46426
+ const n = F.re.length;
46427
+ for (let i = 0; i < n; i++) {
46428
+ for (let j = 0; j < n; j++) {
46429
+ const term = cMul(s, { re: M.re[i][j], im: M.im[i][j] });
46430
+ F.re[i][j] += term.re;
46431
+ F.im[i][j] += term.im;
46432
+ }
46433
+ }
46434
+ }
46435
+ var EIGENVALUE_DISTINCT_REL_TOL = 1e-8;
46436
+ function isDiagonal(A, n) {
46437
+ for (let i = 0; i < n; i++) {
46438
+ for (let j = 0; j < n; j++) {
46439
+ if (i !== j && A[i][j] !== 0) return false;
46440
+ }
46441
+ }
46442
+ return true;
46443
+ }
46444
+ function funm(A, f) {
46445
+ const n = A.length;
46446
+ if (n === 0) return { re: [], im: [] };
46447
+ for (const row2 of A) {
46448
+ if (row2.length !== n) throw new Error(`funm: matrix must be square (got ${n}x${row2.length})`);
46449
+ }
46450
+ if (isDiagonal(A, n)) {
46451
+ const out = cZeros(n);
46452
+ for (let i = 0; i < n; i++) {
46453
+ const fi = f({ re: A[i][i], im: 0 });
46454
+ out.re[i][i] = fi.re;
46455
+ out.im[i][i] = fi.im;
46456
+ }
46457
+ return out;
46458
+ }
46459
+ const { values } = eig3(A, { computeVectors: false });
46460
+ const maxAbs = values.reduce((m, v) => Math.max(m, cAbs(v)), 0);
46461
+ const tol = EIGENVALUE_DISTINCT_REL_TOL * Math.max(1, maxAbs);
46462
+ for (let i = 0; i < n; i++) {
46463
+ for (let j = i + 1; j < n; j++) {
46464
+ if (cAbs(cSub(values[i], values[j])) < tol) {
46465
+ throw new Error(
46466
+ "funm: matrix has repeated (or numerically indistinguishable) eigenvalues and is not diagonal \u2014 defective/non-diagonalizable matrices are not supported (Schur-Parlett block recurrence not yet implemented)"
46467
+ );
46468
+ }
46469
+ }
46470
+ }
46471
+ const F = cZeros(n);
46472
+ for (let i = 0; i < n; i++) {
46473
+ const lambdaI = values[i];
46474
+ let numerator = cFromReal(A);
46475
+ let denom = { re: 1, im: 0 };
46476
+ let first = true;
46477
+ for (let j = 0; j < n; j++) {
46478
+ if (j === i) continue;
46479
+ const factor2 = cShiftedReal(A, values[j]);
46480
+ numerator = first ? factor2 : cMatMul(numerator, factor2);
46481
+ first = false;
46482
+ denom = cMul(denom, cSub(lambdaI, values[j]));
46483
+ }
46484
+ cAccumulate(F, f(lambdaI), cMatScalarDiv(numerator, denom));
46485
+ }
46486
+ return F;
46487
+ }
46488
+ function complexCos(z) {
46489
+ return {
46490
+ re: Math.cos(z.re) * Math.cosh(z.im),
46491
+ im: -Math.sin(z.re) * Math.sinh(z.im)
46492
+ };
46493
+ }
46494
+ function complexSin(z) {
46495
+ return {
46496
+ re: Math.sin(z.re) * Math.cosh(z.im),
46497
+ im: Math.cos(z.re) * Math.sinh(z.im)
46498
+ };
46499
+ }
46500
+ function cosm(A) {
46501
+ return funm(A, complexCos);
46502
+ }
46503
+ function sinm(A) {
46504
+ return funm(A, complexSin);
46505
+ }
46506
+
46507
+ // src/numeric/control-equations.ts
46508
+ function assertSquare2(A, name254) {
46509
+ const n = A.length;
46510
+ if (n === 0) throw new Error(`${name254}: empty matrix`);
46511
+ for (const row2 of A) {
46512
+ if (row2.length !== n)
46513
+ throw new Error(`${name254}: matrix must be square (got ${n}x${row2.length})`);
46514
+ }
46515
+ return n;
46516
+ }
46517
+ function zeros3(rows, cols) {
46518
+ return Array.from({ length: rows }, () => new Array(cols).fill(0));
46519
+ }
46520
+ function eye2(n) {
46521
+ const I2 = zeros3(n, n);
46522
+ for (let i = 0; i < n; i++) I2[i][i] = 1;
46523
+ return I2;
46524
+ }
46525
+ function transpose3(A) {
46526
+ const n = A.length;
46527
+ const m = A[0].length;
46528
+ const T = zeros3(m, n);
46529
+ for (let i = 0; i < n; i++) for (let j = 0; j < m; j++) T[j][i] = A[i][j];
46530
+ return T;
46531
+ }
46532
+ function matmul2(A, B) {
46533
+ const n = A.length;
46534
+ const k = B.length;
46535
+ const m = B[0].length;
46536
+ const C = zeros3(n, m);
46537
+ for (let i = 0; i < n; i++) {
46538
+ for (let p = 0; p < k; p++) {
46539
+ const a = A[i][p];
46540
+ if (a === 0) continue;
46541
+ for (let j = 0; j < m; j++) C[i][j] += a * B[p][j];
46542
+ }
46543
+ }
46544
+ return C;
46545
+ }
46546
+ function matadd(A, B, s = 1) {
46547
+ const n = A.length;
46548
+ const m = A[0].length;
46549
+ const C = zeros3(n, m);
46550
+ for (let i = 0; i < n; i++) for (let j = 0; j < m; j++) C[i][j] = A[i][j] + s * B[i][j];
46551
+ return C;
46552
+ }
46553
+ function matScale(A, s) {
46554
+ return A.map((row2) => row2.map((v) => v * s));
46555
+ }
46556
+ function inv2(A) {
46557
+ const n = A.length;
46558
+ const Inv = zeros3(n, n);
46559
+ for (let j = 0; j < n; j++) {
46560
+ const e = new Array(n).fill(0);
46561
+ e[j] = 1;
46562
+ const col = linsolve(A, e);
46563
+ for (let i = 0; i < n; i++) Inv[i][j] = col[i];
46564
+ }
46565
+ return Inv;
46566
+ }
46567
+ function norm1(A) {
46568
+ const n = A.length;
46569
+ const m = A[0].length;
46570
+ let maxSum = 0;
46571
+ for (let j = 0; j < m; j++) {
46572
+ let s = 0;
46573
+ for (let i = 0; i < n; i++) s += Math.abs(A[i][j]);
46574
+ maxSum = Math.max(maxSum, s);
46575
+ }
46576
+ return maxSum;
46577
+ }
46578
+ function symmetrize(X) {
46579
+ return matScale(matadd(X, transpose3(X)), 0.5);
46580
+ }
46581
+ function maxAbsDiff(A, B) {
46582
+ const n = A.length;
46583
+ const m = A[0].length;
46584
+ let d = 0;
46585
+ for (let i = 0; i < n; i++)
46586
+ for (let j = 0; j < m; j++) d = Math.max(d, Math.abs(A[i][j] - B[i][j]));
46587
+ return d;
46588
+ }
46589
+ function sylvesterOperator(M, N) {
46590
+ const n = M.length;
46591
+ const n26 = n * n;
46592
+ const L = zeros3(n26, n26);
46593
+ for (let i = 0; i < n; i++) {
46594
+ for (let j = 0; j < n; j++) {
46595
+ const row2 = i * n + j;
46596
+ for (let p = 0; p < n; p++) {
46597
+ const mip = M[i][p];
46598
+ if (mip === 0) continue;
46599
+ for (let q = 0; q < n; q++) {
46600
+ L[row2][p * n + q] = mip * N[q][j];
46601
+ }
46602
+ }
46603
+ }
46604
+ }
46605
+ return L;
46606
+ }
46607
+ function vecRowMajor(Q2) {
46608
+ const n = Q2.length;
46609
+ const v = new Array(n * n);
46610
+ for (let i = 0; i < n; i++) for (let j = 0; j < n; j++) v[i * n + j] = Q2[i][j];
46611
+ return v;
46612
+ }
46613
+ function unvecRowMajor(v, n) {
46614
+ const X = zeros3(n, n);
46615
+ for (let i = 0; i < n; i++) for (let j = 0; j < n; j++) X[i][j] = v[i * n + j];
46616
+ return X;
46617
+ }
46618
+ function dlyap(A, Q2) {
46619
+ const n = assertSquare2(A, "dlyap");
46620
+ assertSquare2(Q2, "dlyap");
46621
+ if (Q2.length !== n) throw new Error("dlyap: A and Q must have the same size");
46622
+ const L = sylvesterOperator(A, transpose3(A));
46623
+ const n26 = n * n;
46624
+ const M = zeros3(n26, n26);
46625
+ for (let r = 0; r < n26; r++) {
46626
+ for (let c = 0; c < n26; c++) {
46627
+ M[r][c] = (r === c ? 1 : 0) - L[r][c];
46628
+ }
46629
+ }
46630
+ const vecQ = vecRowMajor(Q2);
46631
+ const vecX = linsolve(M, vecQ);
46632
+ return symmetrize(unvecRowMajor(vecX, n));
46633
+ }
46634
+ var RICCATI_MAX_ITER = 100;
46635
+ var RICCATI_TOL = 1e-13;
46636
+ function care(A, B, Q2, R) {
46637
+ const n = assertSquare2(A, "care");
46638
+ assertSquare2(Q2, "care");
46639
+ if (Q2.length !== n) throw new Error("care: A and Q must have the same size");
46640
+ if (B.length !== n) throw new Error("care: B must have n rows (n = size of A)");
46641
+ const m = B[0]?.length ?? 0;
46642
+ assertSquare2(R, "care");
46643
+ if (R.length !== m) throw new Error("care: R must be m x m (m = number of columns of B)");
46644
+ const Rinv = inv2(R);
46645
+ const G = matmul2(matmul2(B, Rinv), transpose3(B));
46646
+ const At = transpose3(A);
46647
+ const n26 = 2 * n;
46648
+ let Z = zeros3(n26, n26);
46649
+ for (let i = 0; i < n; i++) {
46650
+ for (let j = 0; j < n; j++) {
46651
+ Z[i][j] = A[i][j];
46652
+ Z[i][n + j] = -G[i][j];
46653
+ Z[n + i][j] = -Q2[i][j];
46654
+ Z[n + i][n + j] = -At[i][j];
46655
+ }
46656
+ }
46657
+ for (let iter = 0; iter < RICCATI_MAX_ITER; iter++) {
46658
+ const Zinv = inv2(Z);
46659
+ const c = Math.sqrt(norm1(Zinv) / norm1(Z));
46660
+ const Znew = matScale(matadd(matScale(Z, c), matScale(Zinv, 1 / c)), 0.5);
46661
+ const diff2 = maxAbsDiff(Znew, Z);
46662
+ Z = Znew;
46663
+ if (diff2 < RICCATI_TOL) break;
46664
+ }
46665
+ const S = Z;
46666
+ const P2 = matScale(matadd(eye2(n26), S, -1), 0.5);
46667
+ const U1 = zeros3(n, n);
46668
+ const U2 = zeros3(n, n);
46669
+ for (let i = 0; i < n; i++) {
46670
+ for (let j = 0; j < n; j++) {
46671
+ U1[i][j] = P2[i][j];
46672
+ U2[i][j] = P2[n + i][j];
46673
+ }
46674
+ }
46675
+ const X = matmul2(U2, inv2(U1));
46676
+ return symmetrize(X);
46677
+ }
46678
+ function dare(A, B, Q2, R) {
46679
+ const n = assertSquare2(A, "dare");
46680
+ assertSquare2(Q2, "dare");
46681
+ if (Q2.length !== n) throw new Error("dare: A and Q must have the same size");
46682
+ if (B.length !== n) throw new Error("dare: B must have n rows (n = size of A)");
46683
+ const m = B[0]?.length ?? 0;
46684
+ assertSquare2(R, "dare");
46685
+ if (R.length !== m) throw new Error("dare: R must be m x m (m = number of columns of B)");
46686
+ const Rinv = inv2(R);
46687
+ let Ak = A.map((row2) => row2.slice());
46688
+ let Gk = matmul2(matmul2(B, Rinv), transpose3(B));
46689
+ let Hk = Q2.map((row2) => row2.slice());
46690
+ for (let iter = 0; iter < RICCATI_MAX_ITER; iter++) {
46691
+ const I_GH_inv = inv2(matadd(eye2(n), matmul2(Gk, Hk)));
46692
+ const AkT = transpose3(Ak);
46693
+ const Ak_IGHinv = matmul2(Ak, I_GH_inv);
46694
+ const Anew = matmul2(Ak_IGHinv, Ak);
46695
+ const Gnew = matadd(Gk, matmul2(matmul2(Ak_IGHinv, Gk), AkT));
46696
+ const Hnew = matadd(Hk, matmul2(matmul2(AkT, matmul2(Hk, I_GH_inv)), Ak));
46697
+ const diff2 = maxAbsDiff(Hnew, Hk);
46698
+ Ak = Anew;
46699
+ Gk = Gnew;
46700
+ Hk = Hnew;
46701
+ if (diff2 < RICCATI_TOL) break;
46702
+ }
46703
+ return symmetrize(Hk);
46704
+ }
46705
+
45616
46706
  // src/numeric/minimize-scalar.ts
45617
46707
  var GOLD = (3 - Math.sqrt(5)) / 2;
45618
46708
  var EPS2 = 2220446049250313e-31;
@@ -45755,7 +46845,7 @@ function acf(x, nlags) {
45755
46845
  }
45756
46846
 
45757
46847
  // src/ml/ols.ts
45758
- function transpose3(m) {
46848
+ function transpose4(m) {
45759
46849
  const rows = m.length;
45760
46850
  const cols = m[0].length;
45761
46851
  const out = Array.from({ length: cols }, () => new Array(rows).fill(0));
@@ -45766,7 +46856,7 @@ function transpose3(m) {
45766
46856
  }
45767
46857
  return out;
45768
46858
  }
45769
- function matmul2(a, b) {
46859
+ function matmul3(a, b) {
45770
46860
  const n = a.length;
45771
46861
  const k = b.length;
45772
46862
  const m = b[0].length;
@@ -45820,8 +46910,8 @@ function ols(X, y, opts) {
45820
46910
  const design = useIntercept ? X.map((row2) => [1, ...row2]) : X.map((row2) => [...row2]);
45821
46911
  const p = design[0].length;
45822
46912
  if (n <= p) throw new Error(`ols: need more observations (${n}) than parameters (${p})`);
45823
- const Xt = transpose3(design);
45824
- const XtX = matmul2(Xt, design);
46913
+ const Xt = transpose4(design);
46914
+ const XtX = matmul3(Xt, design);
45825
46915
  const Xty = matVec(Xt, y);
45826
46916
  const XtXinv = invert(XtX);
45827
46917
  const coefficients = matVec(XtXinv, Xty);
@@ -46019,7 +47109,7 @@ function center(X, y, n, p, useIntercept) {
46019
47109
  const yc = y.map((v) => v - yMean);
46020
47110
  return { Xc, yc, xMean, yMean };
46021
47111
  }
46022
- function dot2(a, b) {
47112
+ function dot4(a, b) {
46023
47113
  let s = 0;
46024
47114
  for (let i = 0; i < a.length; i++) s += a[i] * b[i];
46025
47115
  return s;
@@ -46047,19 +47137,19 @@ function ridge(X, y, alpha, opts) {
46047
47137
  for (let i = 0; i < n; i++) Xty[j] += Xc[i][j] * yc[i];
46048
47138
  }
46049
47139
  const coefficients = linsolve(XtX, Xty);
46050
- const intercept = useIntercept ? yMean - dot2(xMean, coefficients) : 0;
47140
+ const intercept = useIntercept ? yMean - dot4(xMean, coefficients) : 0;
46051
47141
  return { coefficients, intercept };
46052
47142
  }
46053
47143
  function standardize(Xc, n, p) {
46054
- const scale = new Array(p);
47144
+ const scale3 = new Array(p);
46055
47145
  for (let j = 0; j < p; j++) {
46056
47146
  let ss = 0;
46057
47147
  for (let i = 0; i < n; i++) ss += Xc[i][j] * Xc[i][j];
46058
47148
  const meanSq = ss / n;
46059
- scale[j] = meanSq > 1e-15 ? Math.sqrt(meanSq) : 1;
47149
+ scale3[j] = meanSq > 1e-15 ? Math.sqrt(meanSq) : 1;
46060
47150
  }
46061
- const Xs = Xc.map((row2) => row2.map((v, j) => v / scale[j]));
46062
- return { Xs, scale };
47151
+ const Xs = Xc.map((row2) => row2.map((v, j) => v / scale3[j]));
47152
+ return { Xs, scale: scale3 };
46063
47153
  }
46064
47154
  function coordinateDescent(Xs, yc, n, p, l1, l2, maxIter, tol) {
46065
47155
  const beta2 = new Array(p).fill(0);
@@ -46091,10 +47181,10 @@ function lasso(X, y, alpha, opts) {
46091
47181
  const maxIter = opts?.maxIter ?? 1e3;
46092
47182
  const tol = opts?.tol ?? 1e-7;
46093
47183
  const { Xc, yc, xMean, yMean } = center(X, y, n, p, useIntercept);
46094
- const { Xs, scale } = standardize(Xc, n, p);
47184
+ const { Xs, scale: scale3 } = standardize(Xc, n, p);
46095
47185
  const betaStd = coordinateDescent(Xs, yc, n, p, alpha, 0, maxIter, tol);
46096
- const coefficients = betaStd.map((b, j) => b / scale[j]);
46097
- const intercept = useIntercept ? yMean - dot2(xMean, coefficients) : 0;
47186
+ const coefficients = betaStd.map((b, j) => b / scale3[j]);
47187
+ const intercept = useIntercept ? yMean - dot4(xMean, coefficients) : 0;
46098
47188
  return { coefficients, intercept };
46099
47189
  }
46100
47190
  function elasticNet(X, y, alpha, l1Ratio, opts) {
@@ -46105,12 +47195,12 @@ function elasticNet(X, y, alpha, l1Ratio, opts) {
46105
47195
  const maxIter = opts?.maxIter ?? 1e3;
46106
47196
  const tol = opts?.tol ?? 1e-7;
46107
47197
  const { Xc, yc, xMean, yMean } = center(X, y, n, p, useIntercept);
46108
- const { Xs, scale } = standardize(Xc, n, p);
47198
+ const { Xs, scale: scale3 } = standardize(Xc, n, p);
46109
47199
  const l1 = alpha * l1Ratio;
46110
47200
  const l2 = alpha * (1 - l1Ratio);
46111
47201
  const betaStd = coordinateDescent(Xs, yc, n, p, l1, l2, maxIter, tol);
46112
- const coefficients = betaStd.map((b, j) => b / scale[j]);
46113
- const intercept = useIntercept ? yMean - dot2(xMean, coefficients) : 0;
47202
+ const coefficients = betaStd.map((b, j) => b / scale3[j]);
47203
+ const intercept = useIntercept ? yMean - dot4(xMean, coefficients) : 0;
46114
47204
  return { coefficients, intercept };
46115
47205
  }
46116
47206
 
@@ -46177,8 +47267,8 @@ function logisticRegression(X, y, opts) {
46177
47267
  let stepNorm = 0;
46178
47268
  for (const d of delta) stepNorm = Math.max(stepNorm, Math.abs(d));
46179
47269
  if (stepNorm > MAX_STEP_NORM) {
46180
- const scale = MAX_STEP_NORM / stepNorm;
46181
- delta = delta.map((d) => d * scale);
47270
+ const scale3 = MAX_STEP_NORM / stepNorm;
47271
+ delta = delta.map((d) => d * scale3);
46182
47272
  stepNorm = MAX_STEP_NORM;
46183
47273
  }
46184
47274
  beta2 = beta2.map((b, j) => b + delta[j]);
@@ -46216,7 +47306,7 @@ function nelderMead(f, x0, opts = {}) {
46216
47306
  for (let i = 0; i < n; i++) for (let j = 0; j < n; j++) c[j] += pts[i][j] / n;
46217
47307
  return c;
46218
47308
  };
46219
- const add2 = (a, b, s) => a.map((v, i) => v + s * b[i]);
47309
+ const add3 = (a, b, s) => a.map((v, i) => v + s * b[i]);
46220
47310
  const sub = (a, b) => a.map((v, i) => v - b[i]);
46221
47311
  for (; iter < maxIter; iter++) {
46222
47312
  const order = fv.map((_, i) => i).sort((i, j) => fv[i] - fv[j]);
@@ -46224,10 +47314,10 @@ function nelderMead(f, x0, opts = {}) {
46224
47314
  fv = order.map((i) => fv[i]);
46225
47315
  if (Math.abs(fv[n] - fv[0]) <= tol * (Math.abs(fv[0]) + tol)) break;
46226
47316
  const c = centroid2(simplex.slice(0, n));
46227
- const xr = add2(c, sub(c, simplex[n]), alpha);
47317
+ const xr = add3(c, sub(c, simplex[n]), alpha);
46228
47318
  const fr = f(xr);
46229
47319
  if (fr < fv[0]) {
46230
- const xe = add2(c, sub(c, simplex[n]), gamma2);
47320
+ const xe = add3(c, sub(c, simplex[n]), gamma2);
46231
47321
  const fe = f(xe);
46232
47322
  if (fe < fr) {
46233
47323
  simplex[n] = xe;
@@ -46240,14 +47330,14 @@ function nelderMead(f, x0, opts = {}) {
46240
47330
  simplex[n] = xr;
46241
47331
  fv[n] = fr;
46242
47332
  } else {
46243
- const xc = add2(c, sub(simplex[n], c), rho);
47333
+ const xc = add3(c, sub(simplex[n], c), rho);
46244
47334
  const fc = f(xc);
46245
47335
  if (fc < fv[n]) {
46246
47336
  simplex[n] = xc;
46247
47337
  fv[n] = fc;
46248
47338
  } else {
46249
47339
  for (let i = 1; i <= n; i++) {
46250
- simplex[i] = add2(simplex[0], sub(simplex[i], simplex[0]), sigma);
47340
+ simplex[i] = add3(simplex[0], sub(simplex[i], simplex[0]), sigma);
46251
47341
  fv[i] = f(simplex[i]);
46252
47342
  }
46253
47343
  }
@@ -46291,7 +47381,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
46291
47381
  let x = Array.from(x0);
46292
47382
  let lambda = 1e-3;
46293
47383
  const h = 1e-7;
46294
- const norm25 = (v) => v.reduce((s, c) => s + c * c, 0);
47384
+ const norm27 = (v) => v.reduce((s, c) => s + c * c, 0);
46295
47385
  const jacobian2 = (xc, r0) => {
46296
47386
  const m = r0.length;
46297
47387
  const J = Array.from({ length: m }, () => new Array(n).fill(0));
@@ -46304,7 +47394,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
46304
47394
  return J;
46305
47395
  };
46306
47396
  let r = residual(x);
46307
- let cost = norm25(r);
47397
+ let cost = norm27(r);
46308
47398
  let iter = 0;
46309
47399
  for (; iter < maxIter; iter++) {
46310
47400
  const J = jacobian2(x, r);
@@ -46335,7 +47425,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
46335
47425
  }
46336
47426
  const xNew = x.map((v, i) => v + delta[i]);
46337
47427
  const rNew = residual(xNew);
46338
- const costNew = norm25(rNew);
47428
+ const costNew = norm27(rNew);
46339
47429
  if (costNew < cost) {
46340
47430
  x = xNew;
46341
47431
  r = rNew;
@@ -46685,8 +47775,8 @@ function fitPoisson(data) {
46685
47775
  for (const k of data) logLikelihood += -lambda + k * Math.log(lambda) - logFactorial(k);
46686
47776
  return { params: { lambda }, logLikelihood };
46687
47777
  }
46688
- function gammaLogPdf(x, shape, scale) {
46689
- return (shape - 1) * Math.log(x) - x / scale - lgamma(shape) - shape * Math.log(scale);
47778
+ function gammaLogPdf(x, shape, scale3) {
47779
+ return (shape - 1) * Math.log(x) - x / scale3 - lgamma(shape) - shape * Math.log(scale3);
46690
47780
  }
46691
47781
  function fitGamma(data) {
46692
47782
  for (const x of data) {
@@ -46703,10 +47793,10 @@ function fitGamma(data) {
46703
47793
  const k0 = (3 - s + Math.sqrt((s - 3) * (s - 3) + 24 * s)) / (12 * s);
46704
47794
  const f = (k) => Math.log(k) - digamma(k) - s;
46705
47795
  const shape = secant(f, k0, k0 * 1.1, { tol: 1e-12, maxIter: 200 });
46706
- const scale = xbar / shape;
47796
+ const scale3 = xbar / shape;
46707
47797
  let logLikelihood = 0;
46708
- for (const x of data) logLikelihood += gammaLogPdf(x, shape, scale);
46709
- return { params: { shape, scale }, logLikelihood };
47798
+ for (const x of data) logLikelihood += gammaLogPdf(x, shape, scale3);
47799
+ return { params: { shape, scale: scale3 }, logLikelihood };
46710
47800
  }
46711
47801
  function fitDistribution(name254, data) {
46712
47802
  if (data.length === 0) {
@@ -46754,7 +47844,7 @@ function clipToBounds(x, bounds) {
46754
47844
  return Math.min(hi, Math.max(lo, v));
46755
47845
  });
46756
47846
  }
46757
- function dot3(a, b) {
47847
+ function dot5(a, b) {
46758
47848
  let s = 0;
46759
47849
  for (let i = 0; i < a.length; i++) s += a[i] * b[i];
46760
47850
  return s;
@@ -46786,9 +47876,9 @@ function bfgs(f, x0, opts = {}) {
46786
47876
  let converged = infNorm(g) < tol;
46787
47877
  while (!converged && iter < maxIter) {
46788
47878
  const d = matVec2(H, g).map((v) => -v);
46789
- const gd = dot3(g, d);
47879
+ const gd = dot5(g, d);
46790
47880
  const dir = gd < 0 ? d : g.map((v) => -v);
46791
- const dirSlope = gd < 0 ? gd : -dot3(g, g);
47881
+ const dirSlope = gd < 0 ? gd : -dot5(g, g);
46792
47882
  let alpha = 1;
46793
47883
  let xNew = clipToBounds(
46794
47884
  x.map((v, i) => v + alpha * dir[i]),
@@ -46808,11 +47898,11 @@ function bfgs(f, x0, opts = {}) {
46808
47898
  const gNew = gradOf(xNew);
46809
47899
  const s = xNew.map((v, i) => v - x[i]);
46810
47900
  const y = gNew.map((v, i) => v - g[i]);
46811
- const sy = dot3(s, y);
47901
+ const sy = dot5(s, y);
46812
47902
  if (sy > 1e-12) {
46813
47903
  const rho = 1 / sy;
46814
47904
  const Hy = matVec2(H, y);
46815
- const yHy = dot3(y, Hy);
47905
+ const yHy = dot5(y, Hy);
46816
47906
  const HNew = Array.from({ length: n }, () => new Array(n).fill(0));
46817
47907
  for (let i = 0; i < n; i++) {
46818
47908
  for (let j = 0; j < n; j++) {
@@ -47073,18 +48163,18 @@ function integrateNode(raw, x) {
47073
48163
  if (fn === "sqrt") return integrateNode(parse2(`(${us})^(0.5)`), x);
47074
48164
  const a = linearSlope(us, x);
47075
48165
  if (a === null) throw new NotIntegrable(`non-linear argument of ${fn}`);
47076
- const inv2 = a === 1 ? "" : ` / ${num(a)}`;
48166
+ const inv3 = a === 1 ? "" : ` / ${num(a)}`;
47077
48167
  switch (fn) {
47078
48168
  case "sin":
47079
- return `-cos(${us})${inv2}`;
48169
+ return `-cos(${us})${inv3}`;
47080
48170
  case "cos":
47081
- return `sin(${us})${inv2}`;
48171
+ return `sin(${us})${inv3}`;
47082
48172
  case "exp":
47083
- return `exp(${us})${inv2}`;
48173
+ return `exp(${us})${inv3}`;
47084
48174
  case "sinh":
47085
- return `cosh(${us})${inv2}`;
48175
+ return `cosh(${us})${inv3}`;
47086
48176
  case "cosh":
47087
- return `sinh(${us})${inv2}`;
48177
+ return `sinh(${us})${inv3}`;
47088
48178
  default:
47089
48179
  throw new NotIntegrable(`function ${fn}`);
47090
48180
  }
@@ -47196,17 +48286,17 @@ function filtfilt(b, a, x) {
47196
48286
  return back.slice(pad, pad + n);
47197
48287
  }
47198
48288
  var cAdd = (p, q) => p.add(q);
47199
- var cSub = (p, q) => p.sub(q);
47200
- var cMul = (p, q) => p.multiply(q);
47201
- var cDiv = (p, q) => p.divide(q);
47202
- var cScale = (p, s) => cMul(p, new Complex11(s, 0));
48289
+ var cSub2 = (p, q) => p.sub(q);
48290
+ var cMul2 = (p, q) => p.multiply(q);
48291
+ var cDiv2 = (p, q) => p.divide(q);
48292
+ var cScale = (p, s) => cMul2(p, new Complex11(s, 0));
47203
48293
  function polyFromRoots(roots) {
47204
48294
  let c = [new Complex11(1, 0)];
47205
48295
  for (const r of roots) {
47206
48296
  const next = Array.from({ length: c.length + 1 }, () => new Complex11(0, 0));
47207
48297
  for (let i = 0; i < c.length; i++) {
47208
48298
  next[i] = cAdd(next[i], c[i]);
47209
- next[i + 1] = cSub(next[i + 1], cMul(c[i], r));
48299
+ next[i + 1] = cSub2(next[i + 1], cMul2(c[i], r));
47210
48300
  }
47211
48301
  c = next;
47212
48302
  }
@@ -47228,21 +48318,21 @@ function lp2lpZpk(z, p, k, wo) {
47228
48318
  function lp2hpZpk(z, p, k, wo) {
47229
48319
  const degree2 = relativeDegree(z, p);
47230
48320
  const woC = new Complex11(wo, 0);
47231
- const zHp = z.map((zv) => cDiv(woC, zv));
48321
+ const zHp = z.map((zv) => cDiv2(woC, zv));
47232
48322
  for (let i = 0; i < degree2; i++) zHp.push(new Complex11(0, 0));
47233
48323
  let prodZ = new Complex11(1, 0);
47234
- for (const zv of z) prodZ = cMul(prodZ, zv.negate());
48324
+ for (const zv of z) prodZ = cMul2(prodZ, zv.negate());
47235
48325
  let prodP = new Complex11(1, 0);
47236
- for (const pv of p) prodP = cMul(prodP, pv.negate());
47237
- return { z: zHp, p: p.map((pv) => cDiv(woC, pv)), k: k * cDiv(prodZ, prodP).re };
48326
+ for (const pv of p) prodP = cMul2(prodP, pv.negate());
48327
+ return { z: zHp, p: p.map((pv) => cDiv2(woC, pv)), k: k * cDiv2(prodZ, prodP).re };
47238
48328
  }
47239
48329
  function lp2bpZpk(z, p, k, wo, bw) {
47240
48330
  const degree2 = relativeDegree(z, p);
47241
48331
  const wo2 = new Complex11(wo * wo, 0);
47242
48332
  const shift = (roots) => {
47243
48333
  const lp = roots.map((r) => cScale(r, bw / 2));
47244
- const plus = lp.map((r) => cAdd(r, cSub(cMul(r, r), wo2).sqrt()));
47245
- const minus = lp.map((r) => cSub(r, cSub(cMul(r, r), wo2).sqrt()));
48334
+ const plus = lp.map((r) => cAdd(r, cSub2(cMul2(r, r), wo2).sqrt()));
48335
+ const minus = lp.map((r) => cSub2(r, cSub2(cMul2(r, r), wo2).sqrt()));
47246
48336
  return plus.concat(minus);
47247
48337
  };
47248
48338
  const zBp = shift(z);
@@ -47254,33 +48344,33 @@ function lp2bsZpk(z, p, k, wo, bw) {
47254
48344
  const wo2 = new Complex11(wo * wo, 0);
47255
48345
  const bw2 = new Complex11(bw / 2, 0);
47256
48346
  const shift = (roots) => {
47257
- const hp = roots.map((r) => cDiv(bw2, r));
47258
- const plus = hp.map((r) => cAdd(r, cSub(cMul(r, r), wo2).sqrt()));
47259
- const minus = hp.map((r) => cSub(r, cSub(cMul(r, r), wo2).sqrt()));
48347
+ const hp = roots.map((r) => cDiv2(bw2, r));
48348
+ const plus = hp.map((r) => cAdd(r, cSub2(cMul2(r, r), wo2).sqrt()));
48349
+ const minus = hp.map((r) => cSub2(r, cSub2(cMul2(r, r), wo2).sqrt()));
47260
48350
  return plus.concat(minus);
47261
48351
  };
47262
48352
  const zBs = shift(z);
47263
48353
  for (let i = 0; i < degree2; i++) zBs.push(new Complex11(0, wo));
47264
48354
  for (let i = 0; i < degree2; i++) zBs.push(new Complex11(0, -wo));
47265
48355
  let prodZ = new Complex11(1, 0);
47266
- for (const zv of z) prodZ = cMul(prodZ, zv.negate());
48356
+ for (const zv of z) prodZ = cMul2(prodZ, zv.negate());
47267
48357
  let prodP = new Complex11(1, 0);
47268
- for (const pv of p) prodP = cMul(prodP, pv.negate());
47269
- return { z: zBs, p: shift(p), k: k * cDiv(prodZ, prodP).re };
48358
+ for (const pv of p) prodP = cMul2(prodP, pv.negate());
48359
+ return { z: zBs, p: shift(p), k: k * cDiv2(prodZ, prodP).re };
47270
48360
  }
47271
48361
  function bilinearZpk(z, p, k, fs) {
47272
48362
  const degree2 = relativeDegree(z, p);
47273
48363
  const fs2 = new Complex11(2 * fs, 0);
47274
- const zZ = z.map((zv) => cDiv(cAdd(fs2, zv), cSub(fs2, zv)));
48364
+ const zZ = z.map((zv) => cDiv2(cAdd(fs2, zv), cSub2(fs2, zv)));
47275
48365
  for (let i = 0; i < degree2; i++) zZ.push(new Complex11(-1, 0));
47276
48366
  let prodZ = new Complex11(1, 0);
47277
- for (const zv of z) prodZ = cMul(prodZ, cSub(fs2, zv));
48367
+ for (const zv of z) prodZ = cMul2(prodZ, cSub2(fs2, zv));
47278
48368
  let prodP = new Complex11(1, 0);
47279
- for (const pv of p) prodP = cMul(prodP, cSub(fs2, pv));
48369
+ for (const pv of p) prodP = cMul2(prodP, cSub2(fs2, pv));
47280
48370
  return {
47281
48371
  z: zZ,
47282
- p: p.map((pv) => cDiv(cAdd(fs2, pv), cSub(fs2, pv))),
47283
- k: k * cDiv(prodZ, prodP).re
48372
+ p: p.map((pv) => cDiv2(cAdd(fs2, pv), cSub2(fs2, pv))),
48373
+ k: k * cDiv2(prodZ, prodP).re
47284
48374
  };
47285
48375
  }
47286
48376
  function zpkToTf(z, p, k) {
@@ -47461,7 +48551,7 @@ function cheb1ap(N, rp) {
47461
48551
  p.push(new Complex12(-Math.sinh(mu) * Math.cos(theta), -Math.cosh(mu) * Math.sin(theta)));
47462
48552
  }
47463
48553
  let prod2 = new Complex12(1, 0);
47464
- for (const pv of p) prod2 = cMul(prod2, pv.negate());
48554
+ for (const pv of p) prod2 = cMul2(prod2, pv.negate());
47465
48555
  let k = prod2.re;
47466
48556
  if (N % 2 === 0) k /= Math.sqrt(1 + eps * eps);
47467
48557
  return { z: [], p, k };
@@ -47486,13 +48576,13 @@ function cheb2ap(N, rs) {
47486
48576
  for (let m = -N + 1; m < N; m += 2) {
47487
48577
  const theta = Math.PI * m / (2 * N);
47488
48578
  const s = new Complex12(Math.sinh(mu) * Math.cos(theta), Math.cosh(mu) * Math.sin(theta));
47489
- p.push(cDiv(new Complex12(1, 0), s).negate());
48579
+ p.push(cDiv2(new Complex12(1, 0), s).negate());
47490
48580
  }
47491
48581
  let prodP = new Complex12(1, 0);
47492
- for (const pv of p) prodP = cMul(prodP, pv.negate());
48582
+ for (const pv of p) prodP = cMul2(prodP, pv.negate());
47493
48583
  let prodZ = new Complex12(1, 0);
47494
- for (const zv of z) prodZ = cMul(prodZ, zv.negate());
47495
- const k = cDiv(prodP, prodZ).re;
48584
+ for (const zv of z) prodZ = cMul2(prodZ, zv.negate());
48585
+ const k = cDiv2(prodP, prodZ).re;
47496
48586
  return { z, p, k };
47497
48587
  }
47498
48588
  function cheby2(N, rs, Wn, btype = "low") {
@@ -47546,7 +48636,7 @@ function arcJacSn(w, m) {
47546
48636
  for (let i = 0; i < ks.length - 1; i++) {
47547
48637
  const knext = ks[i + 1];
47548
48638
  const comp = complementComplex(cScale(wn, ks[i]));
47549
- wn = cDiv(cScale(wn, 2), cMul(new Complex12(1 + knext, 0), new Complex12(1, 0).add(comp)));
48639
+ wn = cDiv2(cScale(wn, 2), cMul2(new Complex12(1 + knext, 0), new Complex12(1, 0).add(comp)));
47550
48640
  }
47551
48641
  return cScale(cScale(wn.asin(), 2 / Math.PI), K);
47552
48642
  }
@@ -47606,10 +48696,10 @@ function ellipap(N, rp, rs) {
47606
48696
  pFull = pHalf.concat(pHalf.map((pv) => new Complex12(pv.re, -pv.im)));
47607
48697
  }
47608
48698
  let prodP = new Complex12(1, 0);
47609
- for (const pv of pFull) prodP = cMul(prodP, pv.negate());
48699
+ for (const pv of pFull) prodP = cMul2(prodP, pv.negate());
47610
48700
  let prodZ = new Complex12(1, 0);
47611
- for (const zv of zFull) prodZ = cMul(prodZ, zv.negate());
47612
- let k = cDiv(prodP, prodZ).re;
48701
+ for (const zv of zFull) prodZ = cMul2(prodZ, zv.negate());
48702
+ let k = cDiv2(prodP, prodZ).re;
47613
48703
  if (N % 2 === 0) k /= Math.sqrt(1 + epsSq);
47614
48704
  return { z: zFull, p: pFull, k };
47615
48705
  }
@@ -48146,23 +49236,23 @@ function waverec(coeffs, wavelet = "haar") {
48146
49236
  }
48147
49237
  return approx;
48148
49238
  }
48149
- function rickerWavelet(points, scale) {
48150
- const amplitude = 2 / (Math.sqrt(3 * scale) * Math.pow(Math.PI, 0.25));
49239
+ function rickerWavelet(points, scale3) {
49240
+ const amplitude = 2 / (Math.sqrt(3 * scale3) * Math.pow(Math.PI, 0.25));
48151
49241
  const out = new Array(points);
48152
49242
  const center2 = (points - 1) / 2;
48153
49243
  for (let i = 0; i < points; i++) {
48154
- const t = (i - center2) / scale;
49244
+ const t = (i - center2) / scale3;
48155
49245
  const t2 = t * t;
48156
49246
  out[i] = amplitude * (1 - t2) * Math.exp(-t2 / 2);
48157
49247
  }
48158
49248
  return out;
48159
49249
  }
48160
- function morletWavelet(points, scale) {
48161
- const norm4 = 1 / (Math.sqrt(scale) * Math.pow(Math.PI, 0.25));
49250
+ function morletWavelet(points, scale3) {
49251
+ const norm4 = 1 / (Math.sqrt(scale3) * Math.pow(Math.PI, 0.25));
48162
49252
  const out = new Array(points);
48163
49253
  const center2 = (points - 1) / 2;
48164
49254
  for (let i = 0; i < points; i++) {
48165
- const t = (i - center2) / scale;
49255
+ const t = (i - center2) / scale3;
48166
49256
  out[i] = norm4 * Math.cos(5 * t) * Math.exp(-(t * t) / 2);
48167
49257
  }
48168
49258
  return out;
@@ -48172,10 +49262,10 @@ function cwt(x, scales, wavelet = "ricker") {
48172
49262
  throw new Error(`cwt: unsupported wavelet "${wavelet}"`);
48173
49263
  }
48174
49264
  const n = x.length;
48175
- return scales.map((scale) => {
48176
- if (scale <= 0) throw new Error("cwt: scales must be positive");
48177
- const points = Math.max(1, Math.min(Math.round(10 * scale), n));
48178
- const psi = wavelet === "ricker" ? rickerWavelet(points, scale) : morletWavelet(points, scale);
49265
+ return scales.map((scale3) => {
49266
+ if (scale3 <= 0) throw new Error("cwt: scales must be positive");
49267
+ const points = Math.max(1, Math.min(Math.round(10 * scale3), n));
49268
+ const psi = wavelet === "ricker" ? rickerWavelet(points, scale3) : morletWavelet(points, scale3);
48179
49269
  return convDirect(x, psi, "same");
48180
49270
  });
48181
49271
  }
@@ -48293,10 +49383,10 @@ function crossPower(x, y, opts) {
48293
49383
  im3[k] += X.im * Y.re - X.re * Y.im;
48294
49384
  }
48295
49385
  }
48296
- const scale = 1 / (fs * winSum2 * nSeg);
49386
+ const scale3 = 1 / (fs * winSum2 * nSeg);
48297
49387
  for (let k = 0; k < half; k++) {
48298
- re3[k] *= scale;
48299
- im3[k] *= scale;
49388
+ re3[k] *= scale3;
49389
+ im3[k] *= scale3;
48300
49390
  }
48301
49391
  const frequencies = Array.from({ length: half }, (_, k) => k * fs / nfft);
48302
49392
  return { frequencies, re: re3, im: im3 };
@@ -48386,15 +49476,15 @@ function haversine(lat1, lon1, lat2, lon2, radius = EARTH_RADIUS_KM) {
48386
49476
  const a = Math.sin(dPhi / 2) ** 2 + Math.cos(phi1) * Math.cos(phi2) * Math.sin(dLambda / 2) ** 2;
48387
49477
  return radius * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
48388
49478
  }
48389
- var dot4 = (a, b) => a.reduce((s, v, i) => s + v * b[i], 0);
48390
- var norm3 = (a) => Math.sqrt(dot4(a, a));
49479
+ var dot6 = (a, b) => a.reduce((s, v, i) => s + v * b[i], 0);
49480
+ var norm3 = (a) => Math.sqrt(dot6(a, a));
48391
49481
  function slerp(v0, v1, t) {
48392
49482
  const n0 = norm3(v0);
48393
49483
  const n16 = norm3(v1);
48394
49484
  if (n0 === 0 || n16 === 0) throw new Error("slerp: input vectors must be non-zero");
48395
49485
  const u0 = v0.map((v) => v / n0);
48396
49486
  const u1 = v1.map((v) => v / n16);
48397
- let cos2 = dot4(u0, u1);
49487
+ let cos2 = dot6(u0, u1);
48398
49488
  cos2 = cos2 > 1 ? 1 : cos2 < -1 ? -1 : cos2;
48399
49489
  const omega = Math.acos(cos2);
48400
49490
  const mag = n0 + (n16 - n0) * t;
@@ -48501,22 +49591,22 @@ function noncentralTCDF(t, df, nc) {
48501
49591
  }
48502
49592
  function circularSums(angles, opts) {
48503
49593
  const { high = TWO_PI, low = 0 } = opts;
48504
- const scale = TWO_PI / (high - low);
49594
+ const scale3 = TWO_PI / (high - low);
48505
49595
  let sinSum = 0;
48506
49596
  let cosSum = 0;
48507
49597
  for (const a of angles) {
48508
- const theta = (a - low) * scale;
49598
+ const theta = (a - low) * scale3;
48509
49599
  sinSum += Math.sin(theta);
48510
49600
  cosSum += Math.cos(theta);
48511
49601
  }
48512
- return { sinSum, cosSum, scale };
49602
+ return { sinSum, cosSum, scale: scale3 };
48513
49603
  }
48514
49604
  function circmean(angles, opts = {}) {
48515
49605
  const { low = 0 } = opts;
48516
- const { sinSum, cosSum, scale } = circularSums(angles, opts);
49606
+ const { sinSum, cosSum, scale: scale3 } = circularSums(angles, opts);
48517
49607
  let mean7 = Math.atan2(sinSum, cosSum);
48518
49608
  if (mean7 < 0) mean7 += TWO_PI;
48519
- return mean7 / scale + low;
49609
+ return mean7 / scale3 + low;
48520
49610
  }
48521
49611
  function circvar(angles, opts = {}) {
48522
49612
  const n = angles.length;
@@ -48788,6 +49878,7 @@ export {
48788
49878
  betweennessCentrality,
48789
49879
  bezierCurve,
48790
49880
  bfgs,
49881
+ bicgstab,
48791
49882
  bigint,
48792
49883
  bignumber,
48793
49884
  bilinear,
@@ -48808,6 +49899,7 @@ export {
48808
49899
  butter,
48809
49900
  buttord,
48810
49901
  cancel,
49902
+ care,
48811
49903
  carlsonRC,
48812
49904
  carlsonRD,
48813
49905
  carlsonRF,
@@ -48824,6 +49916,7 @@ export {
48824
49916
  cbrt,
48825
49917
  ceil,
48826
49918
  centroid,
49919
+ cg,
48827
49920
  chain,
48828
49921
  characteristicPolynomial,
48829
49922
  cheby1,
@@ -48864,7 +49957,9 @@ export {
48864
49957
  compareUnits,
48865
49958
  compileExpr,
48866
49959
  complex,
49960
+ complexCos,
48867
49961
  complexExpand,
49962
+ complexSin,
48868
49963
  composition,
48869
49964
  concat2 as concat,
48870
49965
  cond,
@@ -48883,6 +49978,7 @@ export {
48883
49978
  cos,
48884
49979
  cosIntegral,
48885
49980
  cosh,
49981
+ cosm,
48886
49982
  cot,
48887
49983
  coth,
48888
49984
  coulomb,
@@ -48916,6 +50012,7 @@ export {
48916
50012
  curvefit,
48917
50013
  cwt,
48918
50014
  dagostinoTest,
50015
+ dare,
48919
50016
  dbscan,
48920
50017
  dct,
48921
50018
  decimate,
@@ -48949,6 +50046,7 @@ export {
48949
50046
  divideScalar,
48950
50047
  divisorSigma,
48951
50048
  divisors,
50049
+ dlyap,
48952
50050
  dot,
48953
50051
  dot3D,
48954
50052
  dotDivide,
@@ -48961,6 +50059,7 @@ export {
48961
50059
  efimovFactor,
48962
50060
  eigenvectorCentrality,
48963
50061
  eigs,
50062
+ eigsh,
48964
50063
  elasticNet,
48965
50064
  electricConstant,
48966
50065
  electronMass,
@@ -49106,6 +50205,7 @@ export {
49106
50205
  fsum,
49107
50206
  fullSimplify,
49108
50207
  functionExpand,
50208
+ funm,
49109
50209
  fuseUnaryChain,
49110
50210
  fuseUnaryChainAsync,
49111
50211
  fuseUnaryChainReduceAsync,
@@ -49128,6 +50228,7 @@ export {
49128
50228
  getMatrixDataType,
49129
50229
  globalMinimize,
49130
50230
  gmean,
50231
+ gmres,
49131
50232
  goertzel,
49132
50233
  gpuAdd,
49133
50234
  gpuMatmul,
@@ -49245,6 +50346,7 @@ export {
49245
50346
  largerEq,
49246
50347
  lasso,
49247
50348
  lcm,
50349
+ ldl,
49248
50350
  leafCount,
49249
50351
  leastSquares,
49250
50352
  leftShift,
@@ -49323,6 +50425,7 @@ export {
49323
50425
  minimizeScalar,
49324
50426
  minimumSpanningTree,
49325
50427
  minkowskiDistance,
50428
+ minres,
49326
50429
  mod,
49327
50430
  mode,
49328
50431
  moebiusMu,
@@ -49555,6 +50658,7 @@ export {
49555
50658
  sinIntegral,
49556
50659
  singularValues2 as singularValues,
49557
50660
  sinh,
50661
+ sinm,
49558
50662
  size,
49559
50663
  skewness,
49560
50664
  slerp,
@@ -49564,6 +50668,7 @@ export {
49564
50668
  softmax,
49565
50669
  solve,
49566
50670
  solveBVP,
50671
+ solveBanded,
49567
50672
  solveODE,
49568
50673
  solveODESystem,
49569
50674
  solvePDE,
@@ -49616,6 +50721,7 @@ export {
49616
50721
  terminatePool,
49617
50722
  terminateSignal,
49618
50723
  terminateStatistics,
50724
+ thomasSolve,
49619
50725
  thomsonCrossSection,
49620
50726
  to,
49621
50727
  toBest,
@@ -49623,6 +50729,7 @@ export {
49623
50729
  toRadians,
49624
50730
  toRadicals,
49625
50731
  toeplitz,
50732
+ toeplitzSolve,
49626
50733
  together,
49627
50734
  topologicalSort,
49628
50735
  trace2 as trace,