@danielsimonjr/mathts-functions 0.6.0 → 0.8.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
@@ -1030,13 +1030,13 @@ var norm = mathTyped("norm", {
1030
1030
  number: (a) => Math.abs(a),
1031
1031
  Complex: (a) => a.abs(),
1032
1032
  BigNumber: (a) => a.abs(),
1033
- Array: (arr6) => Math.sqrt(arr6.reduce((sum3, x) => sum3 + x * x, 0)),
1034
- "Array, number": (arr6, p) => {
1035
- if (p === Infinity) return Math.max(...arr6.map(Math.abs));
1036
- if (p === -Infinity) return Math.min(...arr6.map(Math.abs));
1037
- if (p === 0) return arr6.filter((x) => x !== 0).length;
1033
+ Array: (arr7) => Math.sqrt(arr7.reduce((sum3, x) => sum3 + x * x, 0)),
1034
+ "Array, number": (arr7, p) => {
1035
+ if (p === Infinity) return Math.max(...arr7.map(Math.abs));
1036
+ if (p === -Infinity) return Math.min(...arr7.map(Math.abs));
1037
+ if (p === 0) return arr7.filter((x) => x !== 0).length;
1038
1038
  return Math.pow(
1039
- arr6.reduce((sum3, x) => sum3 + Math.pow(Math.abs(x), p), 0),
1039
+ arr7.reduce((sum3, x) => sum3 + Math.pow(Math.abs(x), p), 0),
1040
1040
  1 / p
1041
1041
  );
1042
1042
  },
@@ -1148,7 +1148,7 @@ var min = mathTyped("min", {
1148
1148
  "bigint, bigint": (a, b) => a < b ? a : b,
1149
1149
  "Fraction, Fraction": (a, b) => a.compare(b) < 0 ? a : b,
1150
1150
  "BigNumber, BigNumber": (a, b) => a.compare(b) < 0 ? a : b,
1151
- Array: (arr6) => Math.min(...arr6),
1151
+ Array: (arr7) => Math.min(...arr7),
1152
1152
  number: (a) => a,
1153
1153
  "number, number": (a, b) => Math.min(a, b),
1154
1154
  "number, number, ...number": (a, b, rest) => Math.min(a, b, ...rest),
@@ -1162,7 +1162,7 @@ var max = mathTyped("max", {
1162
1162
  "bigint, bigint": (a, b) => a > b ? a : b,
1163
1163
  "Fraction, Fraction": (a, b) => a.compare(b) > 0 ? a : b,
1164
1164
  "BigNumber, BigNumber": (a, b) => a.compare(b) > 0 ? a : b,
1165
- Array: (arr6) => Math.max(...arr6),
1165
+ Array: (arr7) => Math.max(...arr7),
1166
1166
  number: (a) => a,
1167
1167
  "number, number": (a, b) => Math.max(a, b),
1168
1168
  "number, number, ...number": (a, b, rest) => Math.max(a, b, ...rest),
@@ -1173,10 +1173,10 @@ var max = mathTyped("max", {
1173
1173
  }
1174
1174
  });
1175
1175
  var sum = mathTyped("sum", {
1176
- Array: (arr6) => {
1176
+ Array: (arr7) => {
1177
1177
  let total = 0;
1178
- for (let i = 0; i < arr6.length; i++) {
1179
- total += arr6[i];
1178
+ for (let i = 0; i < arr7.length; i++) {
1179
+ total += arr7[i];
1180
1180
  }
1181
1181
  return total;
1182
1182
  },
@@ -1187,13 +1187,13 @@ var sum = mathTyped("sum", {
1187
1187
  }
1188
1188
  });
1189
1189
  var mean = mathTyped("mean", {
1190
- Array: (arr6) => {
1191
- if (arr6.length === 0) return NaN;
1190
+ Array: (arr7) => {
1191
+ if (arr7.length === 0) return NaN;
1192
1192
  let total = 0;
1193
- for (let i = 0; i < arr6.length; i++) {
1194
- total += arr6[i];
1193
+ for (let i = 0; i < arr7.length; i++) {
1194
+ total += arr7[i];
1195
1195
  }
1196
- return total / arr6.length;
1196
+ return total / arr7.length;
1197
1197
  },
1198
1198
  // Parallel Float64Array mean
1199
1199
  Float64Array: async (a) => {
@@ -1213,20 +1213,20 @@ function varianceFromM2(m2, n, norm4) {
1213
1213
  return n > 1 ? m2 / (n - 1) : 0;
1214
1214
  }
1215
1215
  }
1216
- function m2OfArray(arr6) {
1216
+ function m2OfArray(arr7) {
1217
1217
  let m = 0;
1218
1218
  let m2 = 0;
1219
- for (let i = 0; i < arr6.length; i++) {
1220
- const delta = arr6[i] - m;
1219
+ for (let i = 0; i < arr7.length; i++) {
1220
+ const delta = arr7[i] - m;
1221
1221
  m += delta / (i + 1);
1222
- const delta2 = arr6[i] - m;
1222
+ const delta2 = arr7[i] - m;
1223
1223
  m2 += delta * delta2;
1224
1224
  }
1225
1225
  return m2;
1226
1226
  }
1227
1227
  var variance = mathTyped("variance", {
1228
- Array: (arr6) => varianceFromM2(m2OfArray(arr6), arr6.length, "unbiased"),
1229
- "Array, string": (arr6, norm4) => varianceFromM2(m2OfArray(arr6), arr6.length, norm4),
1228
+ Array: (arr7) => varianceFromM2(m2OfArray(arr7), arr7.length, "unbiased"),
1229
+ "Array, string": (arr7, norm4) => varianceFromM2(m2OfArray(arr7), arr7.length, norm4),
1230
1230
  // Parallel Float64Array variance. computePool returns POPULATION variance
1231
1231
  // (sum2/n); recover sum2 = pop·n and renormalize for the requested convention.
1232
1232
  Float64Array: async (a) => {
@@ -1239,8 +1239,8 @@ var variance = mathTyped("variance", {
1239
1239
  }
1240
1240
  });
1241
1241
  var std = mathTyped("std", {
1242
- Array: (arr6) => Math.sqrt(varianceFromM2(m2OfArray(arr6), arr6.length, "unbiased")),
1243
- "Array, string": (arr6, norm4) => Math.sqrt(varianceFromM2(m2OfArray(arr6), arr6.length, norm4)),
1242
+ Array: (arr7) => Math.sqrt(varianceFromM2(m2OfArray(arr7), arr7.length, "unbiased")),
1243
+ "Array, string": (arr7, norm4) => Math.sqrt(varianceFromM2(m2OfArray(arr7), arr7.length, norm4)),
1244
1244
  // Parallel Float64Array std — derive from the (renormalized) variance so the
1245
1245
  // convention matches the Array path and parallelStatStd.
1246
1246
  Float64Array: async (a) => {
@@ -1597,7 +1597,7 @@ var hypot = mathTyped2("hypot", {
1597
1597
  number: (a) => Math.abs(a),
1598
1598
  "number, number": (a, b) => Math.hypot(a, b),
1599
1599
  "number, number, ...number": (a, b, rest) => Math.hypot(a, b, ...rest),
1600
- Array: (arr6) => Math.hypot(...arr6)
1600
+ Array: (arr7) => Math.hypot(...arr7)
1601
1601
  });
1602
1602
  var typedTrigonometry = {
1603
1603
  // Basic
@@ -1628,8 +1628,8 @@ var typedTrigonometry = {
1628
1628
  // src/typed/statistics.ts
1629
1629
  import { mathTyped as mathTyped3 } from "@danielsimonjr/mathts-core";
1630
1630
  import { computePool as computePool3 } from "@danielsimonjr/mathts-parallel";
1631
- function toFloat64Array(arr6) {
1632
- return new Float64Array(arr6);
1631
+ function toFloat64Array(arr7) {
1632
+ return new Float64Array(arr7);
1633
1633
  }
1634
1634
  var parallelStatSum = mathTyped3("parallelStatSum", {
1635
1635
  // Float64Array - parallel execution
@@ -1638,8 +1638,8 @@ var parallelStatSum = mathTyped3("parallelStatSum", {
1638
1638
  return result.result;
1639
1639
  },
1640
1640
  // Number array
1641
- Array: async (arr6) => {
1642
- const data = toFloat64Array(arr6);
1641
+ Array: async (arr7) => {
1642
+ const data = toFloat64Array(arr7);
1643
1643
  const result = await computePool3.sum(data);
1644
1644
  return result.result;
1645
1645
  },
@@ -1655,9 +1655,9 @@ var parallelStatMean = mathTyped3("parallelStatMean", {
1655
1655
  return result.result;
1656
1656
  },
1657
1657
  // Number array - parallel execution
1658
- Array: async (arr6) => {
1659
- if (arr6.length === 0) return NaN;
1660
- const data = toFloat64Array(arr6);
1658
+ Array: async (arr7) => {
1659
+ if (arr7.length === 0) return NaN;
1660
+ const data = toFloat64Array(arr7);
1661
1661
  const result = await computePool3.mean(data);
1662
1662
  return result.result;
1663
1663
  },
@@ -1692,25 +1692,25 @@ var parallelStatVariance = mathTyped3("parallelStatVariance", {
1692
1692
  }
1693
1693
  },
1694
1694
  // Number array
1695
- Array: async (arr6) => {
1696
- if (arr6.length === 0) return NaN;
1697
- const data = toFloat64Array(arr6);
1695
+ Array: async (arr7) => {
1696
+ if (arr7.length === 0) return NaN;
1697
+ const data = toFloat64Array(arr7);
1698
1698
  return parallelStatVariance(data);
1699
1699
  },
1700
1700
  // Number array with normalization
1701
- "Array, string": async (arr6, normalization) => {
1702
- if (arr6.length === 0) return NaN;
1703
- const data = toFloat64Array(arr6);
1701
+ "Array, string": async (arr7, normalization) => {
1702
+ if (arr7.length === 0) return NaN;
1703
+ const data = toFloat64Array(arr7);
1704
1704
  return parallelStatVariance(data, normalization);
1705
1705
  },
1706
1706
  // Variadic form
1707
1707
  "number, number": (a, b) => {
1708
- const mean5 = (a + b) / 2;
1709
- return ((a - mean5) ** 2 + (b - mean5) ** 2) / 1;
1708
+ const mean6 = (a + b) / 2;
1709
+ return ((a - mean6) ** 2 + (b - mean6) ** 2) / 1;
1710
1710
  },
1711
1711
  "number, number, number": (a, b, c) => {
1712
- const mean5 = (a + b + c) / 3;
1713
- return ((a - mean5) ** 2 + (b - mean5) ** 2 + (c - mean5) ** 2) / 2;
1712
+ const mean6 = (a + b + c) / 3;
1713
+ return ((a - mean6) ** 2 + (b - mean6) ** 2 + (c - mean6) ** 2) / 2;
1714
1714
  }
1715
1715
  });
1716
1716
  var parallelStatStd = mathTyped3("parallelStatStd", {
@@ -1727,15 +1727,15 @@ var parallelStatStd = mathTyped3("parallelStatStd", {
1727
1727
  return Math.sqrt(variance2);
1728
1728
  },
1729
1729
  // Number array
1730
- Array: async (arr6) => {
1731
- if (arr6.length === 0) return NaN;
1732
- const data = toFloat64Array(arr6);
1730
+ Array: async (arr7) => {
1731
+ if (arr7.length === 0) return NaN;
1732
+ const data = toFloat64Array(arr7);
1733
1733
  return parallelStatStd(data);
1734
1734
  },
1735
1735
  // Number array with normalization
1736
- "Array, string": async (arr6, normalization) => {
1737
- if (arr6.length === 0) return NaN;
1738
- const data = toFloat64Array(arr6);
1736
+ "Array, string": async (arr7, normalization) => {
1737
+ if (arr7.length === 0) return NaN;
1738
+ const data = toFloat64Array(arr7);
1739
1739
  return parallelStatStd(data, normalization);
1740
1740
  }
1741
1741
  });
@@ -1746,9 +1746,9 @@ var parallelStatMin = mathTyped3("parallelStatMin", {
1746
1746
  return result.result;
1747
1747
  },
1748
1748
  // Number array
1749
- Array: async (arr6) => {
1750
- if (arr6.length === 0) return Infinity;
1751
- const data = toFloat64Array(arr6);
1749
+ Array: async (arr7) => {
1750
+ if (arr7.length === 0) return Infinity;
1751
+ const data = toFloat64Array(arr7);
1752
1752
  const result = await computePool3.min(data);
1753
1753
  return result.result;
1754
1754
  },
@@ -1766,9 +1766,9 @@ var parallelStatMax = mathTyped3("parallelStatMax", {
1766
1766
  return result.result;
1767
1767
  },
1768
1768
  // Number array
1769
- Array: async (arr6) => {
1770
- if (arr6.length === 0) return -Infinity;
1771
- const data = toFloat64Array(arr6);
1769
+ Array: async (arr7) => {
1770
+ if (arr7.length === 0) return -Infinity;
1771
+ const data = toFloat64Array(arr7);
1772
1772
  const result = await computePool3.max(data);
1773
1773
  return result.result;
1774
1774
  },
@@ -1786,8 +1786,8 @@ var parallelStatMinMax = mathTyped3("parallelStatMinMax", {
1786
1786
  return result.result;
1787
1787
  },
1788
1788
  // Number array
1789
- Array: async (arr6) => {
1790
- const data = toFloat64Array(arr6);
1789
+ Array: async (arr7) => {
1790
+ const data = toFloat64Array(arr7);
1791
1791
  const result = await computePool3.minMax(data);
1792
1792
  return result.result;
1793
1793
  }
@@ -1807,25 +1807,25 @@ var parallelStatMedian = mathTyped3("parallelStatMedian", {
1807
1807
  return sorted[mid];
1808
1808
  },
1809
1809
  // Number array
1810
- Array: async (arr6) => {
1811
- if (arr6.length === 0) return NaN;
1812
- return parallelStatMedian(toFloat64Array(arr6));
1810
+ Array: async (arr7) => {
1811
+ if (arr7.length === 0) return NaN;
1812
+ return parallelStatMedian(toFloat64Array(arr7));
1813
1813
  },
1814
1814
  // Variadic form
1815
1815
  "number, number": (a, b) => (a + b) / 2,
1816
1816
  "number, number, number": (a, b, c) => {
1817
- const arr6 = [a, b, c].sort((x, y) => x - y);
1818
- return arr6[1];
1817
+ const arr7 = [a, b, c].sort((x, y) => x - y);
1818
+ return arr7[1];
1819
1819
  }
1820
1820
  });
1821
1821
  var parallelStatMode = mathTyped3("parallelStatMode", {
1822
1822
  // Number array
1823
- Array: (arr6) => {
1824
- if (arr6.length === 0) return [];
1823
+ Array: (arr7) => {
1824
+ if (arr7.length === 0) return [];
1825
1825
  const counts = /* @__PURE__ */ new Map();
1826
1826
  let maxCount = 0;
1827
- for (let i = 0; i < arr6.length; i++) {
1828
- const val = arr6[i];
1827
+ for (let i = 0; i < arr7.length; i++) {
1828
+ const val = arr7[i];
1829
1829
  const count2 = (counts.get(val) || 0) + 1;
1830
1830
  counts.set(val, count2);
1831
1831
  if (count2 > maxCount) maxCount = count2;
@@ -1843,11 +1843,11 @@ var parallelStatMode = mathTyped3("parallelStatMode", {
1843
1843
  });
1844
1844
  var parallelStatProd = mathTyped3("parallelStatProd", {
1845
1845
  // Number array
1846
- Array: (arr6) => {
1847
- if (arr6.length === 0) return 1;
1846
+ Array: (arr7) => {
1847
+ if (arr7.length === 0) return 1;
1848
1848
  let prod2 = 1;
1849
- for (let i = 0; i < arr6.length; i++) {
1850
- prod2 *= arr6[i];
1849
+ for (let i = 0; i < arr7.length; i++) {
1850
+ prod2 *= arr7[i];
1851
1851
  }
1852
1852
  return prod2;
1853
1853
  },
@@ -1875,8 +1875,8 @@ var parallelStatNorm = mathTyped3("parallelStatNorm", {
1875
1875
  return result.result;
1876
1876
  },
1877
1877
  // Number array
1878
- Array: async (arr6) => {
1879
- const data = toFloat64Array(arr6);
1878
+ Array: async (arr7) => {
1879
+ const data = toFloat64Array(arr7);
1880
1880
  const result = await computePool3.norm(data);
1881
1881
  return result.result;
1882
1882
  },
@@ -1917,8 +1917,8 @@ var parallelStatNorm = mathTyped3("parallelStatNorm", {
1917
1917
  }
1918
1918
  },
1919
1919
  // Number array with p-norm
1920
- "Array, number": (arr6, p) => {
1921
- return parallelStatNorm(toFloat64Array(arr6), p);
1920
+ "Array, number": (arr7, p) => {
1921
+ return parallelStatNorm(toFloat64Array(arr7), p);
1922
1922
  }
1923
1923
  });
1924
1924
  var parallelStatDistance = mathTyped3("parallelStatDistance", {
@@ -1967,16 +1967,16 @@ var parallelStatMAD = mathTyped3("parallelStatMAD", {
1967
1967
  const n = data.length;
1968
1968
  if (n === 0) return NaN;
1969
1969
  const result = await computePool3.mean(data);
1970
- const mean5 = result.result;
1970
+ const mean6 = result.result;
1971
1971
  let mad2 = 0;
1972
1972
  for (let i = 0; i < n; i++) {
1973
- mad2 += Math.abs(data[i] - mean5);
1973
+ mad2 += Math.abs(data[i] - mean6);
1974
1974
  }
1975
1975
  return mad2 / n;
1976
1976
  },
1977
1977
  // Number array
1978
- Array: async (arr6) => {
1979
- return parallelStatMAD(toFloat64Array(arr6));
1978
+ Array: async (arr7) => {
1979
+ return parallelStatMAD(toFloat64Array(arr7));
1980
1980
  }
1981
1981
  });
1982
1982
  var parallelStatCumsum = mathTyped3("parallelStatCumsum", {
@@ -1991,11 +1991,11 @@ var parallelStatCumsum = mathTyped3("parallelStatCumsum", {
1991
1991
  return result;
1992
1992
  },
1993
1993
  // Number array
1994
- Array: (arr6) => {
1994
+ Array: (arr7) => {
1995
1995
  const result = [];
1996
1996
  let sum3 = 0;
1997
- for (let i = 0; i < arr6.length; i++) {
1998
- sum3 += arr6[i];
1997
+ for (let i = 0; i < arr7.length; i++) {
1998
+ sum3 += arr7[i];
1999
1999
  result.push(sum3);
2000
2000
  }
2001
2001
  return result;
@@ -2019,8 +2019,8 @@ var parallelStatQuantile = mathTyped3("parallelStatQuantile", {
2019
2019
  return sorted[lower] * (1 - frac) + sorted[upper] * frac;
2020
2020
  },
2021
2021
  // Number array
2022
- "Array, number": (arr6, q) => {
2023
- return parallelStatQuantile(toFloat64Array(arr6), q);
2022
+ "Array, number": (arr7, q) => {
2023
+ return parallelStatQuantile(toFloat64Array(arr7), q);
2024
2024
  },
2025
2025
  // Multiple quantiles
2026
2026
  "Float64Array, Array": (data, quantiles) => {
@@ -2043,15 +2043,15 @@ var parallelStatHistogram = mathTyped3("parallelStatHistogram", {
2043
2043
  return result.result;
2044
2044
  },
2045
2045
  // Number array
2046
- "Array, number": async (arr6, bins) => {
2047
- return parallelStatHistogram(toFloat64Array(arr6), bins);
2046
+ "Array, number": async (arr7, bins) => {
2047
+ return parallelStatHistogram(toFloat64Array(arr7), bins);
2048
2048
  }
2049
2049
  });
2050
- function quickSelect(arr6, k) {
2051
- if (k < 0 || k >= arr6.length) {
2052
- throw new RangeError(`k=${k} is out of range for array of length ${arr6.length}`);
2050
+ function quickSelect(arr7, k) {
2051
+ if (k < 0 || k >= arr7.length) {
2052
+ throw new RangeError(`k=${k} is out of range for array of length ${arr7.length}`);
2053
2053
  }
2054
- const a = arr6.slice();
2054
+ const a = arr7.slice();
2055
2055
  return _quickSelect(a, 0, a.length - 1, k);
2056
2056
  }
2057
2057
  function _quickSelect(a, lo, hi, k) {
@@ -2094,32 +2094,32 @@ function _quickSelect(a, lo, hi, k) {
2094
2094
  }
2095
2095
  return a[lo];
2096
2096
  }
2097
- function medianSelect(arr6) {
2098
- const n = arr6.length;
2097
+ function medianSelect(arr7) {
2098
+ const n = arr7.length;
2099
2099
  if (n === 0) return NaN;
2100
- if (n === 1) return arr6[0];
2100
+ if (n === 1) return arr7[0];
2101
2101
  const mid = Math.floor(n / 2);
2102
2102
  if (n % 2 === 1) {
2103
- return quickSelect(arr6, mid);
2103
+ return quickSelect(arr7, mid);
2104
2104
  }
2105
- const a = arr6.slice();
2105
+ const a = arr7.slice();
2106
2106
  const lower = _quickSelect(a, 0, a.length - 1, mid - 1);
2107
2107
  const upper = _quickSelect(a, 0, a.length - 1, mid);
2108
2108
  return (lower + upper) / 2;
2109
2109
  }
2110
- function minSelect(arr6, k) {
2110
+ function minSelect(arr7, k) {
2111
2111
  if (k <= 0) return [];
2112
- if (k >= arr6.length) return arr6.slice().sort((a2, b) => a2 - b);
2113
- const a = arr6.slice();
2112
+ if (k >= arr7.length) return arr7.slice().sort((a2, b) => a2 - b);
2113
+ const a = arr7.slice();
2114
2114
  _quickSelect(a, 0, a.length - 1, k - 1);
2115
2115
  const result = a.slice(0, k);
2116
2116
  result.sort((x, y) => x - y);
2117
2117
  return result;
2118
2118
  }
2119
- function maxSelect(arr6, k) {
2119
+ function maxSelect(arr7, k) {
2120
2120
  if (k <= 0) return [];
2121
- if (k >= arr6.length) return arr6.slice().sort((a2, b) => b - a2);
2122
- const a = arr6.slice();
2121
+ if (k >= arr7.length) return arr7.slice().sort((a2, b) => b - a2);
2122
+ const a = arr7.slice();
2123
2123
  const pivot = a.length - k;
2124
2124
  _quickSelect(a, 0, a.length - 1, pivot);
2125
2125
  const result = a.slice(pivot);
@@ -3889,8 +3889,8 @@ var typedLogical = {
3889
3889
 
3890
3890
  // src/typed/complex.ts
3891
3891
  import { mathTyped as mathTyped7, BigNumber as BigNumber5 } from "@danielsimonjr/mathts-core";
3892
- function deepMapArray(arr6, fn) {
3893
- return arr6.map(
3892
+ function deepMapArray(arr7, fn) {
3893
+ return arr7.map(
3894
3894
  (item) => Array.isArray(item) ? deepMapArray(item, fn) : fn(item)
3895
3895
  );
3896
3896
  }
@@ -3940,9 +3940,9 @@ var typedComplex = {
3940
3940
 
3941
3941
  // src/typed/set.ts
3942
3942
  import { mathTyped as mathTyped8 } from "@danielsimonjr/mathts-core";
3943
- function flattenArray(arr6) {
3943
+ function flattenArray(arr7) {
3944
3944
  const result = [];
3945
- const stack = [...arr6];
3945
+ const stack = [...arr7];
3946
3946
  while (stack.length > 0) {
3947
3947
  const item = stack.shift();
3948
3948
  if (Array.isArray(item)) {
@@ -4602,11 +4602,11 @@ function roundDigits(split, precision) {
4602
4602
  return rounded;
4603
4603
  }
4604
4604
  function zeros(length) {
4605
- const arr6 = [];
4605
+ const arr7 = [];
4606
4606
  for (let i = 0; i < length; i++) {
4607
- arr6.push(0);
4607
+ arr7.push(0);
4608
4608
  }
4609
- return arr6;
4609
+ return arr7;
4610
4610
  }
4611
4611
  function nearlyEqual(a, b, relTol = 1e-8, absTol = 0) {
4612
4612
  if (relTol <= 0) {
@@ -5629,17 +5629,17 @@ function betaincScalar(a, b, x) {
5629
5629
  d = 1 / d;
5630
5630
  f = d;
5631
5631
  for (let m = 1; m <= 200; m++) {
5632
- let num = m * (b - m) * x / ((a + 2 * m - 1) * (a + 2 * m));
5633
- d = 1 + num * d;
5632
+ let num2 = m * (b - m) * x / ((a + 2 * m - 1) * (a + 2 * m));
5633
+ d = 1 + num2 * d;
5634
5634
  if (Math.abs(d) < 1e-30) d = 1e-30;
5635
- c = 1 + num / c;
5635
+ c = 1 + num2 / c;
5636
5636
  if (Math.abs(c) < 1e-30) c = 1e-30;
5637
5637
  d = 1 / d;
5638
5638
  f *= d * c;
5639
- num = -(a + m) * (a + b + m) * x / ((a + 2 * m) * (a + 2 * m + 1));
5640
- d = 1 + num * d;
5639
+ num2 = -(a + m) * (a + b + m) * x / ((a + 2 * m) * (a + 2 * m + 1));
5640
+ d = 1 + num2 * d;
5641
5641
  if (Math.abs(d) < 1e-30) d = 1e-30;
5642
- c = 1 + num / c;
5642
+ c = 1 + num2 / c;
5643
5643
  if (Math.abs(c) < 1e-30) c = 1e-30;
5644
5644
  d = 1 / d;
5645
5645
  const delta = d * c;
@@ -7920,20 +7920,20 @@ function polyMulJS(a, b) {
7920
7920
  }
7921
7921
  return out;
7922
7922
  }
7923
- function polyDivModJS(num, den) {
7923
+ function polyDivModJS(num2, den) {
7924
7924
  if (den.length === 0) throw new Error("Division by zero polynomial");
7925
- if (num.length < den.length) {
7925
+ if (num2.length < den.length) {
7926
7926
  return {
7927
7927
  quotient: new Float64Array([0]),
7928
- remainder: new Float64Array(num)
7928
+ remainder: new Float64Array(num2)
7929
7929
  };
7930
7930
  }
7931
- const qLen = num.length - den.length + 1;
7932
- const work = new Float64Array(num);
7931
+ const qLen = num2.length - den.length + 1;
7932
+ const work = new Float64Array(num2);
7933
7933
  const quotient = new Float64Array(qLen);
7934
7934
  const bn = den[den.length - 1];
7935
7935
  for (let ii = 0; ii < qLen; ii++) {
7936
- const i = num.length - 1 - ii;
7936
+ const i = num2.length - 1 - ii;
7937
7937
  quotient[i - den.length + 1] = work[i] / bn;
7938
7938
  for (let j = 0; j < den.length; j++) {
7939
7939
  work[i - den.length + 1 + j] -= quotient[i - den.length + 1] * den[j];
@@ -7963,23 +7963,23 @@ function polyMulDispatch(a, b) {
7963
7963
  }
7964
7964
  return polyMulJS(a, b);
7965
7965
  }
7966
- function polyDivModDispatch(num, den) {
7966
+ function polyDivModDispatch(num2, den) {
7967
7967
  if (den.length === 0) throw new Error("Division by zero polynomial");
7968
- const bigEnough = num.length >= WASM_POLY_THRESHOLD;
7968
+ const bigEnough = num2.length >= WASM_POLY_THRESHOLD;
7969
7969
  if (bigEnough) {
7970
7970
  const wasm = getWasm();
7971
7971
  if (wasm && isAsWasm(wasm)) {
7972
7972
  try {
7973
7973
  const flat = withAsF64(
7974
7974
  wasm,
7975
- [num, den],
7975
+ [num2, den],
7976
7976
  (mod2, [hn, hd]) => asReadReturnedF64(
7977
7977
  mod2,
7978
7978
  mod2["poly_div_mod_f64"](hn, hd)
7979
7979
  )
7980
7980
  );
7981
7981
  if (flat) {
7982
- const actualQLen = num.length >= den.length ? num.length - den.length + 1 : 0;
7982
+ const actualQLen = num2.length >= den.length ? num2.length - den.length + 1 : 0;
7983
7983
  const actualRLen = flat.length - actualQLen;
7984
7984
  return {
7985
7985
  quotient: actualQLen > 0 ? flat.slice(0, actualQLen) : new Float64Array([0]),
@@ -7990,7 +7990,7 @@ function polyDivModDispatch(num, den) {
7990
7990
  }
7991
7991
  }
7992
7992
  }
7993
- return polyDivModJS(num, den);
7993
+ return polyDivModJS(num2, den);
7994
7994
  }
7995
7995
  function resultantJS(p, q) {
7996
7996
  let pm = p.length - 1;
@@ -8443,11 +8443,11 @@ function discriminant(coeffs) {
8443
8443
  const sign3 = deg * (deg - 1) / 2 % 2 === 0 ? 1 : -1;
8444
8444
  return sign3 * res / an;
8445
8445
  }
8446
- function differences(arr6, n = 1) {
8446
+ function differences(arr7, n = 1) {
8447
8447
  if (n < 0 || !Number.isInteger(n)) {
8448
8448
  throw new Error("Difference order must be a non-negative integer");
8449
8449
  }
8450
- let result = [...arr6];
8450
+ let result = [...arr7];
8451
8451
  for (let k = 0; k < n; k++) {
8452
8452
  if (result.length <= 1) return [];
8453
8453
  const next = new Array(result.length - 1);
@@ -8577,11 +8577,11 @@ function cancel(expr) {
8577
8577
  if (sameMatch && sameMatch[1].trim().length > 0) return "1";
8578
8578
  const fracMatch = expr.match(/^\s*(-?\d+)\s*\/\s*(-?\d+)\s*$/);
8579
8579
  if (fracMatch) {
8580
- const num = parseInt(fracMatch[1], 10);
8580
+ const num2 = parseInt(fracMatch[1], 10);
8581
8581
  const den = parseInt(fracMatch[2], 10);
8582
8582
  if (den === 0) throw new Error("cancel: division by zero");
8583
- const g = gcdNum(Math.abs(num), Math.abs(den));
8584
- const rn = num / g;
8583
+ const g = gcdNum(Math.abs(num2), Math.abs(den));
8584
+ const rn = num2 / g;
8585
8585
  const rd = den / g;
8586
8586
  if (rd === 1) return String(rn);
8587
8587
  if (rd < 0) return -rn + "/" + -rd;
@@ -8607,20 +8607,20 @@ function together(expr) {
8607
8607
  const b = parseInt(match[2], 10);
8608
8608
  const c = parseInt(match[3], 10);
8609
8609
  const d = parseInt(match[4], 10);
8610
- const num = a * d + c * b;
8610
+ const num2 = a * d + c * b;
8611
8611
  const den = b * d;
8612
- const g = gcdNum(Math.abs(num), Math.abs(den));
8613
- return num / g + "/" + den / g;
8612
+ const g = gcdNum(Math.abs(num2), Math.abs(den));
8613
+ return num2 / g + "/" + den / g;
8614
8614
  }
8615
8615
  return expr;
8616
8616
  }
8617
8617
  function apart(expr) {
8618
8618
  const match = expr.match(/^\s*(-?\d+)\s*\/\s*(-?\d+)\s*$/);
8619
8619
  if (match) {
8620
- const num = parseInt(match[1], 10);
8620
+ const num2 = parseInt(match[1], 10);
8621
8621
  const den = parseInt(match[2], 10);
8622
- const whole = Math.trunc(num / den);
8623
- const remainder = num - whole * den;
8622
+ const whole = Math.trunc(num2 / den);
8623
+ const remainder = num2 - whole * den;
8624
8624
  if (remainder === 0) return String(whole);
8625
8625
  return whole + " + " + remainder + "/" + den;
8626
8626
  }
@@ -8715,11 +8715,11 @@ function fullSimplify(expr) {
8715
8715
  result = reduce(result);
8716
8716
  return result;
8717
8717
  }
8718
- function element(arr6, index) {
8719
- if (index < 0 || index >= arr6.length) {
8720
- throw new Error("Index " + index + " out of bounds for array of length " + arr6.length);
8718
+ function element(arr7, index) {
8719
+ if (index < 0 || index >= arr7.length) {
8720
+ throw new Error("Index " + index + " out of bounds for array of length " + arr7.length);
8721
8721
  }
8722
- return arr6[index];
8722
+ return arr7[index];
8723
8723
  }
8724
8724
  function eliminate(system, variable) {
8725
8725
  const withVar = [];
@@ -10869,15 +10869,15 @@ function padeApproximant(coeffs, m, n) {
10869
10869
  b = new Array(n).fill(0);
10870
10870
  }
10871
10871
  const den = [1, ...b];
10872
- const num = [];
10872
+ const num2 = [];
10873
10873
  for (let i = 0; i <= m; i++) {
10874
10874
  let s = c[i];
10875
10875
  for (let j = 1; j <= Math.min(i, n); j++) {
10876
10876
  s += b[j - 1] * (i - j >= 0 ? c[i - j] : 0);
10877
10877
  }
10878
- num.push(s);
10878
+ num2.push(s);
10879
10879
  }
10880
- return { num, den };
10880
+ return { num: num2, den };
10881
10881
  }
10882
10882
  return { num: c.slice(0, m + 1), den: [1] };
10883
10883
  }
@@ -11685,26 +11685,26 @@ function _splitSeed(baseSeed, k) {
11685
11685
  function _aggregateRanks(vectors, aggregation) {
11686
11686
  const n = vectors[0].length;
11687
11687
  const count2 = vectors.length;
11688
- const mean5 = new Float64Array(n);
11688
+ const mean6 = new Float64Array(n);
11689
11689
  for (const v of vectors) {
11690
- for (let i = 0; i < n; i++) mean5[i] += v[i];
11690
+ for (let i = 0; i < n; i++) mean6[i] += v[i];
11691
11691
  }
11692
- for (let i = 0; i < n; i++) mean5[i] /= count2;
11692
+ for (let i = 0; i < n; i++) mean6[i] /= count2;
11693
11693
  if (aggregation === "mean") {
11694
- return { ranks: mean5 };
11694
+ return { ranks: mean6 };
11695
11695
  }
11696
11696
  const std2 = new Float64Array(n);
11697
11697
  for (const v of vectors) {
11698
11698
  for (let i = 0; i < n; i++) {
11699
- const d = v[i] - mean5[i];
11699
+ const d = v[i] - mean6[i];
11700
11700
  std2[i] += d * d;
11701
11701
  }
11702
11702
  }
11703
11703
  for (let i = 0; i < n; i++) std2[i] = Math.sqrt(std2[i] / count2);
11704
11704
  return {
11705
- ranks: mean5,
11705
+ ranks: mean6,
11706
11706
  ranksPerRestart: vectors,
11707
- restartStats: { mean: mean5, std: std2 }
11707
+ restartStats: { mean: mean6, std: std2 }
11708
11708
  };
11709
11709
  }
11710
11710
  function _pageRankOnce(adj, d, maxIter, tol, seed) {
@@ -11837,26 +11837,26 @@ function _betweennessOnce(adj, directed, normalise, seed) {
11837
11837
  function _aggregateBetweenness(vectors, aggregation) {
11838
11838
  const n = vectors[0].length;
11839
11839
  const count2 = vectors.length;
11840
- const mean5 = new Float64Array(n);
11840
+ const mean6 = new Float64Array(n);
11841
11841
  for (const v of vectors) {
11842
- for (let i = 0; i < n; i++) mean5[i] += v[i];
11842
+ for (let i = 0; i < n; i++) mean6[i] += v[i];
11843
11843
  }
11844
- for (let i = 0; i < n; i++) mean5[i] /= count2;
11844
+ for (let i = 0; i < n; i++) mean6[i] /= count2;
11845
11845
  if (aggregation === "mean") {
11846
- return { centrality: mean5 };
11846
+ return { centrality: mean6 };
11847
11847
  }
11848
11848
  const std2 = new Float64Array(n);
11849
11849
  for (const v of vectors) {
11850
11850
  for (let i = 0; i < n; i++) {
11851
- const d = v[i] - mean5[i];
11851
+ const d = v[i] - mean6[i];
11852
11852
  std2[i] += d * d;
11853
11853
  }
11854
11854
  }
11855
11855
  for (let i = 0; i < n; i++) std2[i] = Math.sqrt(std2[i] / count2);
11856
11856
  return {
11857
- centrality: mean5,
11857
+ centrality: mean6,
11858
11858
  centralityPerRestart: vectors,
11859
- restartStats: { mean: mean5, std: std2 }
11859
+ restartStats: { mean: mean6, std: std2 }
11860
11860
  };
11861
11861
  }
11862
11862
  async function betweennessCentrality(adj, opts) {
@@ -11929,32 +11929,32 @@ function _aggregateEigenvector(vectors, aggregation) {
11929
11929
  }
11930
11930
  return v;
11931
11931
  });
11932
- const mean5 = new Float64Array(n);
11932
+ const mean6 = new Float64Array(n);
11933
11933
  for (const v of aligned) {
11934
- for (let i = 0; i < n; i++) mean5[i] += v[i];
11934
+ for (let i = 0; i < n; i++) mean6[i] += v[i];
11935
11935
  }
11936
- for (let i = 0; i < n; i++) mean5[i] /= count2;
11936
+ for (let i = 0; i < n; i++) mean6[i] /= count2;
11937
11937
  let norm4 = 0;
11938
- for (let i = 0; i < n; i++) norm4 += mean5[i] * mean5[i];
11938
+ for (let i = 0; i < n; i++) norm4 += mean6[i] * mean6[i];
11939
11939
  norm4 = Math.sqrt(norm4);
11940
11940
  if (norm4 > 1e-15) {
11941
- for (let i = 0; i < n; i++) mean5[i] /= norm4;
11941
+ for (let i = 0; i < n; i++) mean6[i] /= norm4;
11942
11942
  }
11943
11943
  if (aggregation === "mean") {
11944
- return { centrality: mean5 };
11944
+ return { centrality: mean6 };
11945
11945
  }
11946
11946
  const std2 = new Float64Array(n);
11947
11947
  for (const v of aligned) {
11948
11948
  for (let i = 0; i < n; i++) {
11949
- const d = v[i] - mean5[i];
11949
+ const d = v[i] - mean6[i];
11950
11950
  std2[i] += d * d;
11951
11951
  }
11952
11952
  }
11953
11953
  for (let i = 0; i < n; i++) std2[i] = Math.sqrt(std2[i] / count2);
11954
11954
  return {
11955
- centrality: mean5,
11955
+ centrality: mean6,
11956
11956
  centralityPerRestart: aligned,
11957
- restartStats: { mean: mean5, std: std2 }
11957
+ restartStats: { mean: mean6, std: std2 }
11958
11958
  };
11959
11959
  }
11960
11960
  async function eigenvectorCentrality(adj, opts) {
@@ -12420,9 +12420,9 @@ function fDist(d1, d2) {
12420
12420
  if (d1 === 2) return 1;
12421
12421
  return 0;
12422
12422
  }
12423
- const num = Math.pow(d1 * x, d1) * Math.pow(d2, d2);
12423
+ const num2 = Math.pow(d1 * x, d1) * Math.pow(d2, d2);
12424
12424
  const den = Math.pow(d1 * x + d2, d1 + d2);
12425
- return Math.sqrt(num / den) / (x * Math.exp(_lgamma2(d1 / 2) + _lgamma2(d2 / 2) - _lgamma2((d1 + d2) / 2)));
12425
+ return Math.sqrt(num2 / den) / (x * Math.exp(_lgamma2(d1 / 2) + _lgamma2(d2 / 2) - _lgamma2((d1 + d2) / 2)));
12426
12426
  },
12427
12427
  cdf: (x) => {
12428
12428
  if (x <= 0) return 0;
@@ -12709,12 +12709,12 @@ function _makeMulberry322(seed) {
12709
12709
  return z / 4294967296;
12710
12710
  };
12711
12711
  }
12712
- function _shuffle(arr6, rng) {
12713
- for (let i = arr6.length - 1; i > 0; i--) {
12712
+ function _shuffle(arr7, rng) {
12713
+ for (let i = arr7.length - 1; i > 0; i--) {
12714
12714
  const j = Math.floor(rng() * (i + 1));
12715
- const tmp = arr6[i];
12716
- arr6[i] = arr6[j];
12717
- arr6[j] = tmp;
12715
+ const tmp = arr7[i];
12716
+ arr7[i] = arr7[j];
12717
+ arr7[j] = tmp;
12718
12718
  }
12719
12719
  }
12720
12720
  function _bootstrapSummary(stats) {
@@ -12722,22 +12722,22 @@ function _bootstrapSummary(stats) {
12722
12722
  if (n === 0) return { bootstrapMean: NaN, bootstrapStd: NaN };
12723
12723
  let sum3 = 0;
12724
12724
  for (let i = 0; i < n; i++) sum3 += stats[i];
12725
- const mean5 = sum3 / n;
12725
+ const mean6 = sum3 / n;
12726
12726
  let sq = 0;
12727
- for (let i = 0; i < n; i++) sq += (stats[i] - mean5) ** 2;
12727
+ for (let i = 0; i < n; i++) sq += (stats[i] - mean6) ** 2;
12728
12728
  const std2 = n > 1 ? Math.sqrt(sq / (n - 1)) : 0;
12729
- return { bootstrapMean: mean5, bootstrapStd: std2 };
12729
+ return { bootstrapMean: mean6, bootstrapStd: std2 };
12730
12730
  }
12731
- function _mean(arr6) {
12731
+ function _mean(arr7) {
12732
12732
  let sum3 = 0;
12733
- for (let i = 0; i < arr6.length; i++) sum3 += arr6[i];
12734
- return sum3 / arr6.length;
12733
+ for (let i = 0; i < arr7.length; i++) sum3 += arr7[i];
12734
+ return sum3 / arr7.length;
12735
12735
  }
12736
- function _variance(arr6, ddof = 1) {
12737
- const m = _mean(arr6);
12736
+ function _variance(arr7, ddof = 1) {
12737
+ const m = _mean(arr7);
12738
12738
  let sum3 = 0;
12739
- for (let i = 0; i < arr6.length; i++) sum3 += (arr6[i] - m) ** 2;
12740
- return sum3 / (arr6.length - ddof);
12739
+ for (let i = 0; i < arr7.length; i++) sum3 += (arr7[i] - m) ** 2;
12740
+ return sum3 / (arr7.length - ddof);
12741
12741
  }
12742
12742
  function _erf(x) {
12743
12743
  if (x === 0) return 0;
@@ -12870,9 +12870,9 @@ function studentTTest(sample1, sample2) {
12870
12870
  const v2 = _variance(sample2);
12871
12871
  const se = Math.sqrt(v1 / n16 + v2 / n26);
12872
12872
  const t = (m1 - m2) / se;
12873
- const num = (v1 / n16 + v2 / n26) ** 2;
12873
+ const num2 = (v1 / n16 + v2 / n26) ** 2;
12874
12874
  const den = (v1 / n16) ** 2 / (n16 - 1) + (v2 / n26) ** 2 / (n26 - 1);
12875
- const df = num / den;
12875
+ const df = num2 / den;
12876
12876
  return { statistic: t, pValue: _tPValue(t, df), degreesOfFreedom: df };
12877
12877
  }
12878
12878
  async function chiSquareTest(observed, expected, opts) {
@@ -14833,19 +14833,19 @@ var randomInt = mathTyped15("randomInt", {
14833
14833
  }
14834
14834
  });
14835
14835
  var pickRandom = mathTyped15("pickRandom", {
14836
- Array: (arr6) => _pick(arr6, 1, void 0)[0],
14837
- "Array, number": (arr6, n) => _pick(arr6, n, void 0),
14838
- "Array, Array": (arr6, weights) => _pick(arr6, 1, weights)[0],
14839
- "Array, number, Array": (arr6, n, weights) => _pick(arr6, n, weights),
14840
- "Array, Array, number": (arr6, weights, n) => _pick(arr6, n, weights)
14836
+ Array: (arr7) => _pick(arr7, 1, void 0)[0],
14837
+ "Array, number": (arr7, n) => _pick(arr7, n, void 0),
14838
+ "Array, Array": (arr7, weights) => _pick(arr7, 1, weights)[0],
14839
+ "Array, number, Array": (arr7, n, weights) => _pick(arr7, n, weights),
14840
+ "Array, Array, number": (arr7, weights, n) => _pick(arr7, n, weights)
14841
14841
  });
14842
- function _pick(arr6, n, weights) {
14843
- if (arr6.length === 0) throw new RangeError("Cannot pick from an empty array");
14842
+ function _pick(arr7, n, weights) {
14843
+ if (arr7.length === 0) throw new RangeError("Cannot pick from an empty array");
14844
14844
  if (!Number.isInteger(n) || n < 1) {
14845
14845
  throw new RangeError("number of picks must be a positive integer");
14846
14846
  }
14847
14847
  if (weights !== void 0) {
14848
- if (weights.length !== arr6.length) {
14848
+ if (weights.length !== arr7.length) {
14849
14849
  throw new RangeError("weights must have the same length as the array");
14850
14850
  }
14851
14851
  let total = 0;
@@ -14859,20 +14859,20 @@ function _pick(arr6, n, weights) {
14859
14859
  const result2 = [];
14860
14860
  for (let i = 0; i < n; i++) {
14861
14861
  let r = _rng() * total;
14862
- for (let j = 0; j < arr6.length; j++) {
14862
+ for (let j = 0; j < arr7.length; j++) {
14863
14863
  r -= weights[j];
14864
14864
  if (r < 0) {
14865
- result2.push(arr6[j]);
14865
+ result2.push(arr7[j]);
14866
14866
  break;
14867
14867
  }
14868
14868
  }
14869
- if (result2.length < i + 1) result2.push(arr6[arr6.length - 1]);
14869
+ if (result2.length < i + 1) result2.push(arr7[arr7.length - 1]);
14870
14870
  }
14871
14871
  return result2;
14872
14872
  }
14873
14873
  const result = [];
14874
14874
  for (let i = 0; i < n; i++) {
14875
- result.push(arr6[Math.floor(_rng() * arr6.length)]);
14875
+ result.push(arr7[Math.floor(_rng() * arr7.length)]);
14876
14876
  }
14877
14877
  return result;
14878
14878
  }
@@ -16376,13 +16376,13 @@ function resize(array, size2, defaultValue) {
16376
16376
  );
16377
16377
  }
16378
16378
  });
16379
- let arr6 = array;
16379
+ let arr7 = array;
16380
16380
  if (isNumber(array) || isBigNumber(array)) {
16381
- arr6 = [array];
16381
+ arr7 = [array];
16382
16382
  }
16383
16383
  const _defaultValue = defaultValue !== void 0 ? defaultValue : 0;
16384
- _resize(arr6, size2, 0, _defaultValue);
16385
- return arr6;
16384
+ _resize(arr7, size2, 0, _defaultValue);
16385
+ return arr7;
16386
16386
  }
16387
16387
  function _resize(array, size2, dim, defaultValue) {
16388
16388
  let i;
@@ -16483,9 +16483,9 @@ function _reshape(array, sizes) {
16483
16483
  }
16484
16484
  function squeeze(array, size2) {
16485
16485
  const s = size2 || arraySize(array);
16486
- let arr6 = array;
16487
- while (Array.isArray(arr6) && arr6.length === 1) {
16488
- arr6 = arr6[0];
16486
+ let arr7 = array;
16487
+ while (Array.isArray(arr7) && arr7.length === 1) {
16488
+ arr7 = arr7[0];
16489
16489
  s.shift();
16490
16490
  }
16491
16491
  let dims = s.length;
@@ -16493,19 +16493,19 @@ function squeeze(array, size2) {
16493
16493
  dims--;
16494
16494
  }
16495
16495
  if (dims < s.length) {
16496
- arr6 = _squeeze(arr6, dims, 0);
16496
+ arr7 = _squeeze(arr7, dims, 0);
16497
16497
  s.length = dims;
16498
16498
  }
16499
- return arr6;
16499
+ return arr7;
16500
16500
  }
16501
16501
  function _squeeze(array, dims, dim) {
16502
16502
  if (dim < dims) {
16503
16503
  const next = dim + 1;
16504
- const arr6 = array;
16505
- for (let i = 0, ii = arr6.length; i < ii; i++) {
16506
- arr6[i] = _squeeze(arr6[i], dims, next);
16504
+ const arr7 = array;
16505
+ for (let i = 0, ii = arr7.length; i < ii; i++) {
16506
+ arr7[i] = _squeeze(arr7[i], dims, next);
16507
16507
  }
16508
- return arr6;
16508
+ return arr7;
16509
16509
  } else {
16510
16510
  let result = array;
16511
16511
  while (Array.isArray(result)) {
@@ -16528,9 +16528,9 @@ function flatten2(array, isRectangular = false) {
16528
16528
  _flatten(array);
16529
16529
  }
16530
16530
  return flat;
16531
- function _flatten(arr6) {
16532
- for (let i = 0; i < arr6.length; i++) {
16533
- const item = arr6[i];
16531
+ function _flatten(arr7) {
16532
+ for (let i = 0; i < arr7.length; i++) {
16533
+ const item = arr7[i];
16534
16534
  if (Array.isArray(item)) {
16535
16535
  _flatten(item);
16536
16536
  } else {
@@ -16538,14 +16538,14 @@ function flatten2(array, isRectangular = false) {
16538
16538
  }
16539
16539
  }
16540
16540
  }
16541
- function _flattenRectangular(arr6) {
16542
- if (Array.isArray(arr6[0])) {
16543
- for (let i = 0; i < arr6.length; i++) {
16544
- _flattenRectangular(arr6[i]);
16541
+ function _flattenRectangular(arr7) {
16542
+ if (Array.isArray(arr7[0])) {
16543
+ for (let i = 0; i < arr7.length; i++) {
16544
+ _flattenRectangular(arr7[i]);
16545
16545
  }
16546
16546
  } else {
16547
- for (let i = 0; i < arr6.length; i++) {
16548
- flat.push(arr6[i]);
16547
+ for (let i = 0; i < arr7.length; i++) {
16548
+ flat.push(arr7[i]);
16549
16549
  }
16550
16550
  }
16551
16551
  }
@@ -17041,12 +17041,12 @@ var dependencies5 = ["typed", "Complex"];
17041
17041
  var createExpm1 = /* @__PURE__ */ factory(
17042
17042
  name5,
17043
17043
  dependencies5,
17044
- ({ typed: typed3, Complex: Complex11 }) => {
17044
+ ({ typed: typed3, Complex: Complex12 }) => {
17045
17045
  return typed3(name5, {
17046
17046
  number: expm1Number,
17047
17047
  Complex: function(x) {
17048
17048
  const r = Math.exp(x.re);
17049
- return new Complex11(r * Math.cos(x.im) - 1, r * Math.sin(x.im));
17049
+ return new Complex12(r * Math.cos(x.im) - 1, r * Math.sin(x.im));
17050
17050
  },
17051
17051
  BigNumber: function(x) {
17052
17052
  return x.exp().minus(1);
@@ -17075,12 +17075,12 @@ var log16 = log10Number(16);
17075
17075
  var createLog10 = /* @__PURE__ */ factory(
17076
17076
  name6,
17077
17077
  dependencies6,
17078
- ({ typed: typed3, config, Complex: Complex11 }) => {
17078
+ ({ typed: typed3, config, Complex: Complex12 }) => {
17079
17079
  function complexLog(c) {
17080
17080
  return c.log().div(Math.LN10);
17081
17081
  }
17082
17082
  function complexLogNumber(x) {
17083
- return complexLog(new Complex11(x, 0));
17083
+ return complexLog(new Complex12(x, 0));
17084
17084
  }
17085
17085
  return typed3(name6, {
17086
17086
  number: function(x) {
@@ -17112,9 +17112,9 @@ var dependencies7 = ["typed", "config", "Complex"];
17112
17112
  var createLog2 = /* @__PURE__ */ factory(
17113
17113
  name7,
17114
17114
  dependencies7,
17115
- ({ typed: typed3, config, Complex: Complex11 }) => {
17115
+ ({ typed: typed3, config, Complex: Complex12 }) => {
17116
17116
  function complexLog2Number(x) {
17117
- return _log2Complex(new Complex11(x, 0));
17117
+ return _log2Complex(new Complex12(x, 0));
17118
17118
  }
17119
17119
  return typed3(name7, {
17120
17120
  number: function(x) {
@@ -17139,7 +17139,7 @@ var createLog2 = /* @__PURE__ */ factory(
17139
17139
  });
17140
17140
  function _log2Complex(x) {
17141
17141
  const newX = Math.sqrt(x.re * x.re + x.im * x.im);
17142
- return new Complex11(
17142
+ return new Complex12(
17143
17143
  Math.log2 ? Math.log2(newX) : Math.log(newX) / Math.LN2,
17144
17144
  Math.atan2(x.im, x.re) / Math.LN2
17145
17145
  );
@@ -17215,7 +17215,7 @@ var dependencies10 = ["config", "typed", "Complex"];
17215
17215
  var createSqrt = /* @__PURE__ */ factory(
17216
17216
  name10,
17217
17217
  dependencies10,
17218
- ({ config, typed: typed3, Complex: Complex11 }) => {
17218
+ ({ config, typed: typed3, Complex: Complex12 }) => {
17219
17219
  return typed3("sqrt", {
17220
17220
  number: _sqrtNumber,
17221
17221
  Complex: function(x) {
@@ -17238,7 +17238,7 @@ var createSqrt = /* @__PURE__ */ factory(
17238
17238
  } else if (x >= 0 || config.predictable) {
17239
17239
  return Math.sqrt(x);
17240
17240
  } else {
17241
- return new Complex11(x, 0).sqrt();
17241
+ return new Complex12(x, 0).sqrt();
17242
17242
  }
17243
17243
  }
17244
17244
  }
@@ -17525,24 +17525,24 @@ function decCoefficientToBinaryString(x) {
17525
17525
  str = str.slice(0, xe) + "." + str.slice(xe);
17526
17526
  }
17527
17527
  }
17528
- const arr6 = [0];
17528
+ const arr7 = [0];
17529
17529
  for (let i = 0; i < str.length; ) {
17530
- let arrL = arr6.length;
17530
+ let arrL = arr7.length;
17531
17531
  while (arrL--) {
17532
- arr6[arrL] *= 10;
17532
+ arr7[arrL] *= 10;
17533
17533
  }
17534
- arr6[0] += parseInt(str.charAt(i++));
17535
- for (let j2 = 0; j2 < arr6.length; ++j2) {
17536
- if (arr6[j2] > 1) {
17537
- if (arr6[j2 + 1] === null || arr6[j2 + 1] === void 0) {
17538
- arr6[j2 + 1] = 0;
17534
+ arr7[0] += parseInt(str.charAt(i++));
17535
+ for (let j2 = 0; j2 < arr7.length; ++j2) {
17536
+ if (arr7[j2] > 1) {
17537
+ if (arr7[j2 + 1] === null || arr7[j2 + 1] === void 0) {
17538
+ arr7[j2 + 1] = 0;
17539
17539
  }
17540
- arr6[j2 + 1] += arr6[j2] >> 1;
17541
- arr6[j2] &= 1;
17540
+ arr7[j2 + 1] += arr7[j2] >> 1;
17541
+ arr7[j2] &= 1;
17542
17542
  }
17543
17543
  }
17544
17544
  }
17545
- return arr6.reverse();
17545
+ return arr7.reverse();
17546
17546
  }
17547
17547
  function bitXor2(x, y) {
17548
17548
  if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
@@ -18042,8 +18042,8 @@ var createMap = /* @__PURE__ */ factory(
18042
18042
  if (index) index[depth] = i;
18043
18043
  result[i] = iterate(
18044
18044
  arrays2.map((array, arrayIndex) => {
18045
- const arr6 = array;
18046
- return offsets[arrayIndex] > depth ? array : arr6.length === 1 ? arr6[0] : arr6[i];
18045
+ const arr7 = array;
18046
+ return offsets[arrayIndex] > depth ? array : arr7.length === 1 ? arr7[0] : arr7[i];
18047
18047
  }),
18048
18048
  depth + 1
18049
18049
  );
@@ -18053,8 +18053,8 @@ var createMap = /* @__PURE__ */ factory(
18053
18053
  if (index) index[depth] = i;
18054
18054
  result[i] = callback(
18055
18055
  arrays2.map((a) => {
18056
- const arr6 = a;
18057
- return arr6.length === 1 ? arr6[0] : arr6[i];
18056
+ const arr7 = a;
18057
+ return arr7.length === 1 ? arr7[0] : arr7[i];
18058
18058
  }),
18059
18059
  index ? index.slice() : void 0
18060
18060
  );
@@ -18250,7 +18250,7 @@ var dependencies29 = ["Complex", "typed"];
18250
18250
  var createLgamma = /* @__PURE__ */ factory(
18251
18251
  name29,
18252
18252
  dependencies29,
18253
- ({ Complex: Complex11, typed: typed3 }) => {
18253
+ ({ Complex: Complex12, typed: typed3 }) => {
18254
18254
  const SMALL_RE = 7;
18255
18255
  const SMALL_IM = 7;
18256
18256
  const coeffs = [
@@ -18264,15 +18264,15 @@ var createLgamma = /* @__PURE__ */ factory(
18264
18264
  0.08333333333333333
18265
18265
  ];
18266
18266
  return typed3(name29, {
18267
- Array: function(arr6) {
18267
+ Array: function(arr7) {
18268
18268
  const wasm = wasmLoader.getModule();
18269
- if (wasm && arr6.length >= 100 && arr6.every((x) => typeof x === "number")) {
18269
+ if (wasm && arr7.length >= 100 && arr7.every((x) => typeof x === "number")) {
18270
18270
  try {
18271
- const input = new Float64Array(arr6);
18271
+ const input = new Float64Array(arr7);
18272
18272
  const inputAlloc = wasmLoader.allocateFloat64Array(input);
18273
- const resultAlloc = wasmLoader.allocateFloat64ArrayEmpty(arr6.length);
18273
+ const resultAlloc = wasmLoader.allocateFloat64ArrayEmpty(arr7.length);
18274
18274
  try {
18275
- wasm.lgammaArray(inputAlloc.ptr, arr6.length, resultAlloc.ptr);
18275
+ wasm.lgammaArray(inputAlloc.ptr, arr7.length, resultAlloc.ptr);
18276
18276
  return Array.from(resultAlloc.array);
18277
18277
  } finally {
18278
18278
  wasmLoader.free(inputAlloc.ptr);
@@ -18281,7 +18281,7 @@ var createLgamma = /* @__PURE__ */ factory(
18281
18281
  } catch {
18282
18282
  }
18283
18283
  }
18284
- return arr6.map((x) => lgammaNumber(x));
18284
+ return arr7.map((x) => lgammaNumber(x));
18285
18285
  },
18286
18286
  number: lgammaNumber,
18287
18287
  Complex: lgammaComplex2,
@@ -18296,16 +18296,16 @@ var createLgamma = /* @__PURE__ */ factory(
18296
18296
  const LOGPI = 1.1447298858494002;
18297
18297
  const REFLECTION = 0.1;
18298
18298
  if (n.isNaN()) {
18299
- return new Complex11(NaN, NaN);
18299
+ return new Complex12(NaN, NaN);
18300
18300
  } else if (n.im === 0) {
18301
- return new Complex11(lgammaNumber(n.re), 0);
18301
+ return new Complex12(lgammaNumber(n.re), 0);
18302
18302
  } else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
18303
18303
  return lgammaStirling(n);
18304
18304
  } else if (n.re <= REFLECTION) {
18305
18305
  const tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);
18306
18306
  const a = n.mul(Math.PI).sin().log();
18307
- const b = lgammaComplex2(new Complex11(1 - n.re, -n.im));
18308
- return new Complex11(LOGPI, tmp).sub(a).sub(b);
18307
+ const b = lgammaComplex2(new Complex12(1 - n.re, -n.im));
18308
+ return new Complex12(LOGPI, tmp).sub(a).sub(b);
18309
18309
  } else if (n.im >= 0) {
18310
18310
  return lgammaRecurrence(n);
18311
18311
  } else {
@@ -18314,7 +18314,7 @@ var createLgamma = /* @__PURE__ */ factory(
18314
18314
  }
18315
18315
  function lgammaStirling(z) {
18316
18316
  const leftPart = z.sub(0.5).mul(z.log()).sub(z).add(lnSqrt2PI);
18317
- const rz = new Complex11(1, 0).div(z);
18317
+ const rz = new Complex12(1, 0).div(z);
18318
18318
  const rzz = rz.div(z);
18319
18319
  let a = coeffs[0];
18320
18320
  let b = coeffs[1];
@@ -18340,7 +18340,7 @@ var createLgamma = /* @__PURE__ */ factory(
18340
18340
  sb = nsb;
18341
18341
  z = z.add(1);
18342
18342
  }
18343
- return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex11(0, signflips * 2 * Math.PI * 1));
18343
+ return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex12(0, signflips * 2 * Math.PI * 1));
18344
18344
  }
18345
18345
  }
18346
18346
  );
@@ -18784,13 +18784,13 @@ var dependencies36 = ["typed", "config", "Complex"];
18784
18784
  var createAcos = /* @__PURE__ */ factory(
18785
18785
  name36,
18786
18786
  dependencies36,
18787
- ({ typed: typed3, config, Complex: Complex11 }) => {
18787
+ ({ typed: typed3, config, Complex: Complex12 }) => {
18788
18788
  return typed3(name36, {
18789
18789
  number: function(x) {
18790
18790
  if (x >= -1 && x <= 1 || config.predictable) {
18791
18791
  return Math.acos(x);
18792
18792
  } else {
18793
- return new Complex11(x, 0).acos();
18793
+ return new Complex12(x, 0).acos();
18794
18794
  }
18795
18795
  },
18796
18796
  Complex: function(x) {
@@ -18809,16 +18809,16 @@ var dependencies37 = ["typed", "config", "Complex"];
18809
18809
  var createAcosh = /* @__PURE__ */ factory(
18810
18810
  name37,
18811
18811
  dependencies37,
18812
- ({ typed: typed3, config, Complex: Complex11 }) => {
18812
+ ({ typed: typed3, config, Complex: Complex12 }) => {
18813
18813
  return typed3(name37, {
18814
18814
  number: function(x) {
18815
18815
  if (x >= 1 || config.predictable) {
18816
18816
  return acoshNumber(x);
18817
18817
  }
18818
18818
  if (x <= -1) {
18819
- return new Complex11(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);
18819
+ return new Complex12(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);
18820
18820
  }
18821
- return new Complex11(x, 0).acosh();
18821
+ return new Complex12(x, 0).acosh();
18822
18822
  },
18823
18823
  Complex: function(x) {
18824
18824
  return x.acosh();
@@ -18855,13 +18855,13 @@ var dependencies39 = ["typed", "config", "Complex", "BigNumber"];
18855
18855
  var createAcoth = /* @__PURE__ */ factory(
18856
18856
  name39,
18857
18857
  dependencies39,
18858
- ({ typed: typed3, config, Complex: Complex11, BigNumber: BigNumber9 }) => {
18858
+ ({ typed: typed3, config, Complex: Complex12, BigNumber: BigNumber9 }) => {
18859
18859
  return typed3(name39, {
18860
18860
  number: function(x) {
18861
18861
  if (x >= 1 || x <= -1 || config.predictable) {
18862
18862
  return acothNumber(x);
18863
18863
  }
18864
- return new Complex11(x, 0).acoth();
18864
+ return new Complex12(x, 0).acoth();
18865
18865
  },
18866
18866
  Complex: function(x) {
18867
18867
  return x.acoth();
@@ -18879,13 +18879,13 @@ var dependencies40 = ["typed", "config", "Complex", "BigNumber"];
18879
18879
  var createAcsc = /* @__PURE__ */ factory(
18880
18880
  name40,
18881
18881
  dependencies40,
18882
- ({ typed: typed3, config, Complex: Complex11, BigNumber: BigNumber9 }) => {
18882
+ ({ typed: typed3, config, Complex: Complex12, BigNumber: BigNumber9 }) => {
18883
18883
  return typed3(name40, {
18884
18884
  number: function(x) {
18885
18885
  if (x <= -1 || x >= 1 || config.predictable) {
18886
18886
  return acscNumber(x);
18887
18887
  }
18888
- return new Complex11(x, 0).acsc();
18888
+ return new Complex12(x, 0).acsc();
18889
18889
  },
18890
18890
  Complex: function(x) {
18891
18891
  return x.acsc();
@@ -18922,13 +18922,13 @@ var dependencies42 = ["typed", "config", "Complex", "BigNumber"];
18922
18922
  var createAsec = /* @__PURE__ */ factory(
18923
18923
  name42,
18924
18924
  dependencies42,
18925
- ({ typed: typed3, config, Complex: Complex11, BigNumber: BigNumber9 }) => {
18925
+ ({ typed: typed3, config, Complex: Complex12, BigNumber: BigNumber9 }) => {
18926
18926
  return typed3(name42, {
18927
18927
  number: function(x) {
18928
18928
  if (x <= -1 || x >= 1 || config.predictable) {
18929
18929
  return asecNumber(x);
18930
18930
  }
18931
- return new Complex11(x, 0).asec();
18931
+ return new Complex12(x, 0).asec();
18932
18932
  },
18933
18933
  Complex: function(x) {
18934
18934
  return x.asec();
@@ -18946,7 +18946,7 @@ var dependencies43 = ["typed", "config", "Complex", "BigNumber"];
18946
18946
  var createAsech = /* @__PURE__ */ factory(
18947
18947
  name43,
18948
18948
  dependencies43,
18949
- ({ typed: typed3, config, Complex: Complex11, BigNumber: BigNumber9 }) => {
18949
+ ({ typed: typed3, config, Complex: Complex12, BigNumber: BigNumber9 }) => {
18950
18950
  return typed3(name43, {
18951
18951
  number: function(x) {
18952
18952
  if (x <= 1 && x >= -1 || config.predictable) {
@@ -18955,9 +18955,9 @@ var createAsech = /* @__PURE__ */ factory(
18955
18955
  return asechNumber(x);
18956
18956
  }
18957
18957
  const ret = Math.sqrt(xInv * xInv - 1);
18958
- return new Complex11(Math.log(ret - xInv), Math.PI);
18958
+ return new Complex12(Math.log(ret - xInv), Math.PI);
18959
18959
  }
18960
- return new Complex11(x, 0).asech();
18960
+ return new Complex12(x, 0).asech();
18961
18961
  },
18962
18962
  Complex: function(x) {
18963
18963
  return x.asech();
@@ -18975,13 +18975,13 @@ var dependencies44 = ["typed", "config", "Complex"];
18975
18975
  var createAsin = /* @__PURE__ */ factory(
18976
18976
  name44,
18977
18977
  dependencies44,
18978
- ({ typed: typed3, config, Complex: Complex11 }) => {
18978
+ ({ typed: typed3, config, Complex: Complex12 }) => {
18979
18979
  return typed3(name44, {
18980
18980
  number: function(x) {
18981
18981
  if (x >= -1 && x <= 1 || config.predictable) {
18982
18982
  return Math.asin(x);
18983
18983
  } else {
18984
- return new Complex11(x, 0).asin();
18984
+ return new Complex12(x, 0).asin();
18985
18985
  }
18986
18986
  },
18987
18987
  Complex: function(x) {
@@ -19040,13 +19040,13 @@ var dependencies47 = ["typed", "config", "Complex"];
19040
19040
  var createAtanh = /* @__PURE__ */ factory(
19041
19041
  name47,
19042
19042
  dependencies47,
19043
- ({ typed: typed3, config, Complex: Complex11 }) => {
19043
+ ({ typed: typed3, config, Complex: Complex12 }) => {
19044
19044
  return typed3(name47, {
19045
19045
  number: function(x) {
19046
19046
  if (x <= 1 && x >= -1 || config.predictable) {
19047
19047
  return atanhNumber(x);
19048
19048
  }
19049
- return new Complex11(x, 0).atanh();
19049
+ return new Complex12(x, 0).atanh();
19050
19050
  },
19051
19051
  Complex: function(x) {
19052
19052
  return x.atanh();
@@ -19324,8 +19324,8 @@ var createIsBounded = /* @__PURE__ */ factory(
19324
19324
  ),
19325
19325
  "Array | Matrix": typed3.referToSelf(
19326
19326
  (self) => (A) => {
19327
- const arr6 = Array.isArray(A) ? A : A.valueOf();
19328
- return arr6.every((entry) => self(entry));
19327
+ const arr7 = Array.isArray(A) ? A : A.valueOf();
19328
+ return arr7.every((entry) => self(entry));
19329
19329
  }
19330
19330
  )
19331
19331
  });
@@ -19850,8 +19850,8 @@ var createMode = /* @__PURE__ */ factory(
19850
19850
  });
19851
19851
  function _mode(values) {
19852
19852
  const flat = flatten2(values.valueOf());
19853
- const num = flat.length;
19854
- if (num === 0) {
19853
+ const num2 = flat.length;
19854
+ if (num2 === 0) {
19855
19855
  throw new Error("Cannot calculate mode of an empty array");
19856
19856
  }
19857
19857
  const count2 = {};
@@ -19897,9 +19897,9 @@ function improveErrorMessage(err, fnName, value) {
19897
19897
 
19898
19898
  // src/statistics/prod.ts
19899
19899
  var WASM_PROD_THRESHOLD = 100;
19900
- function isFlatNumberArray(arr6) {
19901
- for (let i = 0; i < arr6.length; i++) {
19902
- if (typeof arr6[i] !== "number") {
19900
+ function isFlatNumberArray(arr7) {
19901
+ for (let i = 0; i < arr7.length; i++) {
19902
+ if (typeof arr7[i] !== "number") {
19903
19903
  return false;
19904
19904
  }
19905
19905
  }
@@ -20094,11 +20094,11 @@ var createParseNumberWithConfig = /* @__PURE__ */ factory(
20094
20094
  return bignumber2(str);
20095
20095
  case "bigint":
20096
20096
  if (str.includes(".") || str.includes("e") || str.includes("E")) {
20097
- const num = Number(str);
20098
- if (isNaN(num)) {
20097
+ const num2 = Number(str);
20098
+ if (isNaN(num2)) {
20099
20099
  throw new SyntaxError(`String "${str}" is not a valid number`);
20100
20100
  }
20101
- return num;
20101
+ return num2;
20102
20102
  }
20103
20103
  try {
20104
20104
  return BigInt(str);
@@ -20114,11 +20114,11 @@ var createParseNumberWithConfig = /* @__PURE__ */ factory(
20114
20114
  }
20115
20115
  case "number":
20116
20116
  default: {
20117
- const num = Number(str);
20118
- if (isNaN(num)) {
20117
+ const num2 = Number(str);
20118
+ if (isNaN(num2)) {
20119
20119
  throw new SyntaxError(`String "${str}" is not a valid number`);
20120
20120
  }
20121
- return num;
20121
+ return num2;
20122
20122
  }
20123
20123
  }
20124
20124
  }
@@ -20417,19 +20417,19 @@ function createZerosAndOnes(name256, defaultValue, { typed: typed3, config, matr
20417
20417
  }
20418
20418
  return m;
20419
20419
  } else {
20420
- const arr6 = [];
20420
+ const arr7 = [];
20421
20421
  if (size2.length > 0) {
20422
- return resize(arr6, size2, dflt);
20422
+ return resize(arr7, size2, dflt);
20423
20423
  }
20424
- return arr6;
20424
+ return arr7;
20425
20425
  }
20426
20426
  }
20427
20427
  function _normalize(size2) {
20428
20428
  let hasBigNumbers = false;
20429
- size2.forEach(function(value, index, arr6) {
20429
+ size2.forEach(function(value, index, arr7) {
20430
20430
  if (isBigNumber(value)) {
20431
20431
  hasBigNumbers = true;
20432
- arr6[index] = value.toNumber();
20432
+ arr7[index] = value.toNumber();
20433
20433
  }
20434
20434
  });
20435
20435
  return hasBigNumbers;
@@ -20556,9 +20556,9 @@ var createDiag = /* @__PURE__ */ factory(
20556
20556
 
20557
20557
  // src/matrix/kron.ts
20558
20558
  var WASM_KRON_THRESHOLD = 64;
20559
- function isPlainNumber2D(arr6) {
20560
- for (let i = 0; i < arr6.length; i++) {
20561
- const row2 = arr6[i];
20559
+ function isPlainNumber2D(arr7) {
20560
+ for (let i = 0; i < arr7.length; i++) {
20561
+ const row2 = arr7[i];
20562
20562
  for (let j = 0; j < row2.length; j++) {
20563
20563
  if (typeof row2[j] !== "number") {
20564
20564
  return false;
@@ -20567,11 +20567,11 @@ function isPlainNumber2D(arr6) {
20567
20567
  }
20568
20568
  return true;
20569
20569
  }
20570
- function flatten2D(arr6, rows, cols) {
20570
+ function flatten2D(arr7, rows, cols) {
20571
20571
  const result = new Float64Array(rows * cols);
20572
20572
  for (let i = 0; i < rows; i++) {
20573
20573
  for (let j = 0; j < cols; j++) {
20574
- result[i * cols + j] = arr6[i][j];
20574
+ result[i * cols + j] = arr7[i][j];
20575
20575
  }
20576
20576
  }
20577
20577
  return result;
@@ -20713,15 +20713,15 @@ var createMatrixFromColumns = /* @__PURE__ */ factory(
20713
20713
  ({ typed: typed3, matrix: matrix2, flatten: flatten4, size: size2 }) => {
20714
20714
  return typed3(name91, {
20715
20715
  // Single variadic handler for arrays, matrices, and mixed types
20716
- "...": function(arr6) {
20717
- if (arr6.length === 0) {
20716
+ "...": function(arr7) {
20717
+ if (arr7.length === 0) {
20718
20718
  throw new TypeError("At least one column is needed to construct a matrix.");
20719
20719
  }
20720
- const allMatrix = arr6.every(
20720
+ const allMatrix = arr7.every(
20721
20721
  (item) => typeof item.toArray === "function"
20722
20722
  );
20723
- const hasArray = arr6.some((item) => Array.isArray(item));
20724
- const arrays = arr6.map(
20723
+ const hasArray = arr7.some((item) => Array.isArray(item));
20724
+ const arrays = arr7.map(
20725
20725
  (item) => typeof item.toArray === "function" ? item.toArray() : item
20726
20726
  );
20727
20727
  const result = _createArray(arrays);
@@ -20732,15 +20732,15 @@ var createMatrixFromColumns = /* @__PURE__ */ factory(
20732
20732
  }
20733
20733
  // TODO implement this properly for SparseMatrix
20734
20734
  });
20735
- function _createArray(arr6) {
20736
- if (arr6.length === 0)
20735
+ function _createArray(arr7) {
20736
+ if (arr7.length === 0)
20737
20737
  throw new TypeError("At least one column is needed to construct a matrix.");
20738
- const N = checkVectorTypeAndReturnLength(arr6[0]);
20738
+ const N = checkVectorTypeAndReturnLength(arr7[0]);
20739
20739
  const result = [];
20740
20740
  for (let i = 0; i < N; i++) {
20741
20741
  result[i] = [];
20742
20742
  }
20743
- for (const col of arr6) {
20743
+ for (const col of arr7) {
20744
20744
  const colLength = checkVectorTypeAndReturnLength(col);
20745
20745
  if (colLength !== N) {
20746
20746
  throw new TypeError(
@@ -20782,15 +20782,15 @@ var createMatrixFromRows = /* @__PURE__ */ factory(
20782
20782
  ({ typed: typed3, matrix: matrix2, flatten: flatten4, size: size2 }) => {
20783
20783
  return typed3(name92, {
20784
20784
  // Single variadic handler for arrays, matrices, and mixed types
20785
- "...": function(arr6) {
20786
- if (arr6.length === 0) {
20785
+ "...": function(arr7) {
20786
+ if (arr7.length === 0) {
20787
20787
  throw new TypeError("At least one row is needed to construct a matrix.");
20788
20788
  }
20789
- const allMatrix = arr6.every(
20789
+ const allMatrix = arr7.every(
20790
20790
  (item) => typeof item.toArray === "function"
20791
20791
  );
20792
- const hasArray = arr6.some((item) => Array.isArray(item));
20793
- const arrays = arr6.map(
20792
+ const hasArray = arr7.some((item) => Array.isArray(item));
20793
+ const arrays = arr7.map(
20794
20794
  (item) => typeof item.toArray === "function" ? item.toArray() : item
20795
20795
  );
20796
20796
  const result = _createArray(arrays);
@@ -20801,12 +20801,12 @@ var createMatrixFromRows = /* @__PURE__ */ factory(
20801
20801
  }
20802
20802
  // TODO implement this properly for SparseMatrix
20803
20803
  });
20804
- function _createArray(arr6) {
20805
- if (arr6.length === 0)
20804
+ function _createArray(arr7) {
20805
+ if (arr7.length === 0)
20806
20806
  throw new TypeError("At least one row is needed to construct a matrix.");
20807
- const N = checkVectorTypeAndReturnLength(arr6[0]);
20807
+ const N = checkVectorTypeAndReturnLength(arr7[0]);
20808
20808
  const result = [];
20809
- for (const row2 of arr6) {
20809
+ for (const row2 of arr7) {
20810
20810
  const rowLength = checkVectorTypeAndReturnLength(row2);
20811
20811
  if (rowLength !== N) {
20812
20812
  throw new TypeError(
@@ -22875,7 +22875,7 @@ var createCbrt = /* @__PURE__ */ factory(
22875
22875
  isNegative: isNegative2,
22876
22876
  unaryMinus: unaryMinus2,
22877
22877
  matrix: matrix2,
22878
- Complex: Complex11,
22878
+ Complex: Complex12,
22879
22879
  BigNumber: BigNumber9,
22880
22880
  Fraction: Fraction5
22881
22881
  }) => {
@@ -22893,12 +22893,12 @@ var createCbrt = /* @__PURE__ */ factory(
22893
22893
  function _cbrtComplex(x, allRoots) {
22894
22894
  const arg3 = x.arg() / 3;
22895
22895
  const abs2 = x.abs();
22896
- const principal = new Complex11(cbrtNumber(abs2), 0).mul(new Complex11(0, arg3).exp());
22896
+ const principal = new Complex12(cbrtNumber(abs2), 0).mul(new Complex12(0, arg3).exp());
22897
22897
  if (allRoots) {
22898
22898
  const all = [
22899
22899
  principal,
22900
- new Complex11(cbrtNumber(abs2), 0).mul(new Complex11(0, arg3 + Math.PI * 2 / 3).exp()),
22901
- new Complex11(cbrtNumber(abs2), 0).mul(new Complex11(0, arg3 - Math.PI * 2 / 3).exp())
22900
+ new Complex12(cbrtNumber(abs2), 0).mul(new Complex12(0, arg3 + Math.PI * 2 / 3).exp()),
22901
+ new Complex12(cbrtNumber(abs2), 0).mul(new Complex12(0, arg3 - Math.PI * 2 / 3).exp())
22902
22902
  ];
22903
22903
  return config.matrix === "Array" ? all : matrix2(all);
22904
22904
  } else {
@@ -22947,27 +22947,27 @@ var createNthRoots = /* @__PURE__ */ factory(
22947
22947
  typed: typed3,
22948
22948
  config: _config,
22949
22949
  divideScalar: _divideScalar,
22950
- Complex: Complex11
22950
+ Complex: Complex12
22951
22951
  }) => {
22952
22952
  const _calculateExactResult = [
22953
22953
  function realPos(val) {
22954
- return new Complex11(val, 0);
22954
+ return new Complex12(val, 0);
22955
22955
  },
22956
22956
  function imagPos(val) {
22957
- return new Complex11(0, val);
22957
+ return new Complex12(0, val);
22958
22958
  },
22959
22959
  function realNeg(val) {
22960
- return new Complex11(-val, 0);
22960
+ return new Complex12(-val, 0);
22961
22961
  },
22962
22962
  function imagNeg(val) {
22963
- return new Complex11(0, -val);
22963
+ return new Complex12(0, -val);
22964
22964
  }
22965
22965
  ];
22966
22966
  function _nthComplexRoots(a, root) {
22967
22967
  if (root < 0) throw new Error("Root must be greater than zero");
22968
22968
  if (root === 0) throw new Error("Root must be non-zero");
22969
22969
  if (root % 1 !== 0) throw new Error("Root must be an integer");
22970
- if (a === 0 || a.abs() === 0) return [new Complex11(0, 0)];
22970
+ if (a === 0 || a.abs() === 0) return [new Complex12(0, 0)];
22971
22971
  const aIsNumeric = typeof a === "number";
22972
22972
  let offset = NaN;
22973
22973
  if (aIsNumeric || a.re === 0 || a.im === 0) {
@@ -22989,7 +22989,7 @@ var createNthRoots = /* @__PURE__ */ factory(
22989
22989
  roots.push(_calculateExactResult[halfPiFactor % 4](r));
22990
22990
  continue;
22991
22991
  }
22992
- roots.push(new Complex11({ r, phi: (arg3 + 2 * Math.PI * k) / root }));
22992
+ roots.push(new Complex12({ r, phi: (arg3 + 2 * Math.PI * k) / root }));
22993
22993
  }
22994
22994
  return roots;
22995
22995
  }
@@ -23376,12 +23376,12 @@ var nlg16 = Math.log(16);
23376
23376
  var createLog = /* @__PURE__ */ factory(
23377
23377
  name112,
23378
23378
  dependencies112,
23379
- ({ typed: typed3, typeOf: typeOf3, config, divideScalar: divideScalar2, Complex: Complex11 }) => {
23379
+ ({ typed: typed3, typeOf: typeOf3, config, divideScalar: divideScalar2, Complex: Complex12 }) => {
23380
23380
  function complexLog(c) {
23381
23381
  return c.log();
23382
23382
  }
23383
23383
  function complexLogNumber(x) {
23384
- return complexLog(new Complex11(x, 0));
23384
+ return complexLog(new Complex12(x, 0));
23385
23385
  }
23386
23386
  return typed3(name112, {
23387
23387
  number: function(x) {
@@ -23579,9 +23579,9 @@ var createInv = /* @__PURE__ */ factory(
23579
23579
  if (isMatrix(x)) {
23580
23580
  const matX = x;
23581
23581
  const storage = matX.storage();
23582
- return matrix2(_inv2(matX.valueOf(), rows, cols), storage);
23582
+ return matrix2(_inv4(matX.valueOf(), rows, cols), storage);
23583
23583
  } else {
23584
- return _inv2(x, rows, cols);
23584
+ return _inv4(x, rows, cols);
23585
23585
  }
23586
23586
  } else {
23587
23587
  throw new RangeError("Matrix must be square (size: " + format3(size2, {}) + ")");
@@ -23597,7 +23597,7 @@ var createInv = /* @__PURE__ */ factory(
23597
23597
  return divideScalar2(1, x);
23598
23598
  }
23599
23599
  });
23600
- function _inv2(mat, rows, cols) {
23600
+ function _inv4(mat, rows, cols) {
23601
23601
  let r, s, f, value, temp;
23602
23602
  const wasm = wasmLoader.getModule();
23603
23603
  if (wasm && rows >= 3 && rows * rows >= WASM_INV_THRESHOLD && isPlainNumberMatrix5(mat)) {
@@ -23812,9 +23812,9 @@ var createResize = /* @__PURE__ */ factory(
23812
23812
  }
23813
23813
  return clone(scalar);
23814
23814
  } else {
23815
- let arr6 = !Array.isArray(x) ? [x] : x;
23816
- arr6 = clone(arr6);
23817
- const res = resize(arr6, sz, defaultValue);
23815
+ let arr7 = !Array.isArray(x) ? [x] : x;
23816
+ arr7 = clone(arr7);
23817
+ const res = resize(arr7, sz, defaultValue);
23818
23818
  return asMatrix ? matrix2(res) : res;
23819
23819
  }
23820
23820
  }
@@ -24656,7 +24656,7 @@ var dependencies126 = ["typed", "add", "multiply", "Complex", "number"];
24656
24656
  var createZpk2tf = /* @__PURE__ */ factory(
24657
24657
  name126,
24658
24658
  dependencies126,
24659
- ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex11, number: number2 }) => {
24659
+ ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex12, number: number2 }) => {
24660
24660
  return typed3(name126, {
24661
24661
  "Array,Array,number": function(z, p, k) {
24662
24662
  return _zpk2tf(z, p, k);
@@ -24678,27 +24678,27 @@ var createZpk2tf = /* @__PURE__ */ factory(
24678
24678
  if (p.some((el) => el.type === "BigNumber")) {
24679
24679
  p = p.map((el) => number2(el));
24680
24680
  }
24681
- let num = [Complex11(1, 0)];
24682
- let den = [Complex11(1, 0)];
24681
+ let num2 = [Complex12(1, 0)];
24682
+ let den = [Complex12(1, 0)];
24683
24683
  for (let i = 0; i < z.length; i++) {
24684
24684
  let zero = z[i];
24685
- if (typeof zero === "number") zero = Complex11(zero, 0);
24686
- num = _multiply2(num, [Complex11(1, 0), Complex11(-zero.re, -zero.im)]);
24685
+ if (typeof zero === "number") zero = Complex12(zero, 0);
24686
+ num2 = _multiply2(num2, [Complex12(1, 0), Complex12(-zero.re, -zero.im)]);
24687
24687
  }
24688
24688
  for (let i = 0; i < p.length; i++) {
24689
24689
  let pole = p[i];
24690
- if (typeof pole === "number") pole = Complex11(pole, 0);
24691
- den = _multiply2(den, [Complex11(1, 0), Complex11(-pole.re, -pole.im)]);
24690
+ if (typeof pole === "number") pole = Complex12(pole, 0);
24691
+ den = _multiply2(den, [Complex12(1, 0), Complex12(-pole.re, -pole.im)]);
24692
24692
  }
24693
- for (let i = 0; i < num.length; i++) {
24694
- num[i] = multiply2(num[i], k);
24693
+ for (let i = 0; i < num2.length; i++) {
24694
+ num2[i] = multiply2(num2[i], k);
24695
24695
  }
24696
- return [num, den];
24696
+ return [num2, den];
24697
24697
  }
24698
24698
  function _multiply2(a, b) {
24699
24699
  const c = [];
24700
24700
  for (let i = 0; i < a.length + b.length - 1; i++) {
24701
- c[i] = Complex11(0, 0);
24701
+ c[i] = Complex12(0, 0);
24702
24702
  for (let j = 0; j < a.length; j++) {
24703
24703
  if (i - j >= 0 && i - j < b.length) {
24704
24704
  c[i] = add2(c[i], multiply2(a[j], b[i - j]));
@@ -24712,9 +24712,9 @@ var createZpk2tf = /* @__PURE__ */ factory(
24712
24712
 
24713
24713
  // src/statistics/cumsum.ts
24714
24714
  var WASM_CUMSUM_THRESHOLD = 100;
24715
- function isFlatNumberArray2(arr6) {
24716
- for (let i = 0; i < arr6.length; i++) {
24717
- if (typeof arr6[i] !== "number") {
24715
+ function isFlatNumberArray2(arr7) {
24716
+ for (let i = 0; i < arr7.length; i++) {
24717
+ if (typeof arr7[i] !== "number") {
24718
24718
  return false;
24719
24719
  }
24720
24720
  }
@@ -24825,9 +24825,9 @@ var createCumSum = /* @__PURE__ */ factory(
24825
24825
 
24826
24826
  // src/statistics/sum.ts
24827
24827
  var WASM_SUM_THRESHOLD = 100;
24828
- function isFlatNumberArray3(arr6) {
24829
- for (let i = 0; i < arr6.length; i++) {
24830
- if (typeof arr6[i] !== "number") {
24828
+ function isFlatNumberArray3(arr7) {
24829
+ for (let i = 0; i < arr7.length; i++) {
24830
+ if (typeof arr7[i] !== "number") {
24831
24831
  return false;
24832
24832
  }
24833
24833
  }
@@ -25941,13 +25941,13 @@ var dependencies142 = ["typed", "config", "divideScalar", "log", "Complex"];
25941
25941
  var createLog1p = /* @__PURE__ */ factory(
25942
25942
  name142,
25943
25943
  dependencies142,
25944
- ({ typed: typed3, config, divideScalar: divideScalar2, log: log3, Complex: Complex11 }) => {
25944
+ ({ typed: typed3, config, divideScalar: divideScalar2, log: log3, Complex: Complex12 }) => {
25945
25945
  return typed3(name142, {
25946
25946
  number: function(x) {
25947
25947
  if (x >= -1 || config.predictable) {
25948
25948
  return log1p2(x);
25949
25949
  } else {
25950
- return _log1pComplex(new Complex11(x, 0));
25950
+ return _log1pComplex(new Complex12(x, 0));
25951
25951
  }
25952
25952
  },
25953
25953
  Complex: _log1pComplex,
@@ -25956,7 +25956,7 @@ var createLog1p = /* @__PURE__ */ factory(
25956
25956
  if (!y.isNegative() || config.predictable) {
25957
25957
  return y.ln();
25958
25958
  } else {
25959
- return _log1pComplex(new Complex11(x.toNumber(), 0));
25959
+ return _log1pComplex(new Complex12(x.toNumber(), 0));
25960
25960
  }
25961
25961
  },
25962
25962
  "Array | Matrix": typed3.referToSelf(
@@ -25970,7 +25970,7 @@ var createLog1p = /* @__PURE__ */ factory(
25970
25970
  });
25971
25971
  function _log1pComplex(x) {
25972
25972
  const xRe1p = x.re + 1;
25973
- return new Complex11(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));
25973
+ return new Complex12(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));
25974
25974
  }
25975
25975
  }
25976
25976
  );
@@ -26122,7 +26122,7 @@ var createPow = /* @__PURE__ */ factory(
26122
26122
  inv: inv2,
26123
26123
  number: number2,
26124
26124
  fraction: fraction2,
26125
- Complex: Complex11
26125
+ Complex: Complex12
26126
26126
  }) => {
26127
26127
  return typed3(name144, {
26128
26128
  "number, number": _pow,
@@ -26133,7 +26133,7 @@ var createPow = /* @__PURE__ */ factory(
26133
26133
  if (y.isInteger() || x.gte(0) || config.predictable) {
26134
26134
  return x.pow(y);
26135
26135
  } else {
26136
- return new Complex11(x.toNumber(), 0).pow(y.toNumber(), 0);
26136
+ return new Complex12(x.toNumber(), 0).pow(y.toNumber(), 0);
26137
26137
  }
26138
26138
  },
26139
26139
  "bigint, bigint": (x, y) => x ** y,
@@ -26182,7 +26182,7 @@ var createPow = /* @__PURE__ */ factory(
26182
26182
  if (isPowZeroAtInfinity(x, y)) {
26183
26183
  return 0;
26184
26184
  }
26185
- return new Complex11(x, 0).pow(y, 0);
26185
+ return new Complex12(x, 0).pow(y, 0);
26186
26186
  }
26187
26187
  }
26188
26188
  function _powArray(x, y) {
@@ -27587,7 +27587,7 @@ var createFixNumber = /* @__PURE__ */ factory(
27587
27587
  var createFix = /* @__PURE__ */ factory(
27588
27588
  name167,
27589
27589
  dependencies167,
27590
- ({ typed: typed3, Complex: Complex11, matrix: matrix2, ceil: ceil2, floor: floor2, equalScalar: equalScalar3, zeros: zeros3, DenseMatrix: DenseMatrix6 }) => {
27590
+ ({ typed: typed3, Complex: Complex12, matrix: matrix2, ceil: ceil2, floor: floor2, equalScalar: equalScalar3, zeros: zeros3, DenseMatrix: DenseMatrix6 }) => {
27591
27591
  const matAlgo12xSfs = createMatAlgo12xSfs({ typed: typed3, DenseMatrix: DenseMatrix6 });
27592
27592
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
27593
27593
  const fixNumber = createFixNumber({ typed: typed3, ceil: ceil2, floor: floor2 });
@@ -27595,20 +27595,20 @@ var createFix = /* @__PURE__ */ factory(
27595
27595
  number: fixNumber.signatures.number,
27596
27596
  "number, number | BigNumber": fixNumber.signatures["number,number"],
27597
27597
  Complex: function(x) {
27598
- return new Complex11(
27598
+ return new Complex12(
27599
27599
  x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re),
27600
27600
  x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im)
27601
27601
  );
27602
27602
  },
27603
27603
  "Complex, number": function(x, n) {
27604
- return new Complex11(
27604
+ return new Complex12(
27605
27605
  x.re > 0 ? floor2(x.re, n) : ceil2(x.re, n),
27606
27606
  x.im > 0 ? floor2(x.im, n) : ceil2(x.im, n)
27607
27607
  );
27608
27608
  },
27609
27609
  "Complex, BigNumber": function(x, bn) {
27610
27610
  const n = bn.toNumber();
27611
- return new Complex11(
27611
+ return new Complex12(
27612
27612
  x.re > 0 ? floor2(x.re, n) : ceil2(x.re, n),
27613
27613
  x.im > 0 ? floor2(x.im, n) : ceil2(x.im, n)
27614
27614
  );
@@ -27839,9 +27839,9 @@ var createComposition = /* @__PURE__ */ factory(
27839
27839
 
27840
27840
  // src/matrix/partitionSelect.ts
27841
27841
  var WASM_PARTITION_SELECT_THRESHOLD = 100;
27842
- function isFlatNumberArray4(arr6) {
27843
- for (let i = 0; i < arr6.length; i++) {
27844
- if (typeof arr6[i] !== "number") {
27842
+ function isFlatNumberArray4(arr7) {
27843
+ for (let i = 0; i < arr7.length; i++) {
27844
+ if (typeof arr7[i] !== "number") {
27845
27845
  return false;
27846
27846
  }
27847
27847
  }
@@ -27883,28 +27883,28 @@ var createPartitionSelect = /* @__PURE__ */ factory(
27883
27883
  }
27884
27884
  return quickSelect2(x, k, compare3);
27885
27885
  }
27886
- function quickSelect2(arr6, k, compare3) {
27887
- if (k >= arr6.length) {
27886
+ function quickSelect2(arr7, k, compare3) {
27887
+ if (k >= arr7.length) {
27888
27888
  throw new Error("k out of bounds");
27889
27889
  }
27890
- for (let i = 0; i < arr6.length; i++) {
27891
- if (isNumeric2(arr6[i]) && mathIsNaN(arr6[i])) {
27892
- return arr6[i];
27890
+ for (let i = 0; i < arr7.length; i++) {
27891
+ if (isNumeric2(arr7[i]) && mathIsNaN(arr7[i])) {
27892
+ return arr7[i];
27893
27893
  }
27894
27894
  }
27895
27895
  const wasm = wasmLoader.getModule();
27896
- if (wasm && arr6.length >= WASM_PARTITION_SELECT_THRESHOLD && isFlatNumberArray4(arr6)) {
27896
+ if (wasm && arr7.length >= WASM_PARTITION_SELECT_THRESHOLD && isFlatNumberArray4(arr7)) {
27897
27897
  const isAsc = compare3 === asc;
27898
27898
  const isDesc = compare3 === desc;
27899
27899
  if (isAsc || isDesc) {
27900
27900
  try {
27901
- const effectiveK = isDesc ? arr6.length - 1 - k : k;
27902
- const data = wasmLoader.allocateFloat64Array(arr6);
27903
- const work = wasmLoader.allocateFloat64ArrayEmpty(arr6.length);
27901
+ const effectiveK = isDesc ? arr7.length - 1 - k : k;
27902
+ const data = wasmLoader.allocateFloat64Array(arr7);
27903
+ const work = wasmLoader.allocateFloat64ArrayEmpty(arr7.length);
27904
27904
  try {
27905
- const result = wasm.partitionSelect(data.ptr, arr6.length, effectiveK, work.ptr);
27906
- for (let i = 0; i < arr6.length; i++) {
27907
- arr6[i] = work.array[i];
27905
+ const result = wasm.partitionSelect(data.ptr, arr7.length, effectiveK, work.ptr);
27906
+ for (let i = 0; i < arr7.length; i++) {
27907
+ arr7[i] = work.array[i];
27908
27908
  }
27909
27909
  return result;
27910
27910
  } finally {
@@ -27916,22 +27916,22 @@ var createPartitionSelect = /* @__PURE__ */ factory(
27916
27916
  }
27917
27917
  }
27918
27918
  let from = 0;
27919
- let to3 = arr6.length - 1;
27919
+ let to3 = arr7.length - 1;
27920
27920
  while (from < to3) {
27921
27921
  let r = from;
27922
27922
  let w = to3;
27923
- const pivot = arr6[Math.floor(Math.random() * (to3 - from + 1)) + from];
27923
+ const pivot = arr7[Math.floor(Math.random() * (to3 - from + 1)) + from];
27924
27924
  while (r < w) {
27925
- if (compare3(arr6[r], pivot) >= 0) {
27926
- const tmp = arr6[w];
27927
- arr6[w] = arr6[r];
27928
- arr6[r] = tmp;
27925
+ if (compare3(arr7[r], pivot) >= 0) {
27926
+ const tmp = arr7[w];
27927
+ arr7[w] = arr7[r];
27928
+ arr7[r] = tmp;
27929
27929
  --w;
27930
27930
  } else {
27931
27931
  ++r;
27932
27932
  }
27933
27933
  }
27934
- if (compare3(arr6[r], pivot) > 0) {
27934
+ if (compare3(arr7[r], pivot) > 0) {
27935
27935
  --r;
27936
27936
  }
27937
27937
  if (k <= r) {
@@ -27940,7 +27940,7 @@ var createPartitionSelect = /* @__PURE__ */ factory(
27940
27940
  from = r + 1;
27941
27941
  }
27942
27942
  }
27943
- return arr6[k];
27943
+ return arr7[k];
27944
27944
  }
27945
27945
  }
27946
27946
  );
@@ -27976,7 +27976,7 @@ var createPinv = /* @__PURE__ */ factory(
27976
27976
  divideScalar: divideScalar2,
27977
27977
  multiply: multiply2,
27978
27978
  add: add2,
27979
- Complex: Complex11
27979
+ Complex: Complex12
27980
27980
  }) => {
27981
27981
  return typed3(name172, {
27982
27982
  "Array | Matrix": function(x) {
@@ -28071,12 +28071,12 @@ var createPinv = /* @__PURE__ */ factory(
28071
28071
  return { C, F };
28072
28072
  }
28073
28073
  function _isZero(x) {
28074
- return equal2(add2(x, Complex11(1, 1)), add2(0, Complex11(1, 1)));
28074
+ return equal2(add2(x, Complex12(1, 1)), add2(0, Complex12(1, 1)));
28075
28075
  }
28076
- function _isZeros(arr6) {
28076
+ function _isZeros(arr7) {
28077
28077
  return deepEqual3(
28078
- add2(arr6, Complex11(1, 1)),
28079
- add2(multiply2(arr6, 0), Complex11(1, 1))
28078
+ add2(arr7, Complex12(1, 1)),
28079
+ add2(multiply2(arr7, 0), Complex12(1, 1))
28080
28080
  );
28081
28081
  }
28082
28082
  }
@@ -28393,11 +28393,11 @@ var createRange = /* @__PURE__ */ factory(
28393
28393
  return _out(_range(start, end, step, includeEnd));
28394
28394
  }
28395
28395
  });
28396
- function _out(arr6) {
28396
+ function _out(arr7) {
28397
28397
  if (config.matrix === "Matrix") {
28398
- return matrix2 ? matrix2(arr6) : noMatrix();
28398
+ return matrix2 ? matrix2(arr7) : noMatrix();
28399
28399
  }
28400
- return arr6;
28400
+ return arr7;
28401
28401
  }
28402
28402
  function _strRange(str, includeEnd) {
28403
28403
  const r = _parse2(str);
@@ -28429,8 +28429,8 @@ var createRange = /* @__PURE__ */ factory(
28429
28429
  const nums = args.map(function(arg3) {
28430
28430
  return Number(arg3);
28431
28431
  });
28432
- const invalid = nums.some(function(num) {
28433
- return isNaN(num);
28432
+ const invalid = nums.some(function(num2) {
28433
+ return isNaN(num2);
28434
28434
  });
28435
28435
  if (invalid) {
28436
28436
  return null;
@@ -28467,25 +28467,25 @@ var createGamma = /* @__PURE__ */ factory(
28467
28467
  multiplyScalar: _multiplyScalar,
28468
28468
  pow: _pow,
28469
28469
  BigNumber: BigNumber9,
28470
- Complex: Complex11
28470
+ Complex: Complex12
28471
28471
  }) => {
28472
28472
  function gammaComplex(n) {
28473
28473
  if (n.im === 0) {
28474
28474
  return gammaNumber(n.re);
28475
28475
  }
28476
28476
  if (n.re < 0.5) {
28477
- const t2 = new Complex11(1 - n.re, -n.im);
28478
- const r = new Complex11(Math.PI * n.re, Math.PI * n.im);
28477
+ const t2 = new Complex12(1 - n.re, -n.im);
28478
+ const r = new Complex12(Math.PI * n.re, Math.PI * n.im);
28479
28479
  const gammaT = gammaComplex(t2);
28480
- return new Complex11(Math.PI).div(r.sin()).div(gammaT);
28480
+ return new Complex12(Math.PI).div(r.sin()).div(gammaT);
28481
28481
  }
28482
- const z = new Complex11(n.re - 1, n.im);
28483
- let x = new Complex11(gammaP[0], 0);
28482
+ const z = new Complex12(n.re - 1, n.im);
28483
+ let x = new Complex12(gammaP[0], 0);
28484
28484
  for (let i = 1; i < gammaP.length; ++i) {
28485
- const gammaPval = new Complex11(gammaP[i], 0);
28485
+ const gammaPval = new Complex12(gammaP[i], 0);
28486
28486
  x = x.add(gammaPval.div(z.add(i)));
28487
28487
  }
28488
- const t = new Complex11(z.re + gammaG + 0.5, z.im);
28488
+ const t = new Complex12(z.re + gammaG + 0.5, z.im);
28489
28489
  const twoPiSqrt = Math.sqrt(2 * Math.PI);
28490
28490
  const tpow = t.pow(z.add(0.5));
28491
28491
  const expt = t.neg().exp();
@@ -28704,9 +28704,9 @@ var createEqualText = /* @__PURE__ */ factory(
28704
28704
 
28705
28705
  // src/statistics/max.ts
28706
28706
  var WASM_MAX_THRESHOLD = 100;
28707
- function isFlatNumberArray5(arr6) {
28708
- for (let i = 0; i < arr6.length; i++) {
28709
- if (typeof arr6[i] !== "number") {
28707
+ function isFlatNumberArray5(arr7) {
28708
+ for (let i = 0; i < arr7.length; i++) {
28709
+ if (typeof arr7[i] !== "number") {
28710
28710
  return false;
28711
28711
  }
28712
28712
  }
@@ -28783,9 +28783,9 @@ var createMax = /* @__PURE__ */ factory(
28783
28783
 
28784
28784
  // src/statistics/min.ts
28785
28785
  var WASM_MIN_THRESHOLD = 100;
28786
- function isFlatNumberArray6(arr6) {
28787
- for (let i = 0; i < arr6.length; i++) {
28788
- if (typeof arr6[i] !== "number") {
28786
+ function isFlatNumberArray6(arr7) {
28787
+ for (let i = 0; i < arr7.length; i++) {
28788
+ if (typeof arr7[i] !== "number") {
28789
28789
  return false;
28790
28790
  }
28791
28791
  }
@@ -28870,8 +28870,8 @@ var createNullish = /* @__PURE__ */ factory(
28870
28870
  const matAlgo03xDSf = createMatAlgo03xDSf({ typed: typed3 });
28871
28871
  const matAlgo14xDs = createMatAlgo14xDs({ typed: typed3 });
28872
28872
  const matAlgo13xDD = createMatAlgo13xDD({ typed: typed3 });
28873
- const toMatrix = (arr6) => {
28874
- return matrix2(arr6);
28873
+ const toMatrix = (arr7) => {
28874
+ return matrix2(arr7);
28875
28875
  };
28876
28876
  return typed3(name180, {
28877
28877
  // Scalar and SparseMatrix-first short-circuit handlers
@@ -29183,11 +29183,11 @@ var createDistance = /* @__PURE__ */ factory(
29183
29183
  throw new TypeError("Invalid Arguments: Try again");
29184
29184
  }
29185
29185
  },
29186
- Array: function(arr6) {
29187
- if (!_pairwise(arr6)) {
29186
+ Array: function(arr7) {
29187
+ if (!_pairwise(arr7)) {
29188
29188
  throw new TypeError("Incorrect array format entered for pairwise distance calculation");
29189
29189
  }
29190
- return _distancePairwise(arr6);
29190
+ return _distancePairwise(arr7);
29191
29191
  }
29192
29192
  });
29193
29193
  function _isNumber(a) {
@@ -29197,15 +29197,15 @@ var createDistance = /* @__PURE__ */ factory(
29197
29197
  if (!Array.isArray(a)) {
29198
29198
  a = _objectToArray(a);
29199
29199
  }
29200
- const arr6 = a;
29201
- return _isNumber(arr6[0]) && _isNumber(arr6[1]);
29200
+ const arr7 = a;
29201
+ return _isNumber(arr7[0]) && _isNumber(arr7[1]);
29202
29202
  }
29203
29203
  function _3d(a) {
29204
29204
  if (!Array.isArray(a)) {
29205
29205
  a = _objectToArray(a);
29206
29206
  }
29207
- const arr6 = a;
29208
- return _isNumber(arr6[0]) && _isNumber(arr6[1]) && _isNumber(arr6[2]);
29207
+ const arr7 = a;
29208
+ return _isNumber(arr7[0]) && _isNumber(arr7[1]) && _isNumber(arr7[2]);
29209
29209
  }
29210
29210
  function _containsOnlyNumbers(a) {
29211
29211
  if (!Array.isArray(a)) {
@@ -29217,8 +29217,8 @@ var createDistance = /* @__PURE__ */ factory(
29217
29217
  if (!Array.isArray(a)) {
29218
29218
  a = _objectToArray(a);
29219
29219
  }
29220
- const arr6 = a;
29221
- return _isNumber(arr6[0]) && _isNumber(arr6[1]) && _isNumber(arr6[2]) && _isNumber(arr6[3]) && _isNumber(arr6[4]) && _isNumber(arr6[5]);
29220
+ const arr7 = a;
29221
+ return _isNumber(arr7[0]) && _isNumber(arr7[1]) && _isNumber(arr7[2]) && _isNumber(arr7[3]) && _isNumber(arr7[4]) && _isNumber(arr7[5]);
29222
29222
  }
29223
29223
  function _objectToArray(o) {
29224
29224
  const keys = Object.keys(o);
@@ -29245,9 +29245,9 @@ var createDistance = /* @__PURE__ */ factory(
29245
29245
  return true;
29246
29246
  }
29247
29247
  function _distancePointLine2D(x, y, a, b, c) {
29248
- const num = abs2(addScalar2(addScalar2(multiplyScalar2(a, x), multiplyScalar2(b, y)), c));
29248
+ const num2 = abs2(addScalar2(addScalar2(multiplyScalar2(a, x), multiplyScalar2(b, y)), c));
29249
29249
  const den = sqrt2(addScalar2(multiplyScalar2(a, a), multiplyScalar2(b, b)));
29250
- return divideScalar2(num, den);
29250
+ return divideScalar2(num2, den);
29251
29251
  }
29252
29252
  function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {
29253
29253
  const numComponents = [
@@ -29264,7 +29264,7 @@ var createDistance = /* @__PURE__ */ factory(
29264
29264
  multiplyScalar2(subtractScalar2(y0, y), a)
29265
29265
  )
29266
29266
  ];
29267
- const num = sqrt2(
29267
+ const num2 = sqrt2(
29268
29268
  addScalar2(
29269
29269
  addScalar2(
29270
29270
  multiplyScalar2(numComponents[0], numComponents[0]),
@@ -29276,7 +29276,7 @@ var createDistance = /* @__PURE__ */ factory(
29276
29276
  const den = sqrt2(
29277
29277
  addScalar2(addScalar2(multiplyScalar2(a, a), multiplyScalar2(b, b)), multiplyScalar2(c, c))
29278
29278
  );
29279
- return divideScalar2(num, den);
29279
+ return divideScalar2(num2, den);
29280
29280
  }
29281
29281
  function _euclideanDistance(x, y) {
29282
29282
  const vectorSize = x.length;
@@ -29846,7 +29846,7 @@ var createResolve = /* @__PURE__ */ factory(
29846
29846
  dependencies192,
29847
29847
  ({
29848
29848
  typed: typed3,
29849
- parse: parse2,
29849
+ parse: parse3,
29850
29850
  ConstantNode,
29851
29851
  FunctionNode,
29852
29852
  OperatorNode,
@@ -29869,7 +29869,7 @@ var createResolve = /* @__PURE__ */ factory(
29869
29869
  nextWithin.add(symbolNode.name);
29870
29870
  return _resolve(value, scope, nextWithin);
29871
29871
  } else if (typeof value === "number") {
29872
- return parse2(String(value));
29872
+ return parse3(String(value));
29873
29873
  } else if (value !== void 0) {
29874
29874
  return new ConstantNode(value);
29875
29875
  } else {
@@ -30137,7 +30137,7 @@ var createSimplifyConstant = /* @__PURE__ */ factory(
30137
30137
  config,
30138
30138
  mathWithTransform,
30139
30139
  matrix: matrix2,
30140
- parse: parse2,
30140
+ parse: parse3,
30141
30141
  isBounded: isBounded2,
30142
30142
  fraction: fraction2,
30143
30143
  bignumber: bignumber2,
@@ -30156,9 +30156,9 @@ var createSimplifyConstant = /* @__PURE__ */ factory(
30156
30156
  SymbolNode
30157
30157
  });
30158
30158
  const simplifyConstant2 = typed3("simplifyConstant", {
30159
- string: (expr) => _ensureNode(foldFraction(parse2(expr), {})),
30159
+ string: (expr) => _ensureNode(foldFraction(parse3(expr), {})),
30160
30160
  "string, Object": function(expr, options) {
30161
- return _ensureNode(foldFraction(parse2(expr), options));
30161
+ return _ensureNode(foldFraction(parse3(expr), options));
30162
30162
  },
30163
30163
  Node: (node) => _ensureNode(foldFraction(node, {})),
30164
30164
  "Node, Object": function(expr, options) {
@@ -30539,11 +30539,11 @@ var WASM_FFT_THRESHOLD = 64;
30539
30539
  function isPowerOf22(n) {
30540
30540
  return n > 0 && (n & n - 1) === 0;
30541
30541
  }
30542
- function complexToInterleaved(arr6, _complex) {
30543
- const n = arr6.length;
30542
+ function complexToInterleaved(arr7, _complex) {
30543
+ const n = arr7.length;
30544
30544
  const result = new Float64Array(n * 2);
30545
30545
  for (let i = 0; i < n; i++) {
30546
- const val = arr6[i];
30546
+ const val = arr7[i];
30547
30547
  if (typeof val === "number") {
30548
30548
  result[i * 2] = val;
30549
30549
  result[i * 2 + 1] = 0;
@@ -30605,40 +30605,40 @@ var createFft = /* @__PURE__ */ factory(
30605
30605
  return matrix2.create(_ndFft(matrix2.valueOf()), matrix2._datatype);
30606
30606
  }
30607
30607
  });
30608
- function _ndFft(arr6) {
30609
- const size2 = arraySize(arr6);
30610
- if (size2.length === 1) return _fft(arr6, size2[0]);
30608
+ function _ndFft(arr7) {
30609
+ const size2 = arraySize(arr7);
30610
+ if (size2.length === 1) return _fft(arr7, size2[0]);
30611
30611
  return _1dFft(
30612
- arr6.map((slice) => _ndFft(slice)),
30612
+ arr7.map((slice) => _ndFft(slice)),
30613
30613
  0
30614
30614
  );
30615
30615
  }
30616
- function _1dFft(arr6, dim) {
30617
- const size2 = arraySize(arr6);
30616
+ function _1dFft(arr7, dim) {
30617
+ const size2 = arraySize(arr7);
30618
30618
  if (dim !== 0) {
30619
30619
  const result = [];
30620
30620
  for (let i = 0; i < size2[0]; i++) {
30621
- result.push(_1dFft(arr6[i], dim - 1));
30621
+ result.push(_1dFft(arr7[i], dim - 1));
30622
30622
  }
30623
30623
  return result;
30624
30624
  }
30625
- if (size2.length === 1) return _fft(arr6);
30626
- function _transpose(arr7) {
30627
- const size3 = arraySize(arr7);
30625
+ if (size2.length === 1) return _fft(arr7);
30626
+ function _transpose(arr8) {
30627
+ const size3 = arraySize(arr8);
30628
30628
  const result = [];
30629
30629
  for (let j = 0; j < size3[1]; j++) {
30630
30630
  const row2 = [];
30631
30631
  for (let i = 0; i < size3[0]; i++) {
30632
- row2.push(arr7[i][j]);
30632
+ row2.push(arr8[i][j]);
30633
30633
  }
30634
30634
  result.push(row2);
30635
30635
  }
30636
30636
  return result;
30637
30637
  }
30638
- return _transpose(_1dFft(_transpose(arr6), 1));
30638
+ return _transpose(_1dFft(_transpose(arr7), 1));
30639
30639
  }
30640
- function _czt(arr6) {
30641
- const n = arr6.length;
30640
+ function _czt(arr7) {
30641
+ const n = arr7.length;
30642
30642
  const w = exp2(divideScalar2(multiplyScalar2(-1, multiplyScalar2(I2, tau2)), n));
30643
30643
  const chirp = [];
30644
30644
  for (let i = 1 - n; i < n; i++) {
@@ -30647,7 +30647,7 @@ var createFft = /* @__PURE__ */ factory(
30647
30647
  const N2 = pow2(2, ceil2(log24(n + n - 1)));
30648
30648
  const xp = [];
30649
30649
  for (let i = 0; i < n; i++) {
30650
- xp.push(multiplyScalar2(arr6[i], chirp[n - 1 + i]));
30650
+ xp.push(multiplyScalar2(arr7[i], chirp[n - 1 + i]));
30651
30651
  }
30652
30652
  for (let i = 0; i < N2 - n; i++) {
30653
30653
  xp.push(0);
@@ -30672,12 +30672,12 @@ var createFft = /* @__PURE__ */ factory(
30672
30672
  }
30673
30673
  return ret;
30674
30674
  }
30675
- function _fft(arr6, len) {
30676
- const length = len ?? arr6.length;
30677
- if (length === 1) return [arr6[0]];
30675
+ function _fft(arr7, len) {
30676
+ const length = len ?? arr7.length;
30677
+ if (length === 1) return [arr7[0]];
30678
30678
  const wasm = wasmLoader.getModule();
30679
30679
  if (wasm && length >= WASM_FFT_THRESHOLD && isPowerOf22(length) && len === void 0) {
30680
- const interleaved = complexToInterleaved(arr6, complex2);
30680
+ const interleaved = complexToInterleaved(arr7, complex2);
30681
30681
  if (interleaved) {
30682
30682
  try {
30683
30683
  const dataAlloc = wasmLoader.allocateFloat64Array(interleaved);
@@ -30694,11 +30694,11 @@ var createFft = /* @__PURE__ */ factory(
30694
30694
  if (length % 2 === 0) {
30695
30695
  const ret = [
30696
30696
  ..._fft(
30697
- arr6.filter((_, i) => i % 2 === 0),
30697
+ arr7.filter((_, i) => i % 2 === 0),
30698
30698
  length / 2
30699
30699
  ),
30700
30700
  ..._fft(
30701
- arr6.filter((_, i) => i % 2 === 1),
30701
+ arr7.filter((_, i) => i % 2 === 1),
30702
30702
  length / 2
30703
30703
  )
30704
30704
  ];
@@ -30713,7 +30713,7 @@ var createFft = /* @__PURE__ */ factory(
30713
30713
  }
30714
30714
  return ret;
30715
30715
  } else {
30716
- return _czt(arr6);
30716
+ return _czt(arr7);
30717
30717
  }
30718
30718
  }
30719
30719
  }
@@ -30984,11 +30984,11 @@ var WASM_IFFT_THRESHOLD = 64;
30984
30984
  function isPowerOf23(n) {
30985
30985
  return n > 0 && (n & n - 1) === 0;
30986
30986
  }
30987
- function complexToInterleaved2(arr6, _complex) {
30988
- const n = arr6.length;
30987
+ function complexToInterleaved2(arr7, _complex) {
30988
+ const n = arr7.length;
30989
30989
  const result = new Float64Array(n * 2);
30990
30990
  for (let i = 0; i < n; i++) {
30991
- const val = arr6[i];
30991
+ const val = arr7[i];
30992
30992
  if (typeof val === "number") {
30993
30993
  result[i * 2] = val;
30994
30994
  result[i * 2 + 1] = 0;
@@ -31016,14 +31016,14 @@ var createIfft = /* @__PURE__ */ factory(
31016
31016
  dependencies200,
31017
31017
  ({ typed: typed3, fft: fft2, dotDivide: dotDivide2, conj: conj3, complex: complex2 }) => {
31018
31018
  return typed3(name200, {
31019
- "Array | Matrix": function(arr6) {
31020
- const size2 = isMatrix(arr6) ? arr6.size() : arraySize(arr6);
31019
+ "Array | Matrix": function(arr7) {
31020
+ const size2 = isMatrix(arr7) ? arr7.size() : arraySize(arr7);
31021
31021
  const totalSize = size2.reduce((acc, curr) => acc * curr, 1);
31022
31022
  if (size2.length === 1) {
31023
31023
  const length = size2[0];
31024
31024
  const wasm = wasmLoader.getModule();
31025
31025
  if (wasm && length >= WASM_IFFT_THRESHOLD && isPowerOf23(length)) {
31026
- const arrData = isMatrix(arr6) ? arr6.valueOf() : arr6;
31026
+ const arrData = isMatrix(arr7) ? arr7.valueOf() : arr7;
31027
31027
  const interleaved = complexToInterleaved2(arrData, complex2);
31028
31028
  if (interleaved) {
31029
31029
  try {
@@ -31031,8 +31031,8 @@ var createIfft = /* @__PURE__ */ factory(
31031
31031
  try {
31032
31032
  wasm.fft(dataAlloc.ptr, length, 1);
31033
31033
  const result = interleavedToComplex2(dataAlloc.array, length, complex2);
31034
- if (isMatrix(arr6)) {
31035
- return arr6.create(result);
31034
+ if (isMatrix(arr7)) {
31035
+ return arr7.create(result);
31036
31036
  }
31037
31037
  return result;
31038
31038
  } finally {
@@ -31043,7 +31043,7 @@ var createIfft = /* @__PURE__ */ factory(
31043
31043
  }
31044
31044
  }
31045
31045
  }
31046
- return dotDivide2(conj3(fft2(conj3(arr6))), totalSize);
31046
+ return dotDivide2(conj3(fft2(conj3(arr7))), totalSize);
31047
31047
  }
31048
31048
  });
31049
31049
  }
@@ -31569,7 +31569,7 @@ var createUnitClass = /* @__PURE__ */ factory(
31569
31569
  isNumeric: isNumeric2,
31570
31570
  format: format6,
31571
31571
  number: number2,
31572
- Complex: Complex11,
31572
+ Complex: Complex12,
31573
31573
  BigNumber: BigNumber9,
31574
31574
  Fraction: Fraction5
31575
31575
  }) => {
@@ -33683,7 +33683,7 @@ var createUnitClass = /* @__PURE__ */ factory(
33683
33683
  name: "VAR",
33684
33684
  base: BASE_UNITS.POWER,
33685
33685
  prefixes: PREFIXES.SHORT,
33686
- value: Complex11.I,
33686
+ value: Complex12.I,
33687
33687
  offset: 0
33688
33688
  },
33689
33689
  VA: {
@@ -34943,51 +34943,51 @@ var createDiff = /* @__PURE__ */ factory(
34943
34943
  number: number2
34944
34944
  }) => {
34945
34945
  return typed3(name211, {
34946
- "Array | Matrix": function(arr6) {
34947
- if (isMatrix(arr6)) {
34948
- return matrix2(_diff(arr6.toArray()));
34946
+ "Array | Matrix": function(arr7) {
34947
+ if (isMatrix(arr7)) {
34948
+ return matrix2(_diff(arr7.toArray()));
34949
34949
  } else {
34950
- return _diff(arr6);
34950
+ return _diff(arr7);
34951
34951
  }
34952
34952
  },
34953
- "Array | Matrix, number": function(arr6, dim) {
34953
+ "Array | Matrix, number": function(arr7, dim) {
34954
34954
  if (!isInteger(dim)) throw new RangeError("Dimension must be a whole number");
34955
- if (isMatrix(arr6)) {
34956
- return matrix2(_recursive(arr6.toArray(), dim));
34955
+ if (isMatrix(arr7)) {
34956
+ return matrix2(_recursive(arr7.toArray(), dim));
34957
34957
  } else {
34958
- return _recursive(arr6, dim);
34958
+ return _recursive(arr7, dim);
34959
34959
  }
34960
34960
  },
34961
34961
  // typed-function's runtime `referTo` is single-call variadic
34962
34962
  // (`referTo(...signatures, callback)`); the imported TypedFunction interface
34963
34963
  // models it curried, so narrow to the real contract via `unknown`.
34964
- "Array, BigNumber": typed3.referTo("Array,number", (selfAn) => (arr6, dim) => selfAn(arr6, number2(dim))),
34965
- "Matrix, BigNumber": typed3.referTo("Matrix,number", (selfMn) => (arr6, dim) => selfMn(arr6, number2(dim)))
34964
+ "Array, BigNumber": typed3.referTo("Array,number", (selfAn) => (arr7, dim) => selfAn(arr7, number2(dim))),
34965
+ "Matrix, BigNumber": typed3.referTo("Matrix,number", (selfMn) => (arr7, dim) => selfMn(arr7, number2(dim)))
34966
34966
  });
34967
- function _recursive(arr6, dim) {
34968
- if (isMatrix(arr6)) {
34969
- arr6 = arr6.toArray();
34967
+ function _recursive(arr7, dim) {
34968
+ if (isMatrix(arr7)) {
34969
+ arr7 = arr7.toArray();
34970
34970
  }
34971
- if (!Array.isArray(arr6)) {
34971
+ if (!Array.isArray(arr7)) {
34972
34972
  throw RangeError("Array/Matrix does not have that many dimensions");
34973
34973
  }
34974
34974
  if (dim > 0) {
34975
34975
  const result = [];
34976
- arr6.forEach((element2) => {
34976
+ arr7.forEach((element2) => {
34977
34977
  result.push(_recursive(element2, dim - 1));
34978
34978
  });
34979
34979
  return result;
34980
34980
  } else if (dim === 0) {
34981
- return _diff(arr6);
34981
+ return _diff(arr7);
34982
34982
  } else {
34983
34983
  throw RangeError("Cannot have negative dimension");
34984
34984
  }
34985
34985
  }
34986
- function _diff(arr6) {
34986
+ function _diff(arr7) {
34987
34987
  const result = [];
34988
- const size2 = arr6.length;
34988
+ const size2 = arr7.length;
34989
34989
  for (let i = 1; i < size2; i++) {
34990
- result.push(_ElementDiff(arr6[i - 1], arr6[i]));
34990
+ result.push(_ElementDiff(arr7[i - 1], arr7[i]));
34991
34991
  }
34992
34992
  return result;
34993
34993
  }
@@ -36073,21 +36073,21 @@ var createIntersect = /* @__PURE__ */ factory(
36073
36073
  "Array, Array, Array": _AAA,
36074
36074
  "Array, Array, Array, Array": _AAAA,
36075
36075
  "Matrix, Matrix, Matrix": function(x, y, plane) {
36076
- const arr6 = _AAA(
36076
+ const arr7 = _AAA(
36077
36077
  x.valueOf(),
36078
36078
  y.valueOf(),
36079
36079
  plane.valueOf()
36080
36080
  );
36081
- return arr6 === null ? null : matrix2(arr6);
36081
+ return arr7 === null ? null : matrix2(arr7);
36082
36082
  },
36083
36083
  "Matrix, Matrix, Matrix, Matrix": function(w, x, y, z) {
36084
- const arr6 = _AAAA(
36084
+ const arr7 = _AAAA(
36085
36085
  w.valueOf(),
36086
36086
  x.valueOf(),
36087
36087
  y.valueOf(),
36088
36088
  z.valueOf()
36089
36089
  );
36090
- return arr6 === null ? null : matrix2(arr6);
36090
+ return arr7 === null ? null : matrix2(arr7);
36091
36091
  }
36092
36092
  });
36093
36093
  function _AAA(x, y, plane) {
@@ -36153,13 +36153,13 @@ var createIntersect = /* @__PURE__ */ factory(
36153
36153
  throw new TypeError("Arrays with two or thee dimensional points expected");
36154
36154
  }
36155
36155
  }
36156
- function _coerceArr(arr6) {
36157
- if (arr6.length === 1 && Array.isArray(arr6[0])) return arr6[0];
36158
- if (arr6.length > 1 && Array.isArray(arr6[0])) {
36159
- if (arr6.every((el) => Array.isArray(el) && el.length === 1))
36160
- return flatten4(arr6);
36156
+ function _coerceArr(arr7) {
36157
+ if (arr7.length === 1 && Array.isArray(arr7[0])) return arr7[0];
36158
+ if (arr7.length > 1 && Array.isArray(arr7[0])) {
36159
+ if (arr7.every((el) => Array.isArray(el) && el.length === 1))
36160
+ return flatten4(arr7);
36161
36161
  }
36162
- return arr6;
36162
+ return arr7;
36163
36163
  }
36164
36164
  function _2d(x) {
36165
36165
  return x.length === 2 && isNumeric2(x[0]) && isNumeric2(x[1]);
@@ -36299,9 +36299,9 @@ var createIntersect = /* @__PURE__ */ factory(
36299
36299
 
36300
36300
  // src/statistics/mean.ts
36301
36301
  var WASM_MEAN_THRESHOLD = 100;
36302
- function isFlatNumberArray7(arr6) {
36303
- for (let i = 0; i < arr6.length; i++) {
36304
- if (typeof arr6[i] !== "number") {
36302
+ function isFlatNumberArray7(arr7) {
36303
+ for (let i = 0; i < arr7.length; i++) {
36304
+ if (typeof arr7[i] !== "number") {
36305
36305
  return false;
36306
36306
  }
36307
36307
  }
@@ -36354,19 +36354,19 @@ var createMean = /* @__PURE__ */ factory(
36354
36354
  }
36355
36355
  }
36356
36356
  let sum3;
36357
- let num = 0;
36357
+ let num2 = 0;
36358
36358
  deepForEach2(array, function(value) {
36359
36359
  try {
36360
36360
  sum3 = sum3 === void 0 ? value : add2(sum3, value);
36361
- num++;
36361
+ num2++;
36362
36362
  } catch (err) {
36363
36363
  throw improveErrorMessage(err, "mean", value);
36364
36364
  }
36365
36365
  });
36366
- if (num === 0) {
36366
+ if (num2 === 0) {
36367
36367
  throw new Error("Cannot calculate the mean of an empty array");
36368
36368
  }
36369
- return divide2(sum3, num);
36369
+ return divide2(sum3, num2);
36370
36370
  }
36371
36371
  }
36372
36372
  );
@@ -36381,12 +36381,12 @@ var createMedian = /* @__PURE__ */ factory(
36381
36381
  function _median(array) {
36382
36382
  try {
36383
36383
  const flat = flatten2(array.valueOf());
36384
- const num = flat.length;
36385
- if (num === 0) {
36384
+ const num2 = flat.length;
36385
+ if (num2 === 0) {
36386
36386
  throw new Error("Cannot calculate median of an empty array");
36387
36387
  }
36388
- if (num % 2 === 0) {
36389
- const mid = num / 2 - 1;
36388
+ if (num2 % 2 === 0) {
36389
+ const mid = num2 / 2 - 1;
36390
36390
  const right = partitionSelect2(flat, mid + 1);
36391
36391
  let left = flat[mid];
36392
36392
  for (let i = 0; i < mid; ++i) {
@@ -36396,7 +36396,7 @@ var createMedian = /* @__PURE__ */ factory(
36396
36396
  }
36397
36397
  return middle2(left, right);
36398
36398
  } else {
36399
- const m = partitionSelect2(flat, (num - 1) / 2);
36399
+ const m = partitionSelect2(flat, (num2 - 1) / 2);
36400
36400
  return middle(m);
36401
36401
  }
36402
36402
  } catch (err) {
@@ -36433,9 +36433,9 @@ var createMedian = /* @__PURE__ */ factory(
36433
36433
 
36434
36434
  // src/statistics/variance.ts
36435
36435
  var WASM_VARIANCE_THRESHOLD = 100;
36436
- function isFlatNumberArray8(arr6) {
36437
- for (let i = 0; i < arr6.length; i++) {
36438
- if (typeof arr6[i] !== "number") {
36436
+ function isFlatNumberArray8(arr7) {
36437
+ for (let i = 0; i < arr7.length; i++) {
36438
+ if (typeof arr7[i] !== "number") {
36439
36439
  return false;
36440
36440
  }
36441
36441
  }
@@ -36496,20 +36496,20 @@ var createVariance = /* @__PURE__ */ factory(
36496
36496
  }
36497
36497
  }
36498
36498
  let sum3;
36499
- let num = 0;
36499
+ let num2 = 0;
36500
36500
  deepForEach2(array, function(value) {
36501
36501
  try {
36502
36502
  sum3 = sum3 === void 0 ? value : add2(sum3, value);
36503
- num++;
36503
+ num2++;
36504
36504
  } catch (err) {
36505
36505
  throw improveErrorMessage(err, "variance", value);
36506
36506
  }
36507
36507
  });
36508
- if (num === 0) throw new Error("Cannot calculate variance of an empty array");
36509
- const mean5 = divide2(sum3, num);
36508
+ if (num2 === 0) throw new Error("Cannot calculate variance of an empty array");
36509
+ const mean6 = divide2(sum3, num2);
36510
36510
  sum3 = void 0;
36511
36511
  deepForEach2(array, function(value) {
36512
- const diff2 = subtract2(value, mean5);
36512
+ const diff2 = subtract2(value, mean6);
36513
36513
  sum3 = sum3 === void 0 ? multiply2(diff2, diff2) : add2(sum3, multiply2(diff2, diff2));
36514
36514
  });
36515
36515
  if (mathIsNaN(sum3)) {
@@ -36517,12 +36517,12 @@ var createVariance = /* @__PURE__ */ factory(
36517
36517
  }
36518
36518
  switch (normalization) {
36519
36519
  case "uncorrected":
36520
- return divide2(sum3, num);
36520
+ return divide2(sum3, num2);
36521
36521
  case "biased":
36522
- return divide2(sum3, num + 1);
36522
+ return divide2(sum3, num2 + 1);
36523
36523
  case "unbiased": {
36524
36524
  const zero = isBigNumber(sum3) ? sum3.mul(0) : 0;
36525
- return num === 1 ? zero : divide2(sum3, num - 1);
36525
+ return num2 === 1 ? zero : divide2(sum3, num2 - 1);
36526
36526
  }
36527
36527
  default:
36528
36528
  throw new Error(
@@ -36776,7 +36776,7 @@ var dependencies226 = ["typed", "add", "multiply", "Complex", "divide", "matrix"
36776
36776
  var createFreqz = /* @__PURE__ */ factory(
36777
36777
  name226,
36778
36778
  dependencies226,
36779
- ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex11, divide: divide2, matrix: matrix2 }) => {
36779
+ ({ typed: typed3, add: add2, multiply: multiply2, Complex: Complex12, divide: divide2, matrix: matrix2 }) => {
36780
36780
  return typed3(name226, {
36781
36781
  "Array, Array": function(b, a) {
36782
36782
  const w = createBins(512);
@@ -36845,7 +36845,7 @@ var createFreqz = /* @__PURE__ */ factory(
36845
36845
  );
36846
36846
  const h = [];
36847
36847
  for (let i = 0; i < w.length; i++) {
36848
- h.push(Complex11(hRealAlloc.array[i], hImagAlloc.array[i]));
36848
+ h.push(Complex12(hRealAlloc.array[i], hImagAlloc.array[i]));
36849
36849
  }
36850
36850
  return { h, w };
36851
36851
  } finally {
@@ -36864,29 +36864,29 @@ var createFreqz = /* @__PURE__ */ factory(
36864
36864
  if (wasmResult !== null) {
36865
36865
  return wasmResult;
36866
36866
  }
36867
- const num = [];
36867
+ const num2 = [];
36868
36868
  const den = [];
36869
36869
  for (let i = 0; i < w.length; i++) {
36870
- let sumNum = Complex11(0, 0);
36871
- let sumDen = Complex11(0, 0);
36870
+ let sumNum = Complex12(0, 0);
36871
+ let sumDen = Complex12(0, 0);
36872
36872
  for (let j = 0; j < b.length; j++) {
36873
36873
  sumNum = add2(
36874
36874
  sumNum,
36875
- multiply2(b[j], Complex11(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36875
+ multiply2(b[j], Complex12(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36876
36876
  );
36877
36877
  }
36878
36878
  for (let j = 0; j < a.length; j++) {
36879
36879
  sumDen = add2(
36880
36880
  sumDen,
36881
- multiply2(a[j], Complex11(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36881
+ multiply2(a[j], Complex12(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
36882
36882
  );
36883
36883
  }
36884
- num.push(sumNum);
36884
+ num2.push(sumNum);
36885
36885
  den.push(sumDen);
36886
36886
  }
36887
36887
  const h = [];
36888
- for (let i = 0; i < num.length; i++) {
36889
- h.push(divide2(num[i], den[i]));
36888
+ for (let i = 0; i < num2.length; i++) {
36889
+ h.push(divide2(num2[i], den[i]));
36890
36890
  }
36891
36891
  return { h, w };
36892
36892
  }
@@ -37868,22 +37868,22 @@ var createSolveODE = /* @__PURE__ */ factory(
37868
37868
  const stageAlloc = wasmLoader.allocateFloat64ArrayEmpty(numStages * dim);
37869
37869
  try {
37870
37870
  let readVec2 = function(alloc) {
37871
- const arr6 = new Float64Array(wasm.memory.buffer, alloc.ptr, dim);
37871
+ const arr7 = new Float64Array(wasm.memory.buffer, alloc.ptr, dim);
37872
37872
  const result = new Array(dim);
37873
37873
  for (let i = 0; i < dim; i++) {
37874
- result[i] = arr6[i];
37874
+ result[i] = arr7[i];
37875
37875
  }
37876
37876
  return result;
37877
37877
  }, writeVec2 = function(alloc, data) {
37878
- const arr6 = new Float64Array(wasm.memory.buffer, alloc.ptr, dim);
37878
+ const arr7 = new Float64Array(wasm.memory.buffer, alloc.ptr, dim);
37879
37879
  for (let i = 0; i < dim; i++) {
37880
- arr6[i] = data[i];
37880
+ arr7[i] = data[i];
37881
37881
  }
37882
37882
  }, writeStage2 = function(stageIdx, data) {
37883
37883
  const offset = stageIdx * dim;
37884
- const arr6 = new Float64Array(wasm.memory.buffer, stageAlloc.ptr, numStages * dim);
37884
+ const arr7 = new Float64Array(wasm.memory.buffer, stageAlloc.ptr, numStages * dim);
37885
37885
  for (let i = 0; i < dim; i++) {
37886
- arr6[offset + i] = data[i];
37886
+ arr7[offset + i] = data[i];
37887
37887
  }
37888
37888
  }, trimStepNum2 = function(tn, tfn, hn) {
37889
37889
  const next = tn + hn;
@@ -38179,7 +38179,7 @@ var createZeta = /* @__PURE__ */ factory(
38179
38179
  sin: sin2,
38180
38180
  subtract: subtract2,
38181
38181
  add: add2,
38182
- Complex: Complex11,
38182
+ Complex: Complex12,
38183
38183
  BigNumber: BigNumber9,
38184
38184
  pi
38185
38185
  }) => {
@@ -38215,16 +38215,16 @@ var createZeta = /* @__PURE__ */ factory(
38215
38215
  }
38216
38216
  function zetaComplex(s) {
38217
38217
  if (s.re === 0 && s.im === 0) {
38218
- return new Complex11(-0.5);
38218
+ return new Complex12(-0.5);
38219
38219
  }
38220
38220
  if (s.re === 1) {
38221
- return new Complex11(NaN, NaN);
38221
+ return new Complex12(NaN, NaN);
38222
38222
  }
38223
38223
  if (s.re === Infinity && s.im === 0) {
38224
- return new Complex11(1);
38224
+ return new Complex12(1);
38225
38225
  }
38226
38226
  if (s.im === Infinity || s.re === -Infinity) {
38227
- return new Complex11(NaN, NaN);
38227
+ return new Complex12(NaN, NaN);
38228
38228
  }
38229
38229
  return zeta2(
38230
38230
  s,
@@ -38327,12 +38327,12 @@ function createComplexEigs({
38327
38327
  matrixFromColumns: _matrixFromColumns,
38328
38328
  dot: dot3
38329
38329
  }) {
38330
- function complexEigs(arr6, N, prec, type, findVectors = true) {
38330
+ function complexEigs(arr7, N, prec, type, findVectors = true) {
38331
38331
  if (!findVectors && type === "number" && N * N >= WASM_EIGS_THRESHOLD) {
38332
38332
  const wasm = wasmLoader.getModule();
38333
38333
  if (wasm) {
38334
38334
  try {
38335
- const flat = flattenToFloat648(arr6, N, N);
38335
+ const flat = flattenToFloat648(arr7, N, N);
38336
38336
  const matrixAlloc = wasmLoader.allocateFloat64Array(flat);
38337
38337
  const eigenvaluesRealAlloc = wasmLoader.allocateFloat64ArrayEmpty(N);
38338
38338
  const eigenvaluesImagAlloc = wasmLoader.allocateFloat64ArrayEmpty(N);
@@ -38376,16 +38376,16 @@ function createComplexEigs({
38376
38376
  }
38377
38377
  }
38378
38378
  }
38379
- const R = balance(arr6, N, prec, type, findVectors);
38380
- reduceToHessenberg(arr6, N, prec, type, findVectors, R);
38381
- const { values, C } = iterateUntilTriangular(arr6, N, prec, type, findVectors);
38379
+ const R = balance(arr7, N, prec, type, findVectors);
38380
+ reduceToHessenberg(arr7, N, prec, type, findVectors, R);
38381
+ const { values, C } = iterateUntilTriangular(arr7, N, prec, type, findVectors);
38382
38382
  if (findVectors) {
38383
- const eigenvectors = findEigenvectors(arr6, N, C, R, values, prec, type);
38383
+ const eigenvectors = findEigenvectors(arr7, N, C, R, values, prec, type);
38384
38384
  return { values, eigenvectors };
38385
38385
  }
38386
38386
  return { values };
38387
38387
  }
38388
- function balance(arr6, N, _prec, type, findVectors) {
38388
+ function balance(arr7, N, _prec, type, findVectors) {
38389
38389
  const big = type === "BigNumber";
38390
38390
  const cplx = type === "Complex";
38391
38391
  const realzero = big ? bignumber2(0) : 0;
@@ -38405,8 +38405,8 @@ function createComplexEigs({
38405
38405
  let rowNorm = realzero;
38406
38406
  for (let j = 0; j < N; j++) {
38407
38407
  if (i === j) continue;
38408
- colNorm = addScalar2(colNorm, abs2(arr6[j][i]));
38409
- rowNorm = addScalar2(rowNorm, abs2(arr6[i][j]));
38408
+ colNorm = addScalar2(colNorm, abs2(arr7[j][i]));
38409
+ rowNorm = addScalar2(rowNorm, abs2(arr7[i][j]));
38410
38410
  }
38411
38411
  if (!equal2(colNorm, 0) && !equal2(rowNorm, 0)) {
38412
38412
  let f = realone;
@@ -38432,8 +38432,8 @@ function createComplexEigs({
38432
38432
  if (i === j) {
38433
38433
  continue;
38434
38434
  }
38435
- arr6[i][j] = multiplyScalar2(arr6[i][j], g);
38436
- arr6[j][i] = multiplyScalar2(arr6[j][i], f);
38435
+ arr7[i][j] = multiplyScalar2(arr7[i][j], g);
38436
+ arr7[j][i] = multiplyScalar2(arr7[j][i], f);
38437
38437
  }
38438
38438
  if (findVectors) {
38439
38439
  Rdiag[i] = multiplyScalar2(Rdiag[i], g);
@@ -38444,7 +38444,7 @@ function createComplexEigs({
38444
38444
  }
38445
38445
  return findVectors ? diag2(Rdiag) : null;
38446
38446
  }
38447
- function reduceToHessenberg(arr6, N, prec, type, findVectors, R) {
38447
+ function reduceToHessenberg(arr7, N, prec, type, findVectors, R) {
38448
38448
  const big = type === "BigNumber";
38449
38449
  const cplx = type === "Complex";
38450
38450
  const zero = big ? bignumber2(0) : cplx ? complex2(0) : 0;
@@ -38455,7 +38455,7 @@ function createComplexEigs({
38455
38455
  let maxIndex = 0;
38456
38456
  let max2 = zero;
38457
38457
  for (let j = i + 1; j < N; j++) {
38458
- const el = arr6[j][i];
38458
+ const el = arr7[j][i];
38459
38459
  if (smaller2(abs2(max2), abs2(el))) {
38460
38460
  max2 = el;
38461
38461
  maxIndex = j;
@@ -38465,13 +38465,13 @@ function createComplexEigs({
38465
38465
  continue;
38466
38466
  }
38467
38467
  if (maxIndex !== i + 1) {
38468
- const tmp1 = arr6[maxIndex];
38469
- arr6[maxIndex] = arr6[i + 1];
38470
- arr6[i + 1] = tmp1;
38468
+ const tmp1 = arr7[maxIndex];
38469
+ arr7[maxIndex] = arr7[i + 1];
38470
+ arr7[i + 1] = tmp1;
38471
38471
  for (let j = 0; j < N; j++) {
38472
- const tmp2 = arr6[j][maxIndex];
38473
- arr6[j][maxIndex] = arr6[j][i + 1];
38474
- arr6[j][i + 1] = tmp2;
38472
+ const tmp2 = arr7[j][maxIndex];
38473
+ arr7[j][maxIndex] = arr7[j][i + 1];
38474
+ arr7[j][i + 1] = tmp2;
38475
38475
  }
38476
38476
  if (findVectors) {
38477
38477
  const tmp3 = R[maxIndex];
@@ -38480,15 +38480,15 @@ function createComplexEigs({
38480
38480
  }
38481
38481
  }
38482
38482
  for (let j = i + 2; j < N; j++) {
38483
- const n = divideScalar2(arr6[j][i], max2);
38483
+ const n = divideScalar2(arr7[j][i], max2);
38484
38484
  if (n === 0) {
38485
38485
  continue;
38486
38486
  }
38487
38487
  for (let k = 0; k < N; k++) {
38488
- arr6[j][k] = subtract2(arr6[j][k], multiplyScalar2(n, arr6[i + 1][k]));
38488
+ arr7[j][k] = subtract2(arr7[j][k], multiplyScalar2(n, arr7[i + 1][k]));
38489
38489
  }
38490
38490
  for (let k = 0; k < N; k++) {
38491
- arr6[k][i + 1] = addScalar2(arr6[k][i + 1], multiplyScalar2(n, arr6[k][j]));
38491
+ arr7[k][i + 1] = addScalar2(arr7[k][i + 1], multiplyScalar2(n, arr7[k][j]));
38492
38492
  }
38493
38493
  if (findVectors) {
38494
38494
  for (let k = 0; k < N; k++) {
@@ -38505,7 +38505,7 @@ function createComplexEigs({
38505
38505
  if (big) {
38506
38506
  prec = bignumber2(prec);
38507
38507
  }
38508
- let arr6 = clone(A);
38508
+ let arr7 = clone(A);
38509
38509
  const lambdas = [];
38510
38510
  let n = N;
38511
38511
  const Sdiag = [];
@@ -38514,21 +38514,21 @@ function createComplexEigs({
38514
38514
  let lastConvergenceBefore = 0;
38515
38515
  while (lastConvergenceBefore <= 100) {
38516
38516
  lastConvergenceBefore += 1;
38517
- const k = arr6[n - 1][n - 1];
38517
+ const k = arr7[n - 1][n - 1];
38518
38518
  for (let i = 0; i < n; i++) {
38519
- arr6[i][i] = subtract2(arr6[i][i], k);
38519
+ arr7[i][i] = subtract2(arr7[i][i], k);
38520
38520
  }
38521
- const { Q: Q2, R } = qr2(arr6);
38522
- arr6 = multiply2(R, Q2);
38521
+ const { Q: Q2, R } = qr2(arr7);
38522
+ arr7 = multiply2(R, Q2);
38523
38523
  for (let i = 0; i < n; i++) {
38524
- arr6[i][i] = addScalar2(arr6[i][i], k);
38524
+ arr7[i][i] = addScalar2(arr7[i][i], k);
38525
38525
  }
38526
38526
  if (findVectors) {
38527
38527
  Qpartial = multiply2(Qpartial, Q2);
38528
38528
  }
38529
- if (n === 1 || smaller2(abs2(arr6[n - 1][n - 2]), prec)) {
38529
+ if (n === 1 || smaller2(abs2(arr7[n - 1][n - 2]), prec)) {
38530
38530
  lastConvergenceBefore = 0;
38531
- lambdas.push(arr6[n - 1][n - 1]);
38531
+ lambdas.push(arr7[n - 1][n - 1]);
38532
38532
  if (findVectors) {
38533
38533
  Sdiag.unshift([[1]]);
38534
38534
  inflateMatrix(Qpartial, N);
@@ -38538,26 +38538,26 @@ function createComplexEigs({
38538
38538
  }
38539
38539
  }
38540
38540
  n -= 1;
38541
- arr6.pop();
38541
+ arr7.pop();
38542
38542
  for (let i = 0; i < n; i++) {
38543
- arr6[i].pop();
38543
+ arr7[i].pop();
38544
38544
  }
38545
- } else if (n === 2 || smaller2(abs2(arr6[n - 2][n - 3]), prec)) {
38545
+ } else if (n === 2 || smaller2(abs2(arr7[n - 2][n - 3]), prec)) {
38546
38546
  lastConvergenceBefore = 0;
38547
38547
  const ll = eigenvalues2x2(
38548
- arr6[n - 2][n - 2],
38549
- arr6[n - 2][n - 1],
38550
- arr6[n - 1][n - 2],
38551
- arr6[n - 1][n - 1]
38548
+ arr7[n - 2][n - 2],
38549
+ arr7[n - 2][n - 1],
38550
+ arr7[n - 1][n - 2],
38551
+ arr7[n - 1][n - 1]
38552
38552
  );
38553
38553
  lambdas.push(...ll);
38554
38554
  if (findVectors) {
38555
38555
  Sdiag.unshift(
38556
38556
  jordanBase2x2(
38557
- arr6[n - 2][n - 2],
38558
- arr6[n - 2][n - 1],
38559
- arr6[n - 1][n - 2],
38560
- arr6[n - 1][n - 1],
38557
+ arr7[n - 2][n - 2],
38558
+ arr7[n - 2][n - 1],
38559
+ arr7[n - 1][n - 2],
38560
+ arr7[n - 1][n - 1],
38561
38561
  ll[0],
38562
38562
  ll[1],
38563
38563
  prec,
@@ -38571,11 +38571,11 @@ function createComplexEigs({
38571
38571
  }
38572
38572
  }
38573
38573
  n -= 2;
38574
- arr6.pop();
38575
- arr6.pop();
38574
+ arr7.pop();
38575
+ arr7.pop();
38576
38576
  for (let i = 0; i < n; i++) {
38577
- arr6[i].pop();
38578
- arr6[i].pop();
38577
+ arr7[i].pop();
38578
+ arr7[i].pop();
38579
38579
  }
38580
38580
  }
38581
38581
  if (n === 0) {
@@ -38680,23 +38680,23 @@ function createComplexEigs({
38680
38680
  ];
38681
38681
  }
38682
38682
  }
38683
- function inflateMatrix(arr6, N) {
38684
- for (let i = 0; i < arr6.length; i++) {
38685
- arr6[i].push(...Array(N - arr6[i].length).fill(0));
38683
+ function inflateMatrix(arr7, N) {
38684
+ for (let i = 0; i < arr7.length; i++) {
38685
+ arr7[i].push(...Array(N - arr7[i].length).fill(0));
38686
38686
  }
38687
- for (let i = arr6.length; i < N; i++) {
38688
- arr6.push(Array(N).fill(0));
38689
- arr6[i][i] = 1;
38687
+ for (let i = arr7.length; i < N; i++) {
38688
+ arr7.push(Array(N).fill(0));
38689
+ arr7[i][i] = 1;
38690
38690
  }
38691
- return arr6;
38691
+ return arr7;
38692
38692
  }
38693
- function blockDiag(arr6, N) {
38693
+ function blockDiag(arr7, N) {
38694
38694
  const M = [];
38695
38695
  for (let i = 0; i < N; i++) {
38696
38696
  M[i] = Array(N).fill(0);
38697
38697
  }
38698
38698
  let I2 = 0;
38699
- for (const sub of arr6) {
38699
+ for (const sub of arr7) {
38700
38700
  const n = sub.length;
38701
38701
  for (let i = 0; i < n; i++) {
38702
38702
  for (let j = 0; j < n; j++) {
@@ -38707,9 +38707,9 @@ function createComplexEigs({
38707
38707
  }
38708
38708
  return M;
38709
38709
  }
38710
- function indexOf(arr6, el, fn) {
38711
- for (let i = 0; i < arr6.length; i++) {
38712
- if (fn(arr6[i], el)) {
38710
+ function indexOf(arr7, el, fn) {
38711
+ for (let i = 0; i < arr7.length; i++) {
38712
+ if (fn(arr7[i], el)) {
38713
38713
  return i;
38714
38714
  }
38715
38715
  }
@@ -38822,12 +38822,12 @@ function createRealSymmetric({
38822
38822
  if (typeof a === "number" && typeof b === "number") return a <= b;
38823
38823
  return a.lte(b);
38824
38824
  }
38825
- function main(arr6, _N, prec = config.relTol, type, computeVectors) {
38825
+ function main(arr7, _N, prec = config.relTol, type, computeVectors) {
38826
38826
  if (type === "number") {
38827
- return diag2(arr6, prec, computeVectors);
38827
+ return diag2(arr7, prec, computeVectors);
38828
38828
  }
38829
38829
  if (type === "BigNumber") {
38830
- return diagBig(arr6, prec, computeVectors);
38830
+ return diagBig(arr7, prec, computeVectors);
38831
38831
  }
38832
38832
  throw TypeError("Unsupported data type: " + type);
38833
38833
  }
@@ -39289,18 +39289,18 @@ var createEigs = /* @__PURE__ */ factory(
39289
39289
  return result;
39290
39290
  }
39291
39291
  function computeValuesAndVectors(mat, prec, computeVectors) {
39292
- const arr6 = mat.toArray();
39292
+ const arr7 = mat.toArray();
39293
39293
  const asize = mat.size();
39294
39294
  if (asize.length !== 2 || asize[0] !== asize[1]) {
39295
39295
  throw new RangeError(`Matrix must be square (size: ${format3(asize, {})})`);
39296
39296
  }
39297
39297
  const N = asize[0];
39298
- if (isReal(arr6, N, prec)) {
39299
- coerceReal(arr6, N);
39300
- if (isSymmetric(arr6, N, prec)) {
39301
- const type2 = coerceTypes(mat, arr6, N);
39298
+ if (isReal(arr7, N, prec)) {
39299
+ coerceReal(arr7, N);
39300
+ if (isSymmetric(arr7, N, prec)) {
39301
+ const type2 = coerceTypes(mat, arr7, N);
39302
39302
  return doRealSymmetric(
39303
- arr6,
39303
+ arr7,
39304
39304
  N,
39305
39305
  prec,
39306
39306
  type2,
@@ -39308,37 +39308,37 @@ var createEigs = /* @__PURE__ */ factory(
39308
39308
  );
39309
39309
  }
39310
39310
  }
39311
- const type = coerceTypes(mat, arr6, N);
39312
- return doComplexEigs(arr6, N, prec, type, computeVectors);
39311
+ const type = coerceTypes(mat, arr7, N);
39312
+ return doComplexEigs(arr7, N, prec, type, computeVectors);
39313
39313
  }
39314
- function isSymmetric(arr6, N, prec) {
39314
+ function isSymmetric(arr7, N, prec) {
39315
39315
  for (let i = 0; i < N; i++) {
39316
39316
  for (let j = i; j < N; j++) {
39317
- if (larger2(bignumber2(abs2(subtract2(arr6[i][j], arr6[j][i]))), prec)) {
39317
+ if (larger2(bignumber2(abs2(subtract2(arr7[i][j], arr7[j][i]))), prec)) {
39318
39318
  return false;
39319
39319
  }
39320
39320
  }
39321
39321
  }
39322
39322
  return true;
39323
39323
  }
39324
- function isReal(arr6, N, prec) {
39324
+ function isReal(arr7, N, prec) {
39325
39325
  for (let i = 0; i < N; i++) {
39326
39326
  for (let j = 0; j < N; j++) {
39327
- if (larger2(bignumber2(abs2(im3(arr6[i][j]))), prec)) {
39327
+ if (larger2(bignumber2(abs2(im3(arr7[i][j]))), prec)) {
39328
39328
  return false;
39329
39329
  }
39330
39330
  }
39331
39331
  }
39332
39332
  return true;
39333
39333
  }
39334
- function coerceReal(arr6, N) {
39334
+ function coerceReal(arr7, N) {
39335
39335
  for (let i = 0; i < N; i++) {
39336
39336
  for (let j = 0; j < N; j++) {
39337
- arr6[i][j] = re3(arr6[i][j]);
39337
+ arr7[i][j] = re3(arr7[i][j]);
39338
39338
  }
39339
39339
  }
39340
39340
  }
39341
- function coerceTypes(mat, arr6, N) {
39341
+ function coerceTypes(mat, arr7, N) {
39342
39342
  const type = mat.datatype();
39343
39343
  if (type === "number" || type === "BigNumber" || type === "Complex") {
39344
39344
  return type;
@@ -39348,7 +39348,7 @@ var createEigs = /* @__PURE__ */ factory(
39348
39348
  let hasComplex = false;
39349
39349
  for (let i = 0; i < N; i++) {
39350
39350
  for (let j = 0; j < N; j++) {
39351
- const el = arr6[i][j];
39351
+ const el = arr7[i][j];
39352
39352
  if (isNumber(el) || isFraction(el)) {
39353
39353
  hasNumber = true;
39354
39354
  } else if (isBigNumber(el)) {
@@ -39366,7 +39366,7 @@ var createEigs = /* @__PURE__ */ factory(
39366
39366
  if (hasComplex) {
39367
39367
  for (let i = 0; i < N; i++) {
39368
39368
  for (let j = 0; j < N; j++) {
39369
- arr6[i][j] = complex2(arr6[i][j]);
39369
+ arr7[i][j] = complex2(arr7[i][j]);
39370
39370
  }
39371
39371
  }
39372
39372
  return "Complex";
@@ -39374,7 +39374,7 @@ var createEigs = /* @__PURE__ */ factory(
39374
39374
  if (hasBig) {
39375
39375
  for (let i = 0; i < N; i++) {
39376
39376
  for (let j = 0; j < N; j++) {
39377
- arr6[i][j] = bignumber2(arr6[i][j]);
39377
+ arr7[i][j] = bignumber2(arr7[i][j]);
39378
39378
  }
39379
39379
  }
39380
39380
  return "BigNumber";
@@ -39382,7 +39382,7 @@ var createEigs = /* @__PURE__ */ factory(
39382
39382
  if (hasNumber) {
39383
39383
  for (let i = 0; i < N; i++) {
39384
39384
  for (let j = 0; j < N; j++) {
39385
- arr6[i][j] = number2(arr6[i][j]);
39385
+ arr7[i][j] = number2(arr7[i][j]);
39386
39386
  }
39387
39387
  }
39388
39388
  return "number";
@@ -39600,9 +39600,9 @@ var createLusolve = /* @__PURE__ */ factory(
39600
39600
 
39601
39601
  // src/statistics/corr.ts
39602
39602
  var WASM_CORR_THRESHOLD = 200;
39603
- function isPlainNumberArray(arr6) {
39604
- for (let i = 0; i < arr6.length; i++) {
39605
- if (typeof arr6[i] !== "number") {
39603
+ function isPlainNumberArray(arr7) {
39604
+ for (let i = 0; i < arr7.length; i++) {
39605
+ if (typeof arr7[i] !== "number") {
39606
39606
  return false;
39607
39607
  }
39608
39608
  }
@@ -39697,9 +39697,9 @@ var createCorr = /* @__PURE__ */ factory(
39697
39697
 
39698
39698
  // src/statistics/mad.ts
39699
39699
  var WASM_MAD_THRESHOLD = 500;
39700
- function isPlainNumberArray2(arr6) {
39701
- for (let i = 0; i < arr6.length; i++) {
39702
- if (typeof arr6[i] !== "number") {
39700
+ function isPlainNumberArray2(arr7) {
39701
+ for (let i = 0; i < arr7.length; i++) {
39702
+ if (typeof arr7[i] !== "number") {
39703
39703
  return false;
39704
39704
  }
39705
39705
  }
@@ -39757,9 +39757,9 @@ var createMad = /* @__PURE__ */ factory(
39757
39757
 
39758
39758
  // src/statistics/std.ts
39759
39759
  var WASM_STD_THRESHOLD = 100;
39760
- function isFlatNumberArray9(arr6) {
39761
- for (let i = 0; i < arr6.length; i++) {
39762
- if (typeof arr6[i] !== "number") {
39760
+ function isFlatNumberArray9(arr7) {
39761
+ for (let i = 0; i < arr7.length; i++) {
39762
+ if (typeof arr7[i] !== "number") {
39763
39763
  return false;
39764
39764
  }
39765
39765
  }
@@ -39892,7 +39892,7 @@ var createSimplify = /* @__PURE__ */ factory(
39892
39892
  dependencies245,
39893
39893
  ({
39894
39894
  typed: typed3,
39895
- parse: parse2,
39895
+ parse: parse3,
39896
39896
  equal: equal2,
39897
39897
  resolve: resolve2,
39898
39898
  simplifyConstant: simplifyConstant2,
@@ -40202,8 +40202,8 @@ var createSimplify = /* @__PURE__ */ factory(
40202
40202
  newRule.l = ruleObject.l;
40203
40203
  newRule.r = ruleObject.r;
40204
40204
  }
40205
- newRule.l = removeParens(parse2(newRule.l));
40206
- newRule.r = removeParens(parse2(newRule.r));
40205
+ newRule.l = removeParens(parse3(newRule.l));
40206
+ newRule.r = removeParens(parse3(newRule.r));
40207
40207
  if ("imposeContext" in ruleObject && ruleObject.imposeContext) {
40208
40208
  newRule.imposeContext = ruleObject.imposeContext;
40209
40209
  }
@@ -40214,7 +40214,7 @@ var createSimplify = /* @__PURE__ */ factory(
40214
40214
  newRule.assuming = ruleObject.assuming;
40215
40215
  }
40216
40216
  if (ruleObject.evaluate) {
40217
- newRule.evaluate = parse2(ruleObject.evaluate);
40217
+ newRule.evaluate = parse3(ruleObject.evaluate);
40218
40218
  }
40219
40219
  if (isAssociative(newRule.l, context)) {
40220
40220
  const nonCommutative = !isCommutative(newRule.l, context);
@@ -40699,7 +40699,7 @@ var createDerivative = /* @__PURE__ */ factory(
40699
40699
  ({
40700
40700
  typed: typed3,
40701
40701
  config,
40702
- parse: parse2,
40702
+ parse: parse3,
40703
40703
  simplify: simplify2,
40704
40704
  equal: equal2,
40705
40705
  isZero: isZero2,
@@ -40726,7 +40726,7 @@ var createDerivative = /* @__PURE__ */ factory(
40726
40726
  return options.simplify ? simplify2(res) : res;
40727
40727
  }
40728
40728
  function parseIdentifier(string2) {
40729
- const symbol = parse2(string2);
40729
+ const symbol = parse3(string2);
40730
40730
  if (!symbol.isSymbolNode) {
40731
40731
  throw new TypeError(
40732
40732
  `Invalid variable. Cannot parse ${JSON.stringify(string2)} into a variable in function derivative`
@@ -40757,14 +40757,14 @@ var createDerivative = /* @__PURE__ */ factory(
40757
40757
  const _derivTex = typed3("_derivTex", {
40758
40758
  "Node, SymbolNode": function(expr, x) {
40759
40759
  if (isConstantNode(expr) && typeOf(expr.value) === "string") {
40760
- return _derivTex(parse2(expr.value).toString(), x.toString(), 1);
40760
+ return _derivTex(parse3(expr.value).toString(), x.toString(), 1);
40761
40761
  } else {
40762
40762
  return _derivTex(expr.toTex(), x.toString(), 1);
40763
40763
  }
40764
40764
  },
40765
40765
  "Node, ConstantNode": function(expr, x) {
40766
40766
  if (typeOf(x.value) === "string") {
40767
- return _derivTex(expr, parse2(x.value));
40767
+ return _derivTex(expr, parse3(x.value));
40768
40768
  } else {
40769
40769
  throw new Error("The second parameter to 'derivative' is a non-string constant");
40770
40770
  }
@@ -40789,40 +40789,40 @@ var createDerivative = /* @__PURE__ */ factory(
40789
40789
  "function, SymbolNode, string": function(_isConst2, node, varName) {
40790
40790
  return node.name !== varName;
40791
40791
  },
40792
- "function, ParenthesisNode, string": function(isConst, node, varName) {
40793
- return isConst(node.content, varName);
40792
+ "function, ParenthesisNode, string": function(isConst2, node, varName) {
40793
+ return isConst2(node.content, varName);
40794
40794
  },
40795
- "function, FunctionAssignmentNode, string": function(isConst, node, varName) {
40795
+ "function, FunctionAssignmentNode, string": function(isConst2, node, varName) {
40796
40796
  if (!node.params.includes(varName)) {
40797
40797
  return true;
40798
40798
  }
40799
- return isConst(node.expr, varName);
40799
+ return isConst2(node.expr, varName);
40800
40800
  },
40801
- "function, FunctionNode | OperatorNode, string": function(isConst, node, varName) {
40802
- return node.args.every((arg3) => isConst(arg3, varName));
40801
+ "function, FunctionNode | OperatorNode, string": function(isConst2, node, varName) {
40802
+ return node.args.every((arg3) => isConst2(arg3, varName));
40803
40803
  }
40804
40804
  });
40805
40805
  const _derivative = typed3("_derivative", {
40806
40806
  "ConstantNode, function": function() {
40807
40807
  return createConstantNode2(0);
40808
40808
  },
40809
- "SymbolNode, function": function(node, isConst) {
40810
- if (isConst(node)) {
40809
+ "SymbolNode, function": function(node, isConst2) {
40810
+ if (isConst2(node)) {
40811
40811
  return createConstantNode2(0);
40812
40812
  }
40813
40813
  return createConstantNode2(1);
40814
40814
  },
40815
- "ParenthesisNode, function": function(node, isConst) {
40816
- return new ParenthesisNode(_derivative(node.content, isConst));
40815
+ "ParenthesisNode, function": function(node, isConst2) {
40816
+ return new ParenthesisNode(_derivative(node.content, isConst2));
40817
40817
  },
40818
- "FunctionAssignmentNode, function": function(node, isConst) {
40819
- if (isConst(node)) {
40818
+ "FunctionAssignmentNode, function": function(node, isConst2) {
40819
+ if (isConst2(node)) {
40820
40820
  return createConstantNode2(0);
40821
40821
  }
40822
- return _derivative(node.expr, isConst);
40822
+ return _derivative(node.expr, isConst2);
40823
40823
  },
40824
- "FunctionNode, function": function(node, isConst) {
40825
- if (isConst(node)) {
40824
+ "FunctionNode, function": function(node, isConst2) {
40825
+ if (isConst2(node)) {
40826
40826
  return createConstantNode2(0);
40827
40827
  }
40828
40828
  const arg0 = node.args[0];
@@ -40851,7 +40851,7 @@ var createDerivative = /* @__PURE__ */ factory(
40851
40851
  ]);
40852
40852
  } else if (node.args.length === 2) {
40853
40853
  arg1 = new OperatorNode("/", "divide", [createConstantNode2(1), node.args[1]]);
40854
- return _derivative(new OperatorNode("^", "pow", [arg0, arg1]), isConst);
40854
+ return _derivative(new OperatorNode("^", "pow", [arg0, arg1]), isConst2);
40855
40855
  }
40856
40856
  break;
40857
40857
  case "log10":
@@ -40862,7 +40862,7 @@ var createDerivative = /* @__PURE__ */ factory(
40862
40862
  if (!arg1 && node.args.length === 1) {
40863
40863
  funcDerivative = arg0.clone();
40864
40864
  div = true;
40865
- } else if (node.args.length === 1 && arg1 || node.args.length === 2 && isConst(node.args[1])) {
40865
+ } else if (node.args.length === 1 && arg1 || node.args.length === 2 && isConst2(node.args[1])) {
40866
40866
  funcDerivative = new OperatorNode("*", "multiply", [
40867
40867
  arg0.clone(),
40868
40868
  new FunctionNode("log", [arg1 || node.args[1]])
@@ -40874,13 +40874,13 @@ var createDerivative = /* @__PURE__ */ factory(
40874
40874
  new FunctionNode("log", [arg0]),
40875
40875
  new FunctionNode("log", [node.args[1]])
40876
40876
  ]),
40877
- isConst
40877
+ isConst2
40878
40878
  );
40879
40879
  }
40880
40880
  break;
40881
40881
  case "pow":
40882
40882
  if (node.args.length === 2) {
40883
- return _derivative(new OperatorNode("^", "pow", [arg0, node.args[1]]), isConst);
40883
+ return _derivative(new OperatorNode("^", "pow", [arg0, node.args[1]]), isConst2);
40884
40884
  }
40885
40885
  break;
40886
40886
  case "exp":
@@ -41093,14 +41093,14 @@ var createDerivative = /* @__PURE__ */ factory(
41093
41093
  op = "*";
41094
41094
  func = "multiply";
41095
41095
  }
41096
- let chainDerivative = _derivative(arg0, isConst);
41096
+ let chainDerivative = _derivative(arg0, isConst2);
41097
41097
  if (negative) {
41098
41098
  chainDerivative = new OperatorNode("-", "unaryMinus", [chainDerivative]);
41099
41099
  }
41100
41100
  return new OperatorNode(op, func, [chainDerivative, funcDerivative]);
41101
41101
  },
41102
- "OperatorNode, function": function(node, isConst) {
41103
- if (isConst(node)) {
41102
+ "OperatorNode, function": function(node, isConst2) {
41103
+ if (isConst2(node)) {
41104
41104
  return createConstantNode2(0);
41105
41105
  }
41106
41106
  if (node.op === "+") {
@@ -41108,33 +41108,33 @@ var createDerivative = /* @__PURE__ */ factory(
41108
41108
  node.op,
41109
41109
  node.fn,
41110
41110
  node.args.map(function(arg3) {
41111
- return _derivative(arg3, isConst);
41111
+ return _derivative(arg3, isConst2);
41112
41112
  })
41113
41113
  );
41114
41114
  }
41115
41115
  if (node.op === "-") {
41116
41116
  if (node.isUnary()) {
41117
41117
  return new OperatorNode(node.op, node.fn, [
41118
- _derivative(node.args[0], isConst)
41118
+ _derivative(node.args[0], isConst2)
41119
41119
  ]);
41120
41120
  }
41121
41121
  if (node.isBinary()) {
41122
41122
  return new OperatorNode(node.op, node.fn, [
41123
- _derivative(node.args[0], isConst),
41124
- _derivative(node.args[1], isConst)
41123
+ _derivative(node.args[0], isConst2),
41124
+ _derivative(node.args[1], isConst2)
41125
41125
  ]);
41126
41126
  }
41127
41127
  }
41128
41128
  if (node.op === "*") {
41129
41129
  const constantTerms = node.args.filter(function(arg3) {
41130
- return isConst(arg3);
41130
+ return isConst2(arg3);
41131
41131
  });
41132
41132
  if (constantTerms.length > 0) {
41133
41133
  const nonConstantTerms = node.args.filter(function(arg3) {
41134
- return !isConst(arg3);
41134
+ return !isConst2(arg3);
41135
41135
  });
41136
41136
  const nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode("*", "multiply", nonConstantTerms);
41137
- const newArgs = constantTerms.concat(_derivative(nonConstantNode, isConst));
41137
+ const newArgs = constantTerms.concat(_derivative(nonConstantNode, isConst2));
41138
41138
  return new OperatorNode("*", "multiply", newArgs);
41139
41139
  }
41140
41140
  return new OperatorNode(
@@ -41145,7 +41145,7 @@ var createDerivative = /* @__PURE__ */ factory(
41145
41145
  "*",
41146
41146
  "multiply",
41147
41147
  node.args.map(function(argInner) {
41148
- return argInner === argOuter ? _derivative(argInner, isConst) : argInner.clone();
41148
+ return argInner === argOuter ? _derivative(argInner, isConst2) : argInner.clone();
41149
41149
  })
41150
41150
  );
41151
41151
  })
@@ -41154,22 +41154,22 @@ var createDerivative = /* @__PURE__ */ factory(
41154
41154
  if (node.op === "/" && node.isBinary()) {
41155
41155
  const arg0 = node.args[0];
41156
41156
  const arg1 = node.args[1];
41157
- if (isConst(arg1)) {
41158
- return new OperatorNode("/", "divide", [_derivative(arg0, isConst), arg1]);
41157
+ if (isConst2(arg1)) {
41158
+ return new OperatorNode("/", "divide", [_derivative(arg0, isConst2), arg1]);
41159
41159
  }
41160
- if (isConst(arg0)) {
41160
+ if (isConst2(arg0)) {
41161
41161
  return new OperatorNode("*", "multiply", [
41162
41162
  new OperatorNode("-", "unaryMinus", [arg0]),
41163
41163
  new OperatorNode("/", "divide", [
41164
- _derivative(arg1, isConst),
41164
+ _derivative(arg1, isConst2),
41165
41165
  new OperatorNode("^", "pow", [arg1.clone(), createConstantNode2(2)])
41166
41166
  ])
41167
41167
  ]);
41168
41168
  }
41169
41169
  return new OperatorNode("/", "divide", [
41170
41170
  new OperatorNode("-", "subtract", [
41171
- new OperatorNode("*", "multiply", [_derivative(arg0, isConst), arg1.clone()]),
41172
- new OperatorNode("*", "multiply", [arg0.clone(), _derivative(arg1, isConst)])
41171
+ new OperatorNode("*", "multiply", [_derivative(arg0, isConst2), arg1.clone()]),
41172
+ new OperatorNode("*", "multiply", [arg0.clone(), _derivative(arg1, isConst2)])
41173
41173
  ]),
41174
41174
  new OperatorNode("^", "pow", [arg1.clone(), createConstantNode2(2)])
41175
41175
  ]);
@@ -41177,7 +41177,7 @@ var createDerivative = /* @__PURE__ */ factory(
41177
41177
  if (node.op === "^" && node.isBinary()) {
41178
41178
  const arg0 = node.args[0];
41179
41179
  const arg1 = node.args[1];
41180
- if (isConst(arg0)) {
41180
+ if (isConst2(arg0)) {
41181
41181
  if (isConstantNode(arg0) && (isZero2(arg0.value) || equal2(arg0.value, 1))) {
41182
41182
  return createConstantNode2(0);
41183
41183
  }
@@ -41185,17 +41185,17 @@ var createDerivative = /* @__PURE__ */ factory(
41185
41185
  node,
41186
41186
  new OperatorNode("*", "multiply", [
41187
41187
  new FunctionNode("log", [arg0.clone()]),
41188
- _derivative(arg1.clone(), isConst)
41188
+ _derivative(arg1.clone(), isConst2)
41189
41189
  ])
41190
41190
  ]);
41191
41191
  }
41192
- if (isConst(arg1)) {
41192
+ if (isConst2(arg1)) {
41193
41193
  if (isConstantNode(arg1)) {
41194
41194
  if (isZero2(arg1.value)) {
41195
41195
  return createConstantNode2(0);
41196
41196
  }
41197
41197
  if (equal2(arg1.value, 1)) {
41198
- return _derivative(arg0, isConst);
41198
+ return _derivative(arg0, isConst2);
41199
41199
  }
41200
41200
  }
41201
41201
  const powMinusOne = new OperatorNode("^", "pow", [
@@ -41204,18 +41204,18 @@ var createDerivative = /* @__PURE__ */ factory(
41204
41204
  ]);
41205
41205
  return new OperatorNode("*", "multiply", [
41206
41206
  arg1.clone(),
41207
- new OperatorNode("*", "multiply", [_derivative(arg0, isConst), powMinusOne])
41207
+ new OperatorNode("*", "multiply", [_derivative(arg0, isConst2), powMinusOne])
41208
41208
  ]);
41209
41209
  }
41210
41210
  return new OperatorNode("*", "multiply", [
41211
41211
  new OperatorNode("^", "pow", [arg0.clone(), arg1.clone()]),
41212
41212
  new OperatorNode("+", "add", [
41213
41213
  new OperatorNode("*", "multiply", [
41214
- _derivative(arg0, isConst),
41214
+ _derivative(arg0, isConst2),
41215
41215
  new OperatorNode("/", "divide", [arg1.clone(), arg0.clone()])
41216
41216
  ]),
41217
41217
  new OperatorNode("*", "multiply", [
41218
- _derivative(arg1, isConst),
41218
+ _derivative(arg1, isConst2),
41219
41219
  new FunctionNode("log", [arg0.clone()])
41220
41220
  ])
41221
41221
  ])
@@ -41298,12 +41298,12 @@ var createNorm = /* @__PURE__ */ factory(
41298
41298
  if (size2.length !== 1 || size2[0] < WASM_NORM_THRESHOLD) return null;
41299
41299
  const wasm = wasmLoader.getModule();
41300
41300
  if (!wasm) return null;
41301
- const arr6 = x.toArray();
41302
- const n = arr6.length;
41301
+ const arr7 = x.toArray();
41302
+ const n = arr7.length;
41303
41303
  const data = new Float64Array(n);
41304
41304
  for (let i = 0; i < n; i++) {
41305
- if (typeof arr6[i] !== "number") return null;
41306
- data[i] = arr6[i];
41305
+ if (typeof arr7[i] !== "number") return null;
41306
+ data[i] = arr7[i];
41307
41307
  }
41308
41308
  const alloc = wasmLoader.allocateFloat64Array(data);
41309
41309
  try {
@@ -43675,13 +43675,13 @@ var inverseLaplaceTable = [
43675
43675
  {
43676
43676
  pattern: /^([\d.]+)\/\(__VAR__\^2 \+ ([\d.]+)\)$/,
43677
43677
  transform: (m, _s, t) => {
43678
- const num = parseFloat(m[1]);
43678
+ const num2 = parseFloat(m[1]);
43679
43679
  const den = parseFloat(m[2]);
43680
43680
  const w = Math.sqrt(den);
43681
- if (Math.abs(num - w) < 1e-10) {
43681
+ if (Math.abs(num2 - w) < 1e-10) {
43682
43682
  return `sin(${formatCoeff(w)}*${t})`;
43683
43683
  }
43684
- return `${formatCoeff(num / w)}*sin(${formatCoeff(w)}*${t})`;
43684
+ return `${formatCoeff(num2 / w)}*sin(${formatCoeff(w)}*${t})`;
43685
43685
  }
43686
43686
  }
43687
43687
  ];
@@ -44129,10 +44129,10 @@ function minimalPolynomial(expr, varName) {
44129
44129
  const alpha = evaluate(expr);
44130
44130
  if (!isFinite(alpha)) return null;
44131
44131
  for (let den = 1; den <= 100; den++) {
44132
- const num = Math.round(alpha * den);
44133
- if (Math.abs(alpha - num / den) < 1e-12) {
44134
- if (den === 1) return `${varName} - ${num}`;
44135
- return `${den}*${varName} - ${num}`;
44132
+ const num2 = Math.round(alpha * den);
44133
+ if (Math.abs(alpha - num2 / den) < 1e-12) {
44134
+ if (den === 1) return `${varName} - ${num2}`;
44135
+ return `${den}*${varName} - ${num2}`;
44136
44136
  }
44137
44137
  }
44138
44138
  const powers = [1, alpha, alpha * alpha, alpha * alpha * alpha, alpha ** 4];
@@ -44473,10 +44473,10 @@ function iltNiceNumber(val) {
44473
44473
  const rounded = Math.round(val);
44474
44474
  if (Math.abs(val - rounded) < 1e-8) return String(rounded);
44475
44475
  for (let den = 2; den <= 12; den++) {
44476
- const num = Math.round(val * den);
44477
- if (Math.abs(val - num / den) < 1e-8) {
44478
- const g = iltGcd(Math.abs(num), den);
44479
- const n = num / g;
44476
+ const num2 = Math.round(val * den);
44477
+ if (Math.abs(val - num2 / den) < 1e-8) {
44478
+ const g = iltGcd(Math.abs(num2), den);
44479
+ const n = num2 / g;
44480
44480
  const d = den / g;
44481
44481
  return d === 1 ? String(n) : n + "/" + d;
44482
44482
  }
@@ -45154,11 +45154,13 @@ function rankdata(x) {
45154
45154
  function gmean(x) {
45155
45155
  const a = arr(x);
45156
45156
  if (a.length === 0) return NaN;
45157
+ if (a.some((v) => v <= 0)) throw new Error("gmean: all entries must be > 0");
45157
45158
  return Math.exp(mean2(a.map(Math.log)));
45158
45159
  }
45159
45160
  function hmean(x) {
45160
45161
  const a = arr(x);
45161
45162
  if (a.length === 0) return NaN;
45163
+ if (a.some((v) => v <= 0)) throw new Error("hmean: all entries must be > 0");
45162
45164
  return a.length / sum2(a.map((v) => 1 / v));
45163
45165
  }
45164
45166
  function moment(x, k, central = true) {
@@ -45173,9 +45175,11 @@ function skewness(x, opts = {}) {
45173
45175
  const a = arr(x);
45174
45176
  const n = a.length;
45175
45177
  const m2 = centralMoment(a, 2);
45178
+ if (m2 === 0) throw new Error("skewness: variance is zero (constant input); skewness undefined");
45176
45179
  const m3 = centralMoment(a, 3);
45177
45180
  const g1 = m3 / Math.pow(m2, 1.5);
45178
- if (opts.bias === false && n > 2) {
45181
+ if (opts.bias === false) {
45182
+ if (n <= 2) return NaN;
45179
45183
  return Math.sqrt(n * (n - 1)) / (n - 2) * g1;
45180
45184
  }
45181
45185
  return g1;
@@ -45184,9 +45188,11 @@ function kurtosis(x, opts = {}) {
45184
45188
  const a = arr(x);
45185
45189
  const n = a.length;
45186
45190
  const m2 = centralMoment(a, 2);
45191
+ if (m2 === 0) throw new Error("kurtosis: variance is zero (constant input); kurtosis undefined");
45187
45192
  const m4 = centralMoment(a, 4);
45188
45193
  let g2 = m4 / (m2 * m2);
45189
- if (opts.bias === false && n > 3) {
45194
+ if (opts.bias === false) {
45195
+ if (n <= 3) return NaN;
45190
45196
  g2 = (n - 1) / ((n - 2) * (n - 3)) * ((n + 1) * g2 - 3 * (n - 1)) + 3;
45191
45197
  }
45192
45198
  return opts.fisher === false ? g2 : g2 - 3;
@@ -45202,8 +45208,10 @@ function sem(x) {
45202
45208
  }
45203
45209
  function zscore(x) {
45204
45210
  const a = arr(x);
45211
+ if (a.length === 0) return [];
45205
45212
  const m = mean2(a);
45206
45213
  const s = stdPop(a);
45214
+ if (s === 0) throw new Error("zscore: standard deviation is zero (constant input)");
45207
45215
  return a.map((v) => (v - m) / s);
45208
45216
  }
45209
45217
  function cov(x, y, ddof = 1) {
@@ -45211,6 +45219,8 @@ function cov(x, y, ddof = 1) {
45211
45219
  const a = arr(x);
45212
45220
  const b = arr(y);
45213
45221
  if (a.length !== b.length) throw new Error(`cov: length mismatch ${a.length} vs ${b.length}`);
45222
+ if (a.length <= ddof)
45223
+ throw new Error(`cov: need more than ddof=${ddof} observations (got n=${a.length})`);
45214
45224
  const ma = mean2(a);
45215
45225
  const mb = mean2(b);
45216
45226
  let acc = 0;
@@ -45219,7 +45229,9 @@ function cov(x, y, ddof = 1) {
45219
45229
  }
45220
45230
  const M = x.map((r) => Array.from(r));
45221
45231
  const nObs = M.length;
45222
- const nVar = nObs > 0 ? M[0].length : 0;
45232
+ if (nObs <= ddof)
45233
+ throw new Error(`cov: need more than ddof=${ddof} observations (got n=${nObs})`);
45234
+ const nVar = M[0].length;
45223
45235
  const cols = Array.from({ length: nVar }, (_, j) => M.map((r) => r[j]));
45224
45236
  const means = cols.map(mean2);
45225
45237
  const out = Array.from({ length: nVar }, () => new Array(nVar).fill(0));
@@ -45246,6 +45258,11 @@ function corrcoef(matrix2) {
45246
45258
 
45247
45259
  // src/numeric-extra.ts
45248
45260
  var toArr = (x) => Array.isArray(x) ? x : Array.from(x);
45261
+ var maxOf = (a) => {
45262
+ let m = -Infinity;
45263
+ for (let i = 0; i < a.length; i++) if (a[i] > m) m = a[i];
45264
+ return m;
45265
+ };
45249
45266
  function clamp(x, lo, hi) {
45250
45267
  const c = (v) => v < lo ? lo : v > hi ? hi : v;
45251
45268
  return Array.isArray(x) ? x.map(c) : c(x);
@@ -45257,7 +45274,7 @@ function sigmoid(x) {
45257
45274
  function logsumexp(x) {
45258
45275
  const a = toArr(x);
45259
45276
  if (a.length === 0) return -Infinity;
45260
- const m = max(a);
45277
+ const m = maxOf(a);
45261
45278
  if (!Number.isFinite(m)) return m;
45262
45279
  let acc = 0;
45263
45280
  for (let i = 0; i < a.length; i++) acc += Math.exp(a[i] - m);
@@ -45266,7 +45283,7 @@ function logsumexp(x) {
45266
45283
  function softmax(x) {
45267
45284
  const a = toArr(x);
45268
45285
  if (a.length === 0) return [];
45269
- const m = max(a);
45286
+ const m = maxOf(a);
45270
45287
  const e = a.map((v) => Math.exp(v - m));
45271
45288
  const z = sum(e);
45272
45289
  return e.map((v) => v / z);
@@ -45304,7 +45321,17 @@ function cummin(x) {
45304
45321
  function cumtrapz(y, x) {
45305
45322
  const a = toArr(y);
45306
45323
  const out = new Array(a.length).fill(0);
45307
- const dxAt = typeof x === "number" ? (_i) => x : x !== void 0 ? /* @__PURE__ */ ((xs) => (i) => xs[i + 1] - xs[i])(toArr(x)) : (_i) => 1;
45324
+ let dxAt;
45325
+ if (typeof x === "number") {
45326
+ dxAt = () => x;
45327
+ } else if (x !== void 0) {
45328
+ const xs = toArr(x);
45329
+ if (xs.length < a.length)
45330
+ throw new Error(`cumtrapz: abscissa x (length ${xs.length}) is shorter than y (length ${a.length})`);
45331
+ dxAt = (i) => xs[i + 1] - xs[i];
45332
+ } else {
45333
+ dxAt = () => 1;
45334
+ }
45308
45335
  let acc = 0;
45309
45336
  for (let i = 1; i < a.length; i++) {
45310
45337
  acc += (a[i] + a[i - 1]) / 2 * dxAt(i - 1);
@@ -45341,8 +45368,17 @@ var logisticQuantile = (p, mu = 0, s = 1) => mu + s * Math.log(p / (1 - p));
45341
45368
  // src/hypothesis-extra.ts
45342
45369
  var arr2 = (x) => Array.isArray(x) ? x : Array.from(x);
45343
45370
  var sampleVar = (x) => variance(x);
45371
+ var mean3 = (x) => mean(x);
45344
45372
  var normalCDF2 = (z) => normalCDF(z);
45373
+ var normalPDF2 = (z) => normalPDF(z);
45345
45374
  var lgamma3 = (n) => lgamma(n);
45375
+ function simpson2(f, a, b, n = 512) {
45376
+ const m = n % 2 === 0 ? n : n + 1;
45377
+ const h = (b - a) / m;
45378
+ let s = f(a) + f(b);
45379
+ for (let i = 1; i < m; i++) s += (i % 2 === 0 ? 2 : 4) * f(a + i * h);
45380
+ return s * h / 3;
45381
+ }
45346
45382
  function tieTerm(values) {
45347
45383
  const sorted = [...values].sort((a, b) => a - b);
45348
45384
  let term = 0;
@@ -45358,9 +45394,13 @@ function tieTerm(values) {
45358
45394
  function fTest(x, y) {
45359
45395
  const a = arr2(x);
45360
45396
  const b = arr2(y);
45397
+ if (a.length < 2 || b.length < 2)
45398
+ throw new Error("fTest: each sample needs at least 2 observations");
45361
45399
  const df1 = a.length - 1;
45362
45400
  const df2 = b.length - 1;
45363
- const statistic = sampleVar(a) / sampleVar(b);
45401
+ const vb = sampleVar(b);
45402
+ if (vb === 0) throw new Error("fTest: denominator sample has zero variance");
45403
+ const statistic = sampleVar(a) / vb;
45364
45404
  const lower = fCDF(statistic, df1, df2);
45365
45405
  const pValue = 2 * Math.min(lower, 1 - lower);
45366
45406
  return { statistic, pValue, df1, df2 };
@@ -45368,6 +45408,7 @@ function fTest(x, y) {
45368
45408
  function jarqueBera(x) {
45369
45409
  const a = arr2(x);
45370
45410
  const n = a.length;
45411
+ if (n < 2) throw new Error("jarqueBera: need at least 2 observations");
45371
45412
  const s = skewness(a);
45372
45413
  const k = kurtosis(a);
45373
45414
  const statistic = n / 6 * (s * s + k * k / 4);
@@ -45376,6 +45417,7 @@ function jarqueBera(x) {
45376
45417
  }
45377
45418
  function kruskalWallis(...groups) {
45378
45419
  const arrs = groups.map(arr2).filter((g) => g.length > 0);
45420
+ if (arrs.length < 2) throw new Error("kruskalWallis: need at least 2 non-empty groups");
45379
45421
  const pooled = arrs.flat();
45380
45422
  const N = pooled.length;
45381
45423
  const ranks = rankdata(pooled);
@@ -45395,9 +45437,13 @@ function kruskalWallis(...groups) {
45395
45437
  }
45396
45438
  function wilcoxon(x, y) {
45397
45439
  const a = arr2(x);
45398
- const diffs = (y !== void 0 ? arr2(y) : null) ? a.map((v, i) => v - arr2(y)[i]) : a;
45440
+ const yy = y !== void 0 ? arr2(y) : void 0;
45441
+ if (yy !== void 0 && yy.length !== a.length)
45442
+ throw new Error(`wilcoxon: paired samples must have equal length (${a.length} vs ${yy.length})`);
45443
+ const diffs = yy !== void 0 ? a.map((v, i) => v - yy[i]) : a;
45399
45444
  const d = diffs.filter((v) => v !== 0);
45400
45445
  const n = d.length;
45446
+ if (n === 0) throw new Error("wilcoxon: all differences are zero (test undefined)");
45401
45447
  const ranks = rankdata(d.map(Math.abs));
45402
45448
  let wPlus = 0;
45403
45449
  let wMinus = 0;
@@ -45434,12 +45480,110 @@ function fisherExact(table) {
45434
45480
  const oddsRatio = b * c === 0 ? Infinity : a * d / (b * c);
45435
45481
  return { oddsRatio, pValue: Math.min(1, p) };
45436
45482
  }
45483
+ function rangeProb(w, k) {
45484
+ if (w <= 0) return 0;
45485
+ const integrand = (z) => k * normalPDF2(z) * Math.pow(normalCDF2(z) - normalCDF2(z - w), k - 1);
45486
+ return Math.min(1, Math.max(0, simpson2(integrand, -8.5, 8.5, 240)));
45487
+ }
45488
+ function studentizedRangeCDF(q, k, df) {
45489
+ if (!(k >= 2)) throw new Error("studentizedRangeCDF: k (number of groups) must be >= 2");
45490
+ if (q <= 0) return 0;
45491
+ if (!Number.isFinite(df)) return rangeProb(q, k);
45492
+ if (!(df > 0)) throw new Error("studentizedRangeCDF: df must be > 0");
45493
+ const nu = df;
45494
+ const logc = nu / 2 * Math.log(nu) - (nu / 2 - 1) * Math.log(2) - lgamma3(nu / 2);
45495
+ const fU = (u) => Math.exp(logc + (nu - 1) * Math.log(u) - nu * u * u / 2);
45496
+ let umax = 1 + 12 / Math.sqrt(nu);
45497
+ for (let iter = 0; iter < 20 && simpson2(fU, 1e-5, umax, 120) < 1 - 1e-6; iter++) umax *= 1.5;
45498
+ return Math.min(1, Math.max(0, simpson2((u) => fU(u) * rangeProb(q * u, k), 1e-5, umax, 120)));
45499
+ }
45500
+ function studentizedRangeQuantile(p, k, df) {
45501
+ if (!(p > 0 && p < 1)) throw new Error("studentizedRangeQuantile: p must be in (0, 1)");
45502
+ let lo = 0;
45503
+ let hi = 1;
45504
+ for (let iter = 0; studentizedRangeCDF(hi, k, df) < p; iter++) {
45505
+ if (iter >= 60)
45506
+ throw new Error(`studentizedRangeQuantile: failed to bracket p=${p} (CDF plateaued below p)`);
45507
+ hi *= 2;
45508
+ }
45509
+ for (let i = 0; i < 45; i++) {
45510
+ const mid = (lo + hi) / 2;
45511
+ if (studentizedRangeCDF(mid, k, df) < p) lo = mid;
45512
+ else hi = mid;
45513
+ }
45514
+ return (lo + hi) / 2;
45515
+ }
45516
+ function tukeyHSD(groups, alpha = 0.05) {
45517
+ const gs = groups.map(arr2);
45518
+ const k = gs.length;
45519
+ if (k < 2) throw new Error("tukeyHSD: need at least 2 groups");
45520
+ const means = gs.map(mean3);
45521
+ const N = gs.reduce((s, g) => s + g.length, 0);
45522
+ const dfErr = N - k;
45523
+ if (dfErr <= 0)
45524
+ throw new Error("tukeyHSD: residual df must be > 0 (groups must hold more observations than groups)");
45525
+ const sse = gs.reduce((s, g) => s + sampleVar(g) * (g.length - 1), 0);
45526
+ const mse = sse / dfErr;
45527
+ const qCrit = studentizedRangeQuantile(1 - alpha, k, dfErr);
45528
+ const out = [];
45529
+ for (let i = 0; i < k; i++) {
45530
+ for (let j = i + 1; j < k; j++) {
45531
+ const diff2 = means[i] - means[j];
45532
+ const se = Math.sqrt(mse / 2 * (1 / gs[i].length + 1 / gs[j].length));
45533
+ const q = Math.abs(diff2) / se;
45534
+ out.push({
45535
+ groups: [i, j],
45536
+ meanDifference: diff2,
45537
+ qStatistic: q,
45538
+ pValue: 1 - studentizedRangeCDF(q, k, dfErr),
45539
+ reject: q > qCrit
45540
+ });
45541
+ }
45542
+ }
45543
+ return out;
45544
+ }
45437
45545
 
45438
45546
  // src/linalg-extra.ts
45439
45547
  import { DenseMatrix as DenseMatrix5, lu as lu2 } from "@danielsimonjr/mathts-matrix";
45440
45548
  var _inv = inv;
45441
45549
  var _eigs = eigs;
45442
45550
  var _multiply = multiply;
45551
+ var _qr = qr;
45552
+ var transposeArr = (A) => A[0].map((_, j) => A.map((r) => r[j]));
45553
+ var identityArr = (n) => Array.from({ length: n }, (_, i) => Array.from({ length: n }, (_2, j) => i === j ? 1 : 0));
45554
+ function realSchur(M) {
45555
+ const n = M.length;
45556
+ let A = M.map((r) => r.slice());
45557
+ let U = identityArr(n);
45558
+ let m = n;
45559
+ for (let iter = 0; iter < 8e3 && m > 1; iter++) {
45560
+ if (Math.abs(A[m - 1][m - 2]) < 1e-14 * (Math.abs(A[m - 2][m - 2]) + Math.abs(A[m - 1][m - 1]))) {
45561
+ A[m - 1][m - 2] = 0;
45562
+ m--;
45563
+ continue;
45564
+ }
45565
+ const a = A[m - 2][m - 2];
45566
+ const b = A[m - 2][m - 1];
45567
+ const c = A[m - 1][m - 2];
45568
+ const d = A[m - 1][m - 1];
45569
+ const delta = (a - d) / 2;
45570
+ const disc = delta * delta + b * c;
45571
+ const denom = Math.abs(delta) + Math.sqrt(Math.abs(disc));
45572
+ const s = disc >= 0 && denom > 1e-300 ? d - (Math.sign(delta) || 1) * (b * c) / denom : d;
45573
+ const As = A.map((r, i) => r.map((v, j) => v - (i === j ? s : 0)));
45574
+ const { Q: Q2, R } = _qr(As);
45575
+ A = _multiply(R, Q2).map((r, i) => r.map((v, j) => v + (i === j ? s : 0)));
45576
+ U = _multiply(U, Q2);
45577
+ }
45578
+ for (let i = 2; i < n; i++) {
45579
+ for (let j = 0; j < i - 1; j++) {
45580
+ if (Math.abs(A[i][j]) > 1e-8 * (1 + Math.abs(A[i][i]) + Math.abs(A[j][j]))) {
45581
+ throw new Error("realSchur: QR iteration failed to converge to (quasi-)triangular form");
45582
+ }
45583
+ }
45584
+ }
45585
+ return { U, S: A };
45586
+ }
45443
45587
  var arr3 = (x) => Array.isArray(x) ? x : Array.from(x);
45444
45588
  function generalizedEig(A, B) {
45445
45589
  const Binv = _inv(B);
@@ -45481,6 +45625,7 @@ function companion(coeffs) {
45481
45625
  const a = arr3(coeffs);
45482
45626
  const n = a.length - 1;
45483
45627
  if (n < 1) throw new Error("companion: need at least 2 coefficients");
45628
+ if (a[0] === 0) throw new Error("companion: leading coefficient must be nonzero");
45484
45629
  const C = Array.from({ length: n }, () => new Array(n).fill(0));
45485
45630
  for (let j = 0; j < n; j++) C[0][j] = -a[j + 1] / a[0];
45486
45631
  for (let i = 1; i < n; i++) C[i][i - 1] = 1;
@@ -45525,6 +45670,16 @@ function logdet(A) {
45525
45670
  }
45526
45671
  return { sign: sign3, value };
45527
45672
  }
45673
+ function qz(A, B) {
45674
+ const Aa = A;
45675
+ const Bb = B;
45676
+ const M = _multiply(_inv(Bb), Aa);
45677
+ const { U: Z } = realSchur(M);
45678
+ const { Q: Q2, R } = _qr(_multiply(Bb, Z));
45679
+ const Qt = transposeArr(Q2);
45680
+ const AA = _multiply(_multiply(Qt, Aa), Z);
45681
+ return { AA, BB: R, Q: Q2, Z };
45682
+ }
45528
45683
 
45529
45684
  // src/calculus-extra.ts
45530
45685
  function gradient(y, x) {
@@ -45578,7 +45733,7 @@ function hessian(f, x, h = 1e-4) {
45578
45733
 
45579
45734
  // src/timeseries-extra.ts
45580
45735
  var arr4 = (x) => Array.isArray(x) ? x : Array.from(x);
45581
- var mean3 = (x) => mean(x);
45736
+ var mean4 = (x) => mean(x);
45582
45737
  function movingAverage(x, w) {
45583
45738
  const a = arr4(x);
45584
45739
  if (w <= 0 || w > a.length) throw new Error(`movingAverage: window ${w} out of range`);
@@ -45594,6 +45749,7 @@ function movingAverage(x, w) {
45594
45749
  function ewma(x, alpha) {
45595
45750
  const a = arr4(x);
45596
45751
  if (alpha <= 0 || alpha > 1) throw new Error("ewma: alpha must be in (0, 1]");
45752
+ if (a.length === 0) throw new Error("ewma: input series is empty");
45597
45753
  const out = new Array(a.length);
45598
45754
  let prev = a[0];
45599
45755
  out[0] = prev;
@@ -45607,12 +45763,13 @@ function detrend(x, type = "linear") {
45607
45763
  const a = arr4(x);
45608
45764
  const n = a.length;
45609
45765
  if (type === "constant") {
45610
- const m = mean3(a);
45766
+ const m = mean4(a);
45611
45767
  return a.map((v) => v - m);
45612
45768
  }
45769
+ if (n < 2) return a.map(() => 0);
45613
45770
  const t = Array.from({ length: n }, (_, i) => i);
45614
- const mt = mean3(t);
45615
- const my = mean3(a);
45771
+ const mt = mean4(t);
45772
+ const my = mean4(a);
45616
45773
  let sxy = 0;
45617
45774
  let sxx = 0;
45618
45775
  for (let i = 0; i < n; i++) {
@@ -45626,10 +45783,13 @@ function detrend(x, type = "linear") {
45626
45783
  function acf(x, nlags) {
45627
45784
  const a = arr4(x);
45628
45785
  const n = a.length;
45629
- const m = mean3(a);
45786
+ if (nlags < 0 || nlags >= n)
45787
+ throw new Error(`acf: nlags ${nlags} out of range for series length ${n}`);
45788
+ const m = mean4(a);
45630
45789
  const dev = a.map((v) => v - m);
45631
45790
  let c0 = 0;
45632
45791
  for (let i = 0; i < n; i++) c0 += dev[i] * dev[i];
45792
+ if (c0 === 0) throw new Error("acf: series has zero variance");
45633
45793
  const out = new Array(nlags + 1);
45634
45794
  for (let k = 0; k <= nlags; k++) {
45635
45795
  let ck = 0;
@@ -45641,14 +45801,16 @@ function acf(x, nlags) {
45641
45801
 
45642
45802
  // src/regression-extra.ts
45643
45803
  var arr5 = (x) => Array.isArray(x) ? x : Array.from(x);
45644
- var mean4 = (x) => mean(x);
45804
+ var mean5 = (x) => mean(x);
45645
45805
  function linearRegression(x, y) {
45646
45806
  const a = arr5(x);
45647
45807
  const b = arr5(y);
45648
45808
  const n = a.length;
45649
45809
  if (b.length !== n) throw new Error(`linearRegression: length mismatch ${n} vs ${b.length}`);
45650
- const mx = mean4(a);
45651
- const my = mean4(b);
45810
+ if (n < 3)
45811
+ throw new Error("linearRegression: need at least 3 points for a slope significance test");
45812
+ const mx = mean5(a);
45813
+ const my = mean5(b);
45652
45814
  let sxx = 0;
45653
45815
  let syy = 0;
45654
45816
  let sxy = 0;
@@ -45659,6 +45821,7 @@ function linearRegression(x, y) {
45659
45821
  syy += dy * dy;
45660
45822
  sxy += dx * dy;
45661
45823
  }
45824
+ if (sxx === 0) throw new Error("linearRegression: predictor x has zero variance");
45662
45825
  const slope = sxy / sxx;
45663
45826
  const intercept = my - slope * mx;
45664
45827
  const rValue = sxy / Math.sqrt(sxx * syy);
@@ -45669,6 +45832,484 @@ function linearRegression(x, y) {
45669
45832
  return { slope, intercept, rValue, rSquared: rValue * rValue, pValue, stdErr };
45670
45833
  }
45671
45834
 
45835
+ // src/optimization-extra.ts
45836
+ var _inv2 = inv;
45837
+ function nelderMead(f, x0, opts = {}) {
45838
+ const { maxIter = 2e3, tol = 1e-8, step = 0.05 } = opts;
45839
+ const n = x0.length;
45840
+ const alpha = 1;
45841
+ const gamma2 = 2;
45842
+ const rho = 0.5;
45843
+ const sigma = 0.5;
45844
+ let simplex = [Array.from(x0)];
45845
+ for (let i = 0; i < n; i++) {
45846
+ const p = Array.from(x0);
45847
+ p[i] += p[i] !== 0 ? step * p[i] : step;
45848
+ simplex.push(p);
45849
+ }
45850
+ let fv = simplex.map(f);
45851
+ let iter = 0;
45852
+ const centroid2 = (pts) => {
45853
+ const c = new Array(n).fill(0);
45854
+ for (let i = 0; i < n; i++) for (let j = 0; j < n; j++) c[j] += pts[i][j] / n;
45855
+ return c;
45856
+ };
45857
+ const add2 = (a, b, s) => a.map((v, i) => v + s * b[i]);
45858
+ const sub = (a, b) => a.map((v, i) => v - b[i]);
45859
+ for (; iter < maxIter; iter++) {
45860
+ const order = fv.map((_, i) => i).sort((i, j) => fv[i] - fv[j]);
45861
+ simplex = order.map((i) => simplex[i]);
45862
+ fv = order.map((i) => fv[i]);
45863
+ if (Math.abs(fv[n] - fv[0]) <= tol * (Math.abs(fv[0]) + tol)) break;
45864
+ const c = centroid2(simplex.slice(0, n));
45865
+ const xr = add2(c, sub(c, simplex[n]), alpha);
45866
+ const fr = f(xr);
45867
+ if (fr < fv[0]) {
45868
+ const xe = add2(c, sub(c, simplex[n]), gamma2);
45869
+ const fe = f(xe);
45870
+ if (fe < fr) {
45871
+ simplex[n] = xe;
45872
+ fv[n] = fe;
45873
+ } else {
45874
+ simplex[n] = xr;
45875
+ fv[n] = fr;
45876
+ }
45877
+ } else if (fr < fv[n - 1]) {
45878
+ simplex[n] = xr;
45879
+ fv[n] = fr;
45880
+ } else {
45881
+ const xc = add2(c, sub(simplex[n], c), rho);
45882
+ const fc = f(xc);
45883
+ if (fc < fv[n]) {
45884
+ simplex[n] = xc;
45885
+ fv[n] = fc;
45886
+ } else {
45887
+ for (let i = 1; i <= n; i++) {
45888
+ simplex[i] = add2(simplex[0], sub(simplex[i], simplex[0]), sigma);
45889
+ fv[i] = f(simplex[i]);
45890
+ }
45891
+ }
45892
+ }
45893
+ }
45894
+ const best = fv.map((_, i) => i).sort((i, j) => fv[i] - fv[j])[0];
45895
+ return { x: simplex[best], fx: fv[best], iterations: iter, converged: iter < maxIter };
45896
+ }
45897
+ function gradientDescent(f, x0, opts = {}) {
45898
+ const { rate = 0.1, maxIter = 1e4, tol = 1e-8 } = opts;
45899
+ const n = x0.length;
45900
+ const numGrad = (x2) => {
45901
+ const h = 1e-6;
45902
+ const g = new Array(n);
45903
+ for (let i = 0; i < n; i++) {
45904
+ const xp = x2.slice();
45905
+ const xm = x2.slice();
45906
+ xp[i] += h;
45907
+ xm[i] -= h;
45908
+ g[i] = (f(xp) - f(xm)) / (2 * h);
45909
+ }
45910
+ return g;
45911
+ };
45912
+ const grad = opts.grad ?? numGrad;
45913
+ let x = Array.from(x0);
45914
+ let iter = 0;
45915
+ for (; iter < maxIter; iter++) {
45916
+ const g = grad(x);
45917
+ const gnorm = Math.hypot(...g);
45918
+ if (gnorm <= tol) break;
45919
+ let t = rate;
45920
+ const fx = f(x);
45921
+ while (t > 1e-15 && f(x.map((v, i) => v - t * g[i])) > fx - 0.5 * t * gnorm * gnorm) t *= 0.5;
45922
+ x = x.map((v, i) => v - t * g[i]);
45923
+ }
45924
+ return { x, fx: f(x), iterations: iter, converged: iter < maxIter };
45925
+ }
45926
+ function levenbergMarquardt(residual, x0, opts = {}) {
45927
+ const { maxIter = 200, tol = 1e-10 } = opts;
45928
+ const n = x0.length;
45929
+ let x = Array.from(x0);
45930
+ let lambda = 1e-3;
45931
+ const h = 1e-7;
45932
+ const norm22 = (v) => v.reduce((s, c) => s + c * c, 0);
45933
+ const jacobian2 = (xc, r0) => {
45934
+ const m = r0.length;
45935
+ const J = Array.from({ length: m }, () => new Array(n).fill(0));
45936
+ for (let j = 0; j < n; j++) {
45937
+ const xp = xc.slice();
45938
+ xp[j] += h;
45939
+ const rp = residual(xp);
45940
+ for (let i = 0; i < m; i++) J[i][j] = (rp[i] - r0[i]) / h;
45941
+ }
45942
+ return J;
45943
+ };
45944
+ let r = residual(x);
45945
+ let cost = norm22(r);
45946
+ let iter = 0;
45947
+ for (; iter < maxIter; iter++) {
45948
+ const J = jacobian2(x, r);
45949
+ const m = r.length;
45950
+ const JtJ = Array.from({ length: n }, () => new Array(n).fill(0));
45951
+ const Jtr = new Array(n).fill(0);
45952
+ for (let a = 0; a < n; a++) {
45953
+ for (let b = 0; b < n; b++) {
45954
+ let s = 0;
45955
+ for (let i = 0; i < m; i++) s += J[i][a] * J[i][b];
45956
+ JtJ[a][b] = s;
45957
+ }
45958
+ let sr = 0;
45959
+ for (let i = 0; i < m; i++) sr += J[i][a] * r[i];
45960
+ Jtr[a] = sr;
45961
+ }
45962
+ const A = JtJ.map((row2, a) => row2.map((v, b) => v + (a === b ? lambda * JtJ[a][a] : 0)));
45963
+ let delta;
45964
+ try {
45965
+ const Ainv = _inv2(A);
45966
+ delta = Ainv.map((row2) => row2.reduce((s, v, k) => s - v * Jtr[k], 0));
45967
+ } catch (e) {
45968
+ if (e instanceof Error && /determinant is zero|singular|zero pivot/i.test(e.message)) {
45969
+ lambda *= 10;
45970
+ continue;
45971
+ }
45972
+ throw e;
45973
+ }
45974
+ const xNew = x.map((v, i) => v + delta[i]);
45975
+ const rNew = residual(xNew);
45976
+ const costNew = norm22(rNew);
45977
+ if (costNew < cost) {
45978
+ x = xNew;
45979
+ r = rNew;
45980
+ if (Math.abs(cost - costNew) <= tol * cost) {
45981
+ cost = costNew;
45982
+ break;
45983
+ }
45984
+ cost = costNew;
45985
+ lambda = Math.max(lambda / 3, 1e-12);
45986
+ } else {
45987
+ lambda *= 3;
45988
+ }
45989
+ }
45990
+ return { x, residualNorm: Math.sqrt(cost), iterations: iter, converged: iter < maxIter };
45991
+ }
45992
+
45993
+ // src/clustering-extra.ts
45994
+ var _eigs2 = eigs;
45995
+ var dist2 = (a, b) => a.reduce((s, v, i) => s + (v - b[i]) * (v - b[i]), 0);
45996
+ function kmeans(data, k, opts = {}) {
45997
+ const { maxIter = 100 } = opts;
45998
+ const n = data.length;
45999
+ if (n === 0) throw new Error("kmeans: data is empty");
46000
+ if (!Number.isInteger(k) || k < 1) throw new Error("kmeans: k must be a positive integer");
46001
+ const d = data[0].length;
46002
+ if (k > n) throw new Error("kmeans: k exceeds number of points");
46003
+ const mean6 = new Array(d).fill(0);
46004
+ for (const p of data) for (let j = 0; j < d; j++) mean6[j] += p[j] / n;
46005
+ let first = 0;
46006
+ for (let i = 1; i < n; i++) if (dist2(data[i], mean6) < dist2(data[first], mean6)) first = i;
46007
+ const centroids = [data[first].slice()];
46008
+ while (centroids.length < k) {
46009
+ let best = -1;
46010
+ let bestD = -1;
46011
+ for (let i = 0; i < n; i++) {
46012
+ const dmin = Math.min(...centroids.map((c) => dist2(data[i], c)));
46013
+ if (dmin > bestD) {
46014
+ bestD = dmin;
46015
+ best = i;
46016
+ }
46017
+ }
46018
+ centroids.push(data[best].slice());
46019
+ }
46020
+ const labels = new Array(n).fill(0);
46021
+ let iterations = 0;
46022
+ let converged = false;
46023
+ for (let iter = 0; iter < maxIter; iter++) {
46024
+ iterations = iter + 1;
46025
+ let changed = false;
46026
+ for (let i = 0; i < n; i++) {
46027
+ let best = 0;
46028
+ let bestD = Infinity;
46029
+ for (let c = 0; c < k; c++) {
46030
+ const dd = dist2(data[i], centroids[c]);
46031
+ if (dd < bestD) {
46032
+ bestD = dd;
46033
+ best = c;
46034
+ }
46035
+ }
46036
+ if (labels[i] !== best) {
46037
+ labels[i] = best;
46038
+ changed = true;
46039
+ }
46040
+ }
46041
+ for (let c = 0; c < k; c++) {
46042
+ const members = data.filter((_, i) => labels[i] === c);
46043
+ if (members.length === 0) continue;
46044
+ for (let j = 0; j < d; j++)
46045
+ centroids[c][j] = members.reduce((s, p) => s + p[j], 0) / members.length;
46046
+ }
46047
+ if (!changed) {
46048
+ converged = true;
46049
+ break;
46050
+ }
46051
+ }
46052
+ const inertia = data.reduce((s, p, i) => s + dist2(p, centroids[labels[i]]), 0);
46053
+ return { labels, centroids, inertia, iterations, converged };
46054
+ }
46055
+ function spectralClustering(adjacency, k, opts = {}) {
46056
+ const L = laplacianMatrix(adjacency, { normalized: true });
46057
+ const { eigenvectors } = _eigs2(L);
46058
+ const n = adjacency.length;
46059
+ const embed = Array.from(
46060
+ { length: n },
46061
+ (_, i) => eigenvectors.slice(0, k).map((e) => e.vector[i])
46062
+ );
46063
+ return kmeans(embed, k, opts).labels;
46064
+ }
46065
+
46066
+ // src/cas-integration.ts
46067
+ var parse2 = parse;
46068
+ var evaluate2 = evaluate;
46069
+ var NotIntegrable = class extends Error {
46070
+ };
46071
+ function evalConst(s) {
46072
+ let v;
46073
+ try {
46074
+ v = evaluate2(s);
46075
+ } catch {
46076
+ throw new NotIntegrable(`non-numeric constant ${s}`);
46077
+ }
46078
+ if (!Number.isFinite(v)) throw new NotIntegrable(`non-finite constant ${s}`);
46079
+ return v;
46080
+ }
46081
+ var unwrap = (n) => n.type === "ParenthesisNode" && n.content ? unwrap(n.content) : n;
46082
+ function isConst(n, x) {
46083
+ const node = unwrap(n);
46084
+ if (node.type === "SymbolNode") return node.name !== x;
46085
+ if (node.type === "ConstantNode") return true;
46086
+ return [...node.args ?? [], ...node.content ? [node.content] : []].every((a) => isConst(a, x));
46087
+ }
46088
+ function num(v) {
46089
+ return Number.isInteger(v) ? String(v) : String(Number(v.toPrecision(15)));
46090
+ }
46091
+ function linearSlope(u, x) {
46092
+ try {
46093
+ const a1 = evaluate2(u, { [x]: 1 }) - evaluate2(u, { [x]: 0 });
46094
+ const a2 = evaluate2(u, { [x]: 5 }) - evaluate2(u, { [x]: 4 });
46095
+ if (Math.abs(a1 - a2) < 1e-9 && Math.abs(a1) > 1e-12) return a1;
46096
+ return null;
46097
+ } catch (e) {
46098
+ if (e instanceof Error && /undefined symbol/i.test(e.message)) return null;
46099
+ throw e;
46100
+ }
46101
+ }
46102
+ function integrateNode(raw, x) {
46103
+ const node = unwrap(raw);
46104
+ if (isConst(node, x)) return `${node.toString()} * ${x}`;
46105
+ switch (node.type) {
46106
+ case "SymbolNode":
46107
+ return `${x}^2 / 2`;
46108
+ // node is x
46109
+ case "OperatorNode": {
46110
+ const args = (node.args ?? []).map(unwrap);
46111
+ if (node.op === "+") return args.map((a) => integrateNode(a, x)).join(" + ");
46112
+ if (node.op === "-" && args.length === 2)
46113
+ return `${integrateNode(args[0], x)} - (${integrateNode(args[1], x)})`;
46114
+ if (node.op === "-" && args.length === 1) return `-(${integrateNode(args[0], x)})`;
46115
+ if (node.op === "*") {
46116
+ const consts = args.filter((a) => isConst(a, x));
46117
+ const varying = args.filter((a) => !isConst(a, x));
46118
+ if (varying.length === 1) {
46119
+ const c = consts.map((a) => `(${a.toString()})`).join(" * ");
46120
+ const inner = integrateNode(varying[0], x);
46121
+ return c ? `${c} * (${inner})` : inner;
46122
+ }
46123
+ throw new NotIntegrable("product of x-dependent factors");
46124
+ }
46125
+ if (node.op === "/") {
46126
+ if (isConst(args[1], x)) return `(${integrateNode(args[0], x)}) / (${args[1].toString()})`;
46127
+ if (isConst(args[0], x)) {
46128
+ const a = linearSlope(args[1].toString(), x);
46129
+ if (a !== null) {
46130
+ const k = evalConst(args[0].toString()) / a;
46131
+ return `${num(k)} * log(abs(${args[1].toString()}))`;
46132
+ }
46133
+ }
46134
+ throw new NotIntegrable("general quotient");
46135
+ }
46136
+ if (node.op === "^") {
46137
+ const base = args[0];
46138
+ const exp2 = args[1];
46139
+ if (!isConst(exp2, x)) throw new NotIntegrable("variable exponent");
46140
+ const n = evalConst(exp2.toString());
46141
+ const a = linearSlope(base.toString(), x);
46142
+ if (a === null) throw new NotIntegrable("non-linear base");
46143
+ const b = `(${base.toString()})`;
46144
+ if (n === -1) return `${num(1 / a)} * log(abs(${b}))`;
46145
+ const denom = a * (n + 1);
46146
+ return denom === 1 ? `${b}^${num(n + 1)}` : `${b}^${num(n + 1)} / ${num(denom)}`;
46147
+ }
46148
+ throw new NotIntegrable(`operator ${node.op}`);
46149
+ }
46150
+ case "FunctionNode": {
46151
+ const fn = node.fn?.name ?? node.name ?? "";
46152
+ const u = (node.args ?? [])[0];
46153
+ if (!u) throw new NotIntegrable(fn);
46154
+ const us = u.toString();
46155
+ if (fn === "log" || fn === "ln") {
46156
+ if (us === x) return `${x} * log(${x}) - ${x}`;
46157
+ throw new NotIntegrable("ln of non-trivial argument");
46158
+ }
46159
+ if (fn === "sqrt") return integrateNode(parse2(`(${us})^(0.5)`), x);
46160
+ const a = linearSlope(us, x);
46161
+ if (a === null) throw new NotIntegrable(`non-linear argument of ${fn}`);
46162
+ const inv2 = a === 1 ? "" : ` / ${num(a)}`;
46163
+ switch (fn) {
46164
+ case "sin":
46165
+ return `-cos(${us})${inv2}`;
46166
+ case "cos":
46167
+ return `sin(${us})${inv2}`;
46168
+ case "exp":
46169
+ return `exp(${us})${inv2}`;
46170
+ case "sinh":
46171
+ return `cosh(${us})${inv2}`;
46172
+ case "cosh":
46173
+ return `sinh(${us})${inv2}`;
46174
+ default:
46175
+ throw new NotIntegrable(`function ${fn}`);
46176
+ }
46177
+ }
46178
+ default:
46179
+ throw new NotIntegrable(node.type);
46180
+ }
46181
+ }
46182
+ function symbolicIntegral(expr, variable = "x") {
46183
+ try {
46184
+ return integrateNode(parse2(expr), variable);
46185
+ } catch (e) {
46186
+ if (e instanceof NotIntegrable) return `integral(${expr}, ${variable})`;
46187
+ throw e;
46188
+ }
46189
+ }
46190
+
46191
+ // src/signal-filter-extra.ts
46192
+ import { Complex as Complex11 } from "@danielsimonjr/mathts-core";
46193
+ var _inv3 = inv;
46194
+ var arr6 = (x) => Array.isArray(x) ? x : Array.from(x);
46195
+ var sinc = (x) => x === 0 ? 1 : Math.sin(Math.PI * x) / (Math.PI * x);
46196
+ function firwin(numtaps, cutoff) {
46197
+ if (!Number.isInteger(numtaps) || numtaps < 2)
46198
+ throw new Error("firwin: numtaps must be an integer >= 2");
46199
+ const M = numtaps - 1;
46200
+ const h = new Array(numtaps);
46201
+ for (let n = 0; n <= M; n++) {
46202
+ const w = 0.54 - 0.46 * Math.cos(2 * Math.PI * n / M);
46203
+ h[n] = cutoff * sinc(cutoff * (n - M / 2)) * w;
46204
+ }
46205
+ const s = h.reduce((a, b) => a + b, 0);
46206
+ if (Math.abs(s) < 1e-12)
46207
+ throw new Error("firwin: degenerate design \u2014 taps sum to ~0 (cutoff at/near 0)");
46208
+ return h.map((v) => v / s);
46209
+ }
46210
+ function padCoeffs(b, a) {
46211
+ const n = Math.max(a.length, b.length);
46212
+ const a0 = a[0];
46213
+ const bn = Array.from({ length: n }, (_, i) => (i < b.length ? b[i] : 0) / a0);
46214
+ const an = Array.from({ length: n }, (_, i) => (i < a.length ? a[i] : 0) / a0);
46215
+ return { b: bn, a: an, n };
46216
+ }
46217
+ function lfilterState(b, a, x, zi) {
46218
+ const { b: bb, a: aa, n } = padCoeffs(b, a);
46219
+ const z = zi ? zi.slice() : new Array(Math.max(n - 1, 0)).fill(0);
46220
+ const y = new Array(x.length);
46221
+ for (let m = 0; m < x.length; m++) {
46222
+ const xm = x[m];
46223
+ const ym = bb[0] * xm + (z.length ? z[0] : 0);
46224
+ for (let i = 0; i < n - 2; i++) z[i] = bb[i + 1] * xm + z[i + 1] - aa[i + 1] * ym;
46225
+ if (n >= 2) z[n - 2] = bb[n - 1] * xm - aa[n - 1] * ym;
46226
+ y[m] = ym;
46227
+ }
46228
+ return { y, zf: z };
46229
+ }
46230
+ function lfilter(b, a, x) {
46231
+ return lfilterState(arr6(b), arr6(a), arr6(x)).y;
46232
+ }
46233
+ function lfilterZi(b, a) {
46234
+ const { b: bb, a: aa, n } = padCoeffs(arr6(b), arr6(a));
46235
+ if (n < 2) return [];
46236
+ const C = companion(aa);
46237
+ const M = Array.from(
46238
+ { length: n - 1 },
46239
+ (_, i) => Array.from({ length: n - 1 }, (_2, j) => (i === j ? 1 : 0) - C[j][i])
46240
+ );
46241
+ const B = Array.from({ length: n - 1 }, (_, i) => bb[i + 1] - aa[i + 1] * bb[0]);
46242
+ let Minv;
46243
+ try {
46244
+ Minv = _inv3(M);
46245
+ } catch {
46246
+ throw new Error("lfilterZi: filter has a pole at z=1 (singular I \u2212 A\u1D40); steady-state zi is undefined");
46247
+ }
46248
+ const zi = Minv.map((row2) => row2.reduce((s, v, k) => s + v * B[k], 0));
46249
+ if (zi.some((v) => !Number.isFinite(v)))
46250
+ throw new Error("lfilterZi: non-finite steady state (unstable or marginally-stable filter)");
46251
+ return zi;
46252
+ }
46253
+ function filtfilt(b, a, x) {
46254
+ const bb = arr6(b);
46255
+ const aa = arr6(a);
46256
+ const xx = arr6(x);
46257
+ const n = xx.length;
46258
+ const ntaps = Math.max(aa.length, bb.length);
46259
+ const pad = 3 * ntaps;
46260
+ if (pad >= n) throw new Error(`filtfilt: signal length ${n} must exceed padlen ${pad}`);
46261
+ const left = [];
46262
+ for (let k = pad; k >= 1; k--) left.push(2 * xx[0] - xx[k]);
46263
+ const right = [];
46264
+ for (let k = 1; k <= pad; k++) right.push(2 * xx[n - 1] - xx[n - 1 - k]);
46265
+ const ext = [...left, ...xx, ...right];
46266
+ const zi = lfilterZi(bb, aa);
46267
+ const fwd = lfilterState(bb, aa, ext, zi.map((v) => v * ext[0])).y;
46268
+ const rev = fwd.slice().reverse();
46269
+ const back = lfilterState(bb, aa, rev, zi.map((v) => v * rev[0])).y.reverse();
46270
+ return back.slice(pad, pad + n);
46271
+ }
46272
+ var cAdd = (p, q) => p.add(q);
46273
+ var cSub = (p, q) => p.sub(q);
46274
+ var cMul = (p, q) => p.multiply(q);
46275
+ var cDiv = (p, q) => p.divide(q);
46276
+ function polyFromRoots(roots) {
46277
+ let c = [new Complex11(1, 0)];
46278
+ for (const r of roots) {
46279
+ const next = Array.from({ length: c.length + 1 }, () => new Complex11(0, 0));
46280
+ for (let i = 0; i < c.length; i++) {
46281
+ next[i] = cAdd(next[i], c[i]);
46282
+ next[i + 1] = cSub(next[i + 1], cMul(c[i], r));
46283
+ }
46284
+ c = next;
46285
+ }
46286
+ return c.map((z) => z.re);
46287
+ }
46288
+ function butter(N, Wn) {
46289
+ if (!Number.isInteger(N) || N < 1) throw new Error("butter: order N must be a positive integer");
46290
+ if (!(Wn > 0 && Wn < 1))
46291
+ throw new Error("butter: Wn must satisfy 0 < Wn < 1 (normalized to Nyquist)");
46292
+ const ap = [];
46293
+ for (let k = 0; k < N; k++) {
46294
+ const m = -N + 1 + 2 * k;
46295
+ const theta = Math.PI * m / (2 * N);
46296
+ ap.push(new Complex11(-Math.cos(theta), -Math.sin(theta)));
46297
+ }
46298
+ const fs = 2;
46299
+ const warped = 2 * fs * Math.tan(Math.PI * Wn / fs);
46300
+ const pLp = ap.map((p) => cMul(p, new Complex11(warped, 0)));
46301
+ const kLp = Math.pow(warped, N);
46302
+ const fs2 = new Complex11(2 * fs, 0);
46303
+ const pd = pLp.map((p) => cDiv(cAdd(fs2, p), cSub(fs2, p)));
46304
+ const zd = Array.from({ length: N }, () => new Complex11(-1, 0));
46305
+ let denom = new Complex11(1, 0);
46306
+ for (const p of pLp) denom = cMul(denom, cSub(fs2, p));
46307
+ const kd = kLp / denom.re;
46308
+ const b = polyFromRoots(zd).map((v) => v * kd);
46309
+ const a = polyFromRoots(pd);
46310
+ return { b, a };
46311
+ }
46312
+
45672
46313
  // src/geometry-extra.ts
45673
46314
  var toRad = (deg) => toRadians(deg);
45674
46315
  var EARTH_RADIUS_KM = 6371.0088;
@@ -45685,6 +46326,7 @@ var norm3 = (a) => Math.sqrt(dot2(a, a));
45685
46326
  function slerp(v0, v1, t) {
45686
46327
  const n0 = norm3(v0);
45687
46328
  const n16 = norm3(v1);
46329
+ if (n0 === 0 || n16 === 0) throw new Error("slerp: input vectors must be non-zero");
45688
46330
  const u0 = v0.map((v) => v / n0);
45689
46331
  const u1 = v1.map((v) => v / n16);
45690
46332
  let cos2 = dot2(u0, u1);
@@ -45692,6 +46334,8 @@ function slerp(v0, v1, t) {
45692
46334
  const omega = Math.acos(cos2);
45693
46335
  const mag = n0 + (n16 - n0) * t;
45694
46336
  if (omega < 1e-9) return u0.map((v, i) => (v + (u1[i] - v) * t) * mag);
46337
+ if (Math.PI - omega < 1e-9)
46338
+ throw new Error("slerp: antipodal directions have no unique interpolation path");
45695
46339
  const s = Math.sin(omega);
45696
46340
  const a = Math.sin((1 - t) * omega) / s;
45697
46341
  const b = Math.sin(t * omega) / s;
@@ -45712,6 +46356,7 @@ function quaternionConjugate(q) {
45712
46356
  }
45713
46357
  function quaternionNormalize(q) {
45714
46358
  const m = norm3(q);
46359
+ if (m === 0) throw new Error("quaternionNormalize: zero-magnitude quaternion");
45715
46360
  return q.map((v) => v / m);
45716
46361
  }
45717
46362
  function quaternionFromAxisAngle(axis, angle) {
@@ -45808,6 +46453,7 @@ export {
45808
46453
  boltzmann,
45809
46454
  boolean,
45810
46455
  bspline,
46456
+ butter,
45811
46457
  cancel,
45812
46458
  carlsonRC,
45813
46459
  carlsonRD,
@@ -46049,9 +46695,11 @@ export {
46049
46695
  fft2d,
46050
46696
  fibonacci,
46051
46697
  filter2 as filter,
46698
+ filtfilt,
46052
46699
  findRoot,
46053
46700
  fineStructure,
46054
46701
  firstRadiation,
46702
+ firwin,
46055
46703
  fisherExact,
46056
46704
  fix,
46057
46705
  flatten3 as flatten,
@@ -46091,6 +46739,7 @@ export {
46091
46739
  gpuTranspose,
46092
46740
  gradient,
46093
46741
  gradientAt,
46742
+ gradientDescent,
46094
46743
  gradientSymbolic,
46095
46744
  graphDistance,
46096
46745
  gravitationConstant,
@@ -46156,6 +46805,7 @@ export {
46156
46805
  kdTreeNearest,
46157
46806
  kldivergence,
46158
46807
  klitzing,
46808
+ kmeans,
46159
46809
  kolmogorovSmirnovTest,
46160
46810
  kron,
46161
46811
  kruskalWallis,
@@ -46177,6 +46827,9 @@ export {
46177
46827
  leftShift,
46178
46828
  legendreFit,
46179
46829
  legendreP,
46830
+ levenbergMarquardt,
46831
+ lfilter,
46832
+ lfilterZi,
46180
46833
  lgamma,
46181
46834
  limit,
46182
46835
  linearInterp,
@@ -46253,6 +46906,7 @@ export {
46253
46906
  multiplyScalar,
46254
46907
  multivariateTaylor,
46255
46908
  nearestNeighbor,
46909
+ nelderMead,
46256
46910
  neutronMass,
46257
46911
  newtonInterp,
46258
46912
  nextPrime,
@@ -46365,6 +47019,7 @@ export {
46365
47019
  quaternionRotate,
46366
47020
  quaternionToRotationMatrix,
46367
47021
  quickSelect,
47022
+ qz,
46368
47023
  random,
46369
47024
  randomInt,
46370
47025
  range,
@@ -46445,6 +47100,7 @@ export {
46445
47100
  solvePDE,
46446
47101
  sort,
46447
47102
  sparse,
47103
+ spectralClustering,
46448
47104
  spectrogram,
46449
47105
  speedOfLight,
46450
47106
  splitUnit,
@@ -46462,6 +47118,8 @@ export {
46462
47118
  studentTPDF,
46463
47119
  studentTQuantile,
46464
47120
  studentTTest,
47121
+ studentizedRangeCDF,
47122
+ studentizedRangeQuantile,
46465
47123
  subfactorial,
46466
47124
  subset,
46467
47125
  substitute,
@@ -46471,6 +47129,7 @@ export {
46471
47129
  summation,
46472
47130
  sylvester,
46473
47131
  symbolicEqual,
47132
+ symbolicIntegral,
46474
47133
  symbolicPartialDerivative,
46475
47134
  symbolicProduct,
46476
47135
  tDist,
@@ -46500,6 +47159,7 @@ export {
46500
47159
  trigToExp,
46501
47160
  tril,
46502
47161
  triu,
47162
+ tukeyHSD,
46503
47163
  typeOf2 as typeOf,
46504
47164
  typedAlgebra,
46505
47165
  typedArithmetic,