@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/cas-integration.d.ts +10 -0
- package/dist/cas-integration.d.ts.map +1 -0
- package/dist/clustering-extra.d.ts +27 -0
- package/dist/clustering-extra.d.ts.map +1 -0
- package/dist/descriptive-stats.d.ts +1 -1
- package/dist/descriptive-stats.d.ts.map +1 -1
- package/dist/geometry-extra.d.ts.map +1 -1
- package/dist/hypothesis-extra.d.ts +21 -0
- package/dist/hypothesis-extra.d.ts.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1366 -706
- package/dist/linalg-extra.d.ts +13 -0
- package/dist/linalg-extra.d.ts.map +1 -1
- package/dist/numeric-extra.d.ts.map +1 -1
- package/dist/optimization-extra.d.ts +41 -0
- package/dist/optimization-extra.d.ts.map +1 -0
- package/dist/regression-extra.d.ts.map +1 -1
- package/dist/signal-filter-extra.d.ts +35 -0
- package/dist/signal-filter-extra.d.ts.map +1 -0
- package/dist/timeseries-extra.d.ts.map +1 -1
- package/package.json +2 -2
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: (
|
|
1034
|
-
"Array, number": (
|
|
1035
|
-
if (p === Infinity) return Math.max(...
|
|
1036
|
-
if (p === -Infinity) return Math.min(...
|
|
1037
|
-
if (p === 0) return
|
|
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
|
-
|
|
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: (
|
|
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: (
|
|
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: (
|
|
1176
|
+
Array: (arr7) => {
|
|
1177
1177
|
let total = 0;
|
|
1178
|
-
for (let i = 0; i <
|
|
1179
|
-
total +=
|
|
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: (
|
|
1191
|
-
if (
|
|
1190
|
+
Array: (arr7) => {
|
|
1191
|
+
if (arr7.length === 0) return NaN;
|
|
1192
1192
|
let total = 0;
|
|
1193
|
-
for (let i = 0; i <
|
|
1194
|
-
total +=
|
|
1193
|
+
for (let i = 0; i < arr7.length; i++) {
|
|
1194
|
+
total += arr7[i];
|
|
1195
1195
|
}
|
|
1196
|
-
return total /
|
|
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(
|
|
1216
|
+
function m2OfArray(arr7) {
|
|
1217
1217
|
let m = 0;
|
|
1218
1218
|
let m2 = 0;
|
|
1219
|
-
for (let i = 0; i <
|
|
1220
|
-
const delta =
|
|
1219
|
+
for (let i = 0; i < arr7.length; i++) {
|
|
1220
|
+
const delta = arr7[i] - m;
|
|
1221
1221
|
m += delta / (i + 1);
|
|
1222
|
-
const delta2 =
|
|
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: (
|
|
1229
|
-
"Array, string": (
|
|
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: (
|
|
1243
|
-
"Array, string": (
|
|
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: (
|
|
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(
|
|
1632
|
-
return new Float64Array(
|
|
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 (
|
|
1642
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1659
|
-
if (
|
|
1660
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1696
|
-
if (
|
|
1697
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1702
|
-
if (
|
|
1703
|
-
const data = toFloat64Array(
|
|
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
|
|
1709
|
-
return ((a -
|
|
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
|
|
1713
|
-
return ((a -
|
|
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 (
|
|
1731
|
-
if (
|
|
1732
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1737
|
-
if (
|
|
1738
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1750
|
-
if (
|
|
1751
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1770
|
-
if (
|
|
1771
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1790
|
-
const data = toFloat64Array(
|
|
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 (
|
|
1811
|
-
if (
|
|
1812
|
-
return parallelStatMedian(toFloat64Array(
|
|
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
|
|
1818
|
-
return
|
|
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: (
|
|
1824
|
-
if (
|
|
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 <
|
|
1828
|
-
const val =
|
|
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: (
|
|
1847
|
-
if (
|
|
1846
|
+
Array: (arr7) => {
|
|
1847
|
+
if (arr7.length === 0) return 1;
|
|
1848
1848
|
let prod2 = 1;
|
|
1849
|
-
for (let i = 0; i <
|
|
1850
|
-
prod2 *=
|
|
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 (
|
|
1879
|
-
const data = toFloat64Array(
|
|
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": (
|
|
1921
|
-
return parallelStatNorm(toFloat64Array(
|
|
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
|
|
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] -
|
|
1973
|
+
mad2 += Math.abs(data[i] - mean6);
|
|
1974
1974
|
}
|
|
1975
1975
|
return mad2 / n;
|
|
1976
1976
|
},
|
|
1977
1977
|
// Number array
|
|
1978
|
-
Array: async (
|
|
1979
|
-
return parallelStatMAD(toFloat64Array(
|
|
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: (
|
|
1994
|
+
Array: (arr7) => {
|
|
1995
1995
|
const result = [];
|
|
1996
1996
|
let sum3 = 0;
|
|
1997
|
-
for (let i = 0; i <
|
|
1998
|
-
sum3 +=
|
|
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": (
|
|
2023
|
-
return parallelStatQuantile(toFloat64Array(
|
|
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 (
|
|
2047
|
-
return parallelStatHistogram(toFloat64Array(
|
|
2046
|
+
"Array, number": async (arr7, bins) => {
|
|
2047
|
+
return parallelStatHistogram(toFloat64Array(arr7), bins);
|
|
2048
2048
|
}
|
|
2049
2049
|
});
|
|
2050
|
-
function quickSelect(
|
|
2051
|
-
if (k < 0 || k >=
|
|
2052
|
-
throw new RangeError(`k=${k} is out of range for array of 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 =
|
|
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(
|
|
2098
|
-
const n =
|
|
2097
|
+
function medianSelect(arr7) {
|
|
2098
|
+
const n = arr7.length;
|
|
2099
2099
|
if (n === 0) return NaN;
|
|
2100
|
-
if (n === 1) return
|
|
2100
|
+
if (n === 1) return arr7[0];
|
|
2101
2101
|
const mid = Math.floor(n / 2);
|
|
2102
2102
|
if (n % 2 === 1) {
|
|
2103
|
-
return quickSelect(
|
|
2103
|
+
return quickSelect(arr7, mid);
|
|
2104
2104
|
}
|
|
2105
|
-
const a =
|
|
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(
|
|
2110
|
+
function minSelect(arr7, k) {
|
|
2111
2111
|
if (k <= 0) return [];
|
|
2112
|
-
if (k >=
|
|
2113
|
-
const a =
|
|
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(
|
|
2119
|
+
function maxSelect(arr7, k) {
|
|
2120
2120
|
if (k <= 0) return [];
|
|
2121
|
-
if (k >=
|
|
2122
|
-
const a =
|
|
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(
|
|
3893
|
-
return
|
|
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(
|
|
3943
|
+
function flattenArray(arr7) {
|
|
3944
3944
|
const result = [];
|
|
3945
|
-
const stack = [...
|
|
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
|
|
4605
|
+
const arr7 = [];
|
|
4606
4606
|
for (let i = 0; i < length; i++) {
|
|
4607
|
-
|
|
4607
|
+
arr7.push(0);
|
|
4608
4608
|
}
|
|
4609
|
-
return
|
|
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
|
|
5633
|
-
d = 1 +
|
|
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 +
|
|
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
|
-
|
|
5640
|
-
d = 1 +
|
|
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 +
|
|
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(
|
|
7923
|
+
function polyDivModJS(num2, den) {
|
|
7924
7924
|
if (den.length === 0) throw new Error("Division by zero polynomial");
|
|
7925
|
-
if (
|
|
7925
|
+
if (num2.length < den.length) {
|
|
7926
7926
|
return {
|
|
7927
7927
|
quotient: new Float64Array([0]),
|
|
7928
|
-
remainder: new Float64Array(
|
|
7928
|
+
remainder: new Float64Array(num2)
|
|
7929
7929
|
};
|
|
7930
7930
|
}
|
|
7931
|
-
const qLen =
|
|
7932
|
-
const work = new Float64Array(
|
|
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 =
|
|
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(
|
|
7966
|
+
function polyDivModDispatch(num2, den) {
|
|
7967
7967
|
if (den.length === 0) throw new Error("Division by zero polynomial");
|
|
7968
|
-
const bigEnough =
|
|
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
|
-
[
|
|
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 =
|
|
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(
|
|
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(
|
|
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 = [...
|
|
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
|
|
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(
|
|
8584
|
-
const rn =
|
|
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
|
|
8610
|
+
const num2 = a * d + c * b;
|
|
8611
8611
|
const den = b * d;
|
|
8612
|
-
const g = gcdNum(Math.abs(
|
|
8613
|
-
return
|
|
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
|
|
8620
|
+
const num2 = parseInt(match[1], 10);
|
|
8621
8621
|
const den = parseInt(match[2], 10);
|
|
8622
|
-
const whole = Math.trunc(
|
|
8623
|
-
const remainder =
|
|
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(
|
|
8719
|
-
if (index < 0 || index >=
|
|
8720
|
-
throw new Error("Index " + index + " out of bounds for array of 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
|
|
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
|
|
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
|
-
|
|
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
|
|
11688
|
+
const mean6 = new Float64Array(n);
|
|
11689
11689
|
for (const v of vectors) {
|
|
11690
|
-
for (let i = 0; i < n; i++)
|
|
11690
|
+
for (let i = 0; i < n; i++) mean6[i] += v[i];
|
|
11691
11691
|
}
|
|
11692
|
-
for (let i = 0; i < n; i++)
|
|
11692
|
+
for (let i = 0; i < n; i++) mean6[i] /= count2;
|
|
11693
11693
|
if (aggregation === "mean") {
|
|
11694
|
-
return { ranks:
|
|
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] -
|
|
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:
|
|
11705
|
+
ranks: mean6,
|
|
11706
11706
|
ranksPerRestart: vectors,
|
|
11707
|
-
restartStats: { mean:
|
|
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
|
|
11840
|
+
const mean6 = new Float64Array(n);
|
|
11841
11841
|
for (const v of vectors) {
|
|
11842
|
-
for (let i = 0; i < n; i++)
|
|
11842
|
+
for (let i = 0; i < n; i++) mean6[i] += v[i];
|
|
11843
11843
|
}
|
|
11844
|
-
for (let i = 0; i < n; i++)
|
|
11844
|
+
for (let i = 0; i < n; i++) mean6[i] /= count2;
|
|
11845
11845
|
if (aggregation === "mean") {
|
|
11846
|
-
return { centrality:
|
|
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] -
|
|
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:
|
|
11857
|
+
centrality: mean6,
|
|
11858
11858
|
centralityPerRestart: vectors,
|
|
11859
|
-
restartStats: { mean:
|
|
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
|
|
11932
|
+
const mean6 = new Float64Array(n);
|
|
11933
11933
|
for (const v of aligned) {
|
|
11934
|
-
for (let i = 0; i < n; i++)
|
|
11934
|
+
for (let i = 0; i < n; i++) mean6[i] += v[i];
|
|
11935
11935
|
}
|
|
11936
|
-
for (let i = 0; i < n; i++)
|
|
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 +=
|
|
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++)
|
|
11941
|
+
for (let i = 0; i < n; i++) mean6[i] /= norm4;
|
|
11942
11942
|
}
|
|
11943
11943
|
if (aggregation === "mean") {
|
|
11944
|
-
return { centrality:
|
|
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] -
|
|
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:
|
|
11955
|
+
centrality: mean6,
|
|
11956
11956
|
centralityPerRestart: aligned,
|
|
11957
|
-
restartStats: { mean:
|
|
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
|
|
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(
|
|
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(
|
|
12713
|
-
for (let 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 =
|
|
12716
|
-
|
|
12717
|
-
|
|
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
|
|
12725
|
+
const mean6 = sum3 / n;
|
|
12726
12726
|
let sq = 0;
|
|
12727
|
-
for (let i = 0; i < n; i++) sq += (stats[i] -
|
|
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:
|
|
12729
|
+
return { bootstrapMean: mean6, bootstrapStd: std2 };
|
|
12730
12730
|
}
|
|
12731
|
-
function _mean(
|
|
12731
|
+
function _mean(arr7) {
|
|
12732
12732
|
let sum3 = 0;
|
|
12733
|
-
for (let i = 0; i <
|
|
12734
|
-
return sum3 /
|
|
12733
|
+
for (let i = 0; i < arr7.length; i++) sum3 += arr7[i];
|
|
12734
|
+
return sum3 / arr7.length;
|
|
12735
12735
|
}
|
|
12736
|
-
function _variance(
|
|
12737
|
-
const m = _mean(
|
|
12736
|
+
function _variance(arr7, ddof = 1) {
|
|
12737
|
+
const m = _mean(arr7);
|
|
12738
12738
|
let sum3 = 0;
|
|
12739
|
-
for (let i = 0; i <
|
|
12740
|
-
return sum3 / (
|
|
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
|
|
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 =
|
|
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: (
|
|
14837
|
-
"Array, number": (
|
|
14838
|
-
"Array, Array": (
|
|
14839
|
-
"Array, number, Array": (
|
|
14840
|
-
"Array, Array, number": (
|
|
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(
|
|
14843
|
-
if (
|
|
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 !==
|
|
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 <
|
|
14862
|
+
for (let j = 0; j < arr7.length; j++) {
|
|
14863
14863
|
r -= weights[j];
|
|
14864
14864
|
if (r < 0) {
|
|
14865
|
-
result2.push(
|
|
14865
|
+
result2.push(arr7[j]);
|
|
14866
14866
|
break;
|
|
14867
14867
|
}
|
|
14868
14868
|
}
|
|
14869
|
-
if (result2.length < i + 1) result2.push(
|
|
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(
|
|
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
|
|
16379
|
+
let arr7 = array;
|
|
16380
16380
|
if (isNumber(array) || isBigNumber(array)) {
|
|
16381
|
-
|
|
16381
|
+
arr7 = [array];
|
|
16382
16382
|
}
|
|
16383
16383
|
const _defaultValue = defaultValue !== void 0 ? defaultValue : 0;
|
|
16384
|
-
_resize(
|
|
16385
|
-
return
|
|
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
|
|
16487
|
-
while (Array.isArray(
|
|
16488
|
-
|
|
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
|
-
|
|
16496
|
+
arr7 = _squeeze(arr7, dims, 0);
|
|
16497
16497
|
s.length = dims;
|
|
16498
16498
|
}
|
|
16499
|
-
return
|
|
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
|
|
16505
|
-
for (let i = 0, ii =
|
|
16506
|
-
|
|
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
|
|
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(
|
|
16532
|
-
for (let i = 0; i <
|
|
16533
|
-
const item =
|
|
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(
|
|
16542
|
-
if (Array.isArray(
|
|
16543
|
-
for (let i = 0; i <
|
|
16544
|
-
_flattenRectangular(
|
|
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 <
|
|
16548
|
-
flat.push(
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
17115
|
+
({ typed: typed3, config, Complex: Complex12 }) => {
|
|
17116
17116
|
function complexLog2Number(x) {
|
|
17117
|
-
return _log2Complex(new
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
17528
|
+
const arr7 = [0];
|
|
17529
17529
|
for (let i = 0; i < str.length; ) {
|
|
17530
|
-
let arrL =
|
|
17530
|
+
let arrL = arr7.length;
|
|
17531
17531
|
while (arrL--) {
|
|
17532
|
-
|
|
17532
|
+
arr7[arrL] *= 10;
|
|
17533
17533
|
}
|
|
17534
|
-
|
|
17535
|
-
for (let j2 = 0; j2 <
|
|
17536
|
-
if (
|
|
17537
|
-
if (
|
|
17538
|
-
|
|
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
|
-
|
|
17541
|
-
|
|
17540
|
+
arr7[j2 + 1] += arr7[j2] >> 1;
|
|
17541
|
+
arr7[j2] &= 1;
|
|
17542
17542
|
}
|
|
17543
17543
|
}
|
|
17544
17544
|
}
|
|
17545
|
-
return
|
|
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
|
|
18046
|
-
return offsets[arrayIndex] > depth ? array :
|
|
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
|
|
18057
|
-
return
|
|
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:
|
|
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(
|
|
18267
|
+
Array: function(arr7) {
|
|
18268
18268
|
const wasm = wasmLoader.getModule();
|
|
18269
|
-
if (wasm &&
|
|
18269
|
+
if (wasm && arr7.length >= 100 && arr7.every((x) => typeof x === "number")) {
|
|
18270
18270
|
try {
|
|
18271
|
-
const input = new Float64Array(
|
|
18271
|
+
const input = new Float64Array(arr7);
|
|
18272
18272
|
const inputAlloc = wasmLoader.allocateFloat64Array(input);
|
|
18273
|
-
const resultAlloc = wasmLoader.allocateFloat64ArrayEmpty(
|
|
18273
|
+
const resultAlloc = wasmLoader.allocateFloat64ArrayEmpty(arr7.length);
|
|
18274
18274
|
try {
|
|
18275
|
-
wasm.lgammaArray(inputAlloc.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
|
|
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
|
|
18299
|
+
return new Complex12(NaN, NaN);
|
|
18300
18300
|
} else if (n.im === 0) {
|
|
18301
|
-
return new
|
|
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
|
|
18308
|
-
return new
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
18819
|
+
return new Complex12(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);
|
|
18820
18820
|
}
|
|
18821
|
-
return new
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
18958
|
+
return new Complex12(Math.log(ret - xInv), Math.PI);
|
|
18959
18959
|
}
|
|
18960
|
-
return new
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
19328
|
-
return
|
|
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
|
|
19854
|
-
if (
|
|
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(
|
|
19901
|
-
for (let i = 0; i <
|
|
19902
|
-
if (typeof
|
|
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
|
|
20098
|
-
if (isNaN(
|
|
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
|
|
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
|
|
20118
|
-
if (isNaN(
|
|
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
|
|
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
|
|
20420
|
+
const arr7 = [];
|
|
20421
20421
|
if (size2.length > 0) {
|
|
20422
|
-
return resize(
|
|
20422
|
+
return resize(arr7, size2, dflt);
|
|
20423
20423
|
}
|
|
20424
|
-
return
|
|
20424
|
+
return arr7;
|
|
20425
20425
|
}
|
|
20426
20426
|
}
|
|
20427
20427
|
function _normalize(size2) {
|
|
20428
20428
|
let hasBigNumbers = false;
|
|
20429
|
-
size2.forEach(function(value, index,
|
|
20429
|
+
size2.forEach(function(value, index, arr7) {
|
|
20430
20430
|
if (isBigNumber(value)) {
|
|
20431
20431
|
hasBigNumbers = true;
|
|
20432
|
-
|
|
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(
|
|
20560
|
-
for (let i = 0; i <
|
|
20561
|
-
const row2 =
|
|
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(
|
|
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] =
|
|
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(
|
|
20717
|
-
if (
|
|
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 =
|
|
20720
|
+
const allMatrix = arr7.every(
|
|
20721
20721
|
(item) => typeof item.toArray === "function"
|
|
20722
20722
|
);
|
|
20723
|
-
const hasArray =
|
|
20724
|
-
const arrays =
|
|
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(
|
|
20736
|
-
if (
|
|
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(
|
|
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
|
|
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(
|
|
20786
|
-
if (
|
|
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 =
|
|
20789
|
+
const allMatrix = arr7.every(
|
|
20790
20790
|
(item) => typeof item.toArray === "function"
|
|
20791
20791
|
);
|
|
20792
|
-
const hasArray =
|
|
20793
|
-
const arrays =
|
|
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(
|
|
20805
|
-
if (
|
|
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(
|
|
20807
|
+
const N = checkVectorTypeAndReturnLength(arr7[0]);
|
|
20808
20808
|
const result = [];
|
|
20809
|
-
for (const row2 of
|
|
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:
|
|
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
|
|
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
|
|
22901
|
-
new
|
|
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:
|
|
22950
|
+
Complex: Complex12
|
|
22951
22951
|
}) => {
|
|
22952
22952
|
const _calculateExactResult = [
|
|
22953
22953
|
function realPos(val) {
|
|
22954
|
-
return new
|
|
22954
|
+
return new Complex12(val, 0);
|
|
22955
22955
|
},
|
|
22956
22956
|
function imagPos(val) {
|
|
22957
|
-
return new
|
|
22957
|
+
return new Complex12(0, val);
|
|
22958
22958
|
},
|
|
22959
22959
|
function realNeg(val) {
|
|
22960
|
-
return new
|
|
22960
|
+
return new Complex12(-val, 0);
|
|
22961
22961
|
},
|
|
22962
22962
|
function imagNeg(val) {
|
|
22963
|
-
return new
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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(
|
|
23582
|
+
return matrix2(_inv4(matX.valueOf(), rows, cols), storage);
|
|
23583
23583
|
} else {
|
|
23584
|
-
return
|
|
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
|
|
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
|
|
23816
|
-
|
|
23817
|
-
const res = resize(
|
|
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:
|
|
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
|
|
24682
|
-
let den = [
|
|
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 =
|
|
24686
|
-
|
|
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 =
|
|
24691
|
-
den = _multiply2(den, [
|
|
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 <
|
|
24694
|
-
|
|
24693
|
+
for (let i = 0; i < num2.length; i++) {
|
|
24694
|
+
num2[i] = multiply2(num2[i], k);
|
|
24695
24695
|
}
|
|
24696
|
-
return [
|
|
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] =
|
|
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(
|
|
24716
|
-
for (let i = 0; i <
|
|
24717
|
-
if (typeof
|
|
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(
|
|
24829
|
-
for (let i = 0; i <
|
|
24830
|
-
if (typeof
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
27843
|
-
for (let i = 0; i <
|
|
27844
|
-
if (typeof
|
|
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(
|
|
27887
|
-
if (k >=
|
|
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 <
|
|
27891
|
-
if (isNumeric2(
|
|
27892
|
-
return
|
|
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 &&
|
|
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 ?
|
|
27902
|
-
const data = wasmLoader.allocateFloat64Array(
|
|
27903
|
-
const work = wasmLoader.allocateFloat64ArrayEmpty(
|
|
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,
|
|
27906
|
-
for (let i = 0; i <
|
|
27907
|
-
|
|
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 =
|
|
27919
|
+
let to3 = arr7.length - 1;
|
|
27920
27920
|
while (from < to3) {
|
|
27921
27921
|
let r = from;
|
|
27922
27922
|
let w = to3;
|
|
27923
|
-
const pivot =
|
|
27923
|
+
const pivot = arr7[Math.floor(Math.random() * (to3 - from + 1)) + from];
|
|
27924
27924
|
while (r < w) {
|
|
27925
|
-
if (compare3(
|
|
27926
|
-
const tmp =
|
|
27927
|
-
|
|
27928
|
-
|
|
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(
|
|
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
|
|
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:
|
|
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,
|
|
28074
|
+
return equal2(add2(x, Complex12(1, 1)), add2(0, Complex12(1, 1)));
|
|
28075
28075
|
}
|
|
28076
|
-
function _isZeros(
|
|
28076
|
+
function _isZeros(arr7) {
|
|
28077
28077
|
return deepEqual3(
|
|
28078
|
-
add2(
|
|
28079
|
-
add2(multiply2(
|
|
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(
|
|
28396
|
+
function _out(arr7) {
|
|
28397
28397
|
if (config.matrix === "Matrix") {
|
|
28398
|
-
return matrix2 ? matrix2(
|
|
28398
|
+
return matrix2 ? matrix2(arr7) : noMatrix();
|
|
28399
28399
|
}
|
|
28400
|
-
return
|
|
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(
|
|
28433
|
-
return isNaN(
|
|
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:
|
|
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
|
|
28478
|
-
const r = new
|
|
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
|
|
28480
|
+
return new Complex12(Math.PI).div(r.sin()).div(gammaT);
|
|
28481
28481
|
}
|
|
28482
|
-
const z = new
|
|
28483
|
-
let x = new
|
|
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
|
|
28485
|
+
const gammaPval = new Complex12(gammaP[i], 0);
|
|
28486
28486
|
x = x.add(gammaPval.div(z.add(i)));
|
|
28487
28487
|
}
|
|
28488
|
-
const t = new
|
|
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(
|
|
28708
|
-
for (let i = 0; i <
|
|
28709
|
-
if (typeof
|
|
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(
|
|
28787
|
-
for (let i = 0; i <
|
|
28788
|
-
if (typeof
|
|
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 = (
|
|
28874
|
-
return matrix2(
|
|
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(
|
|
29187
|
-
if (!_pairwise(
|
|
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(
|
|
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
|
|
29201
|
-
return _isNumber(
|
|
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
|
|
29208
|
-
return _isNumber(
|
|
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
|
|
29221
|
-
return _isNumber(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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:
|
|
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
|
|
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:
|
|
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(
|
|
30159
|
+
string: (expr) => _ensureNode(foldFraction(parse3(expr), {})),
|
|
30160
30160
|
"string, Object": function(expr, options) {
|
|
30161
|
-
return _ensureNode(foldFraction(
|
|
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(
|
|
30543
|
-
const n =
|
|
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 =
|
|
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(
|
|
30609
|
-
const size2 = arraySize(
|
|
30610
|
-
if (size2.length === 1) return _fft(
|
|
30608
|
+
function _ndFft(arr7) {
|
|
30609
|
+
const size2 = arraySize(arr7);
|
|
30610
|
+
if (size2.length === 1) return _fft(arr7, size2[0]);
|
|
30611
30611
|
return _1dFft(
|
|
30612
|
-
|
|
30612
|
+
arr7.map((slice) => _ndFft(slice)),
|
|
30613
30613
|
0
|
|
30614
30614
|
);
|
|
30615
30615
|
}
|
|
30616
|
-
function _1dFft(
|
|
30617
|
-
const size2 = arraySize(
|
|
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(
|
|
30621
|
+
result.push(_1dFft(arr7[i], dim - 1));
|
|
30622
30622
|
}
|
|
30623
30623
|
return result;
|
|
30624
30624
|
}
|
|
30625
|
-
if (size2.length === 1) return _fft(
|
|
30626
|
-
function _transpose(
|
|
30627
|
-
const size3 = arraySize(
|
|
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(
|
|
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(
|
|
30638
|
+
return _transpose(_1dFft(_transpose(arr7), 1));
|
|
30639
30639
|
}
|
|
30640
|
-
function _czt(
|
|
30641
|
-
const n =
|
|
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(
|
|
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(
|
|
30676
|
-
const length = len ??
|
|
30677
|
-
if (length === 1) return [
|
|
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(
|
|
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
|
-
|
|
30697
|
+
arr7.filter((_, i) => i % 2 === 0),
|
|
30698
30698
|
length / 2
|
|
30699
30699
|
),
|
|
30700
30700
|
..._fft(
|
|
30701
|
-
|
|
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(
|
|
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(
|
|
30988
|
-
const n =
|
|
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 =
|
|
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(
|
|
31020
|
-
const size2 = isMatrix(
|
|
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(
|
|
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(
|
|
31035
|
-
return
|
|
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(
|
|
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:
|
|
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:
|
|
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(
|
|
34947
|
-
if (isMatrix(
|
|
34948
|
-
return matrix2(_diff(
|
|
34946
|
+
"Array | Matrix": function(arr7) {
|
|
34947
|
+
if (isMatrix(arr7)) {
|
|
34948
|
+
return matrix2(_diff(arr7.toArray()));
|
|
34949
34949
|
} else {
|
|
34950
|
-
return _diff(
|
|
34950
|
+
return _diff(arr7);
|
|
34951
34951
|
}
|
|
34952
34952
|
},
|
|
34953
|
-
"Array | Matrix, number": function(
|
|
34953
|
+
"Array | Matrix, number": function(arr7, dim) {
|
|
34954
34954
|
if (!isInteger(dim)) throw new RangeError("Dimension must be a whole number");
|
|
34955
|
-
if (isMatrix(
|
|
34956
|
-
return matrix2(_recursive(
|
|
34955
|
+
if (isMatrix(arr7)) {
|
|
34956
|
+
return matrix2(_recursive(arr7.toArray(), dim));
|
|
34957
34957
|
} else {
|
|
34958
|
-
return _recursive(
|
|
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) => (
|
|
34965
|
-
"Matrix, BigNumber": typed3.referTo("Matrix,number", (selfMn) => (
|
|
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(
|
|
34968
|
-
if (isMatrix(
|
|
34969
|
-
|
|
34967
|
+
function _recursive(arr7, dim) {
|
|
34968
|
+
if (isMatrix(arr7)) {
|
|
34969
|
+
arr7 = arr7.toArray();
|
|
34970
34970
|
}
|
|
34971
|
-
if (!Array.isArray(
|
|
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
|
-
|
|
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(
|
|
34981
|
+
return _diff(arr7);
|
|
34982
34982
|
} else {
|
|
34983
34983
|
throw RangeError("Cannot have negative dimension");
|
|
34984
34984
|
}
|
|
34985
34985
|
}
|
|
34986
|
-
function _diff(
|
|
34986
|
+
function _diff(arr7) {
|
|
34987
34987
|
const result = [];
|
|
34988
|
-
const size2 =
|
|
34988
|
+
const size2 = arr7.length;
|
|
34989
34989
|
for (let i = 1; i < size2; i++) {
|
|
34990
|
-
result.push(_ElementDiff(
|
|
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
|
|
36076
|
+
const arr7 = _AAA(
|
|
36077
36077
|
x.valueOf(),
|
|
36078
36078
|
y.valueOf(),
|
|
36079
36079
|
plane.valueOf()
|
|
36080
36080
|
);
|
|
36081
|
-
return
|
|
36081
|
+
return arr7 === null ? null : matrix2(arr7);
|
|
36082
36082
|
},
|
|
36083
36083
|
"Matrix, Matrix, Matrix, Matrix": function(w, x, y, z) {
|
|
36084
|
-
const
|
|
36084
|
+
const arr7 = _AAAA(
|
|
36085
36085
|
w.valueOf(),
|
|
36086
36086
|
x.valueOf(),
|
|
36087
36087
|
y.valueOf(),
|
|
36088
36088
|
z.valueOf()
|
|
36089
36089
|
);
|
|
36090
|
-
return
|
|
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(
|
|
36157
|
-
if (
|
|
36158
|
-
if (
|
|
36159
|
-
if (
|
|
36160
|
-
return flatten4(
|
|
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
|
|
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(
|
|
36303
|
-
for (let i = 0; i <
|
|
36304
|
-
if (typeof
|
|
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
|
|
36357
|
+
let num2 = 0;
|
|
36358
36358
|
deepForEach2(array, function(value) {
|
|
36359
36359
|
try {
|
|
36360
36360
|
sum3 = sum3 === void 0 ? value : add2(sum3, value);
|
|
36361
|
-
|
|
36361
|
+
num2++;
|
|
36362
36362
|
} catch (err) {
|
|
36363
36363
|
throw improveErrorMessage(err, "mean", value);
|
|
36364
36364
|
}
|
|
36365
36365
|
});
|
|
36366
|
-
if (
|
|
36366
|
+
if (num2 === 0) {
|
|
36367
36367
|
throw new Error("Cannot calculate the mean of an empty array");
|
|
36368
36368
|
}
|
|
36369
|
-
return divide2(sum3,
|
|
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
|
|
36385
|
-
if (
|
|
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 (
|
|
36389
|
-
const mid =
|
|
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, (
|
|
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(
|
|
36437
|
-
for (let i = 0; i <
|
|
36438
|
-
if (typeof
|
|
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
|
|
36499
|
+
let num2 = 0;
|
|
36500
36500
|
deepForEach2(array, function(value) {
|
|
36501
36501
|
try {
|
|
36502
36502
|
sum3 = sum3 === void 0 ? value : add2(sum3, value);
|
|
36503
|
-
|
|
36503
|
+
num2++;
|
|
36504
36504
|
} catch (err) {
|
|
36505
36505
|
throw improveErrorMessage(err, "variance", value);
|
|
36506
36506
|
}
|
|
36507
36507
|
});
|
|
36508
|
-
if (
|
|
36509
|
-
const
|
|
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,
|
|
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,
|
|
36520
|
+
return divide2(sum3, num2);
|
|
36521
36521
|
case "biased":
|
|
36522
|
-
return divide2(sum3,
|
|
36522
|
+
return divide2(sum3, num2 + 1);
|
|
36523
36523
|
case "unbiased": {
|
|
36524
36524
|
const zero = isBigNumber(sum3) ? sum3.mul(0) : 0;
|
|
36525
|
-
return
|
|
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:
|
|
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(
|
|
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
|
|
36867
|
+
const num2 = [];
|
|
36868
36868
|
const den = [];
|
|
36869
36869
|
for (let i = 0; i < w.length; i++) {
|
|
36870
|
-
let sumNum =
|
|
36871
|
-
let sumDen =
|
|
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],
|
|
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],
|
|
36881
|
+
multiply2(a[j], Complex12(Math.cos(-j * w[i]), Math.sin(-j * w[i])))
|
|
36882
36882
|
);
|
|
36883
36883
|
}
|
|
36884
|
-
|
|
36884
|
+
num2.push(sumNum);
|
|
36885
36885
|
den.push(sumDen);
|
|
36886
36886
|
}
|
|
36887
36887
|
const h = [];
|
|
36888
|
-
for (let i = 0; i <
|
|
36889
|
-
h.push(divide2(
|
|
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
|
|
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] =
|
|
37874
|
+
result[i] = arr7[i];
|
|
37875
37875
|
}
|
|
37876
37876
|
return result;
|
|
37877
37877
|
}, writeVec2 = function(alloc, data) {
|
|
37878
|
-
const
|
|
37878
|
+
const arr7 = new Float64Array(wasm.memory.buffer, alloc.ptr, dim);
|
|
37879
37879
|
for (let i = 0; i < dim; i++) {
|
|
37880
|
-
|
|
37880
|
+
arr7[i] = data[i];
|
|
37881
37881
|
}
|
|
37882
37882
|
}, writeStage2 = function(stageIdx, data) {
|
|
37883
37883
|
const offset = stageIdx * dim;
|
|
37884
|
-
const
|
|
37884
|
+
const arr7 = new Float64Array(wasm.memory.buffer, stageAlloc.ptr, numStages * dim);
|
|
37885
37885
|
for (let i = 0; i < dim; i++) {
|
|
37886
|
-
|
|
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:
|
|
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
|
|
38218
|
+
return new Complex12(-0.5);
|
|
38219
38219
|
}
|
|
38220
38220
|
if (s.re === 1) {
|
|
38221
|
-
return new
|
|
38221
|
+
return new Complex12(NaN, NaN);
|
|
38222
38222
|
}
|
|
38223
38223
|
if (s.re === Infinity && s.im === 0) {
|
|
38224
|
-
return new
|
|
38224
|
+
return new Complex12(1);
|
|
38225
38225
|
}
|
|
38226
38226
|
if (s.im === Infinity || s.re === -Infinity) {
|
|
38227
|
-
return new
|
|
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(
|
|
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(
|
|
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(
|
|
38380
|
-
reduceToHessenberg(
|
|
38381
|
-
const { values, C } = iterateUntilTriangular(
|
|
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(
|
|
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(
|
|
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(
|
|
38409
|
-
rowNorm = addScalar2(rowNorm, abs2(
|
|
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
|
-
|
|
38436
|
-
|
|
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(
|
|
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 =
|
|
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 =
|
|
38469
|
-
|
|
38470
|
-
|
|
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 =
|
|
38473
|
-
|
|
38474
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
38517
|
+
const k = arr7[n - 1][n - 1];
|
|
38518
38518
|
for (let i = 0; i < n; i++) {
|
|
38519
|
-
|
|
38519
|
+
arr7[i][i] = subtract2(arr7[i][i], k);
|
|
38520
38520
|
}
|
|
38521
|
-
const { Q: Q2, R } = qr2(
|
|
38522
|
-
|
|
38521
|
+
const { Q: Q2, R } = qr2(arr7);
|
|
38522
|
+
arr7 = multiply2(R, Q2);
|
|
38523
38523
|
for (let i = 0; i < n; i++) {
|
|
38524
|
-
|
|
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(
|
|
38529
|
+
if (n === 1 || smaller2(abs2(arr7[n - 1][n - 2]), prec)) {
|
|
38530
38530
|
lastConvergenceBefore = 0;
|
|
38531
|
-
lambdas.push(
|
|
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
|
-
|
|
38541
|
+
arr7.pop();
|
|
38542
38542
|
for (let i = 0; i < n; i++) {
|
|
38543
|
-
|
|
38543
|
+
arr7[i].pop();
|
|
38544
38544
|
}
|
|
38545
|
-
} else if (n === 2 || smaller2(abs2(
|
|
38545
|
+
} else if (n === 2 || smaller2(abs2(arr7[n - 2][n - 3]), prec)) {
|
|
38546
38546
|
lastConvergenceBefore = 0;
|
|
38547
38547
|
const ll = eigenvalues2x2(
|
|
38548
|
-
|
|
38549
|
-
|
|
38550
|
-
|
|
38551
|
-
|
|
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
|
-
|
|
38558
|
-
|
|
38559
|
-
|
|
38560
|
-
|
|
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
|
-
|
|
38575
|
-
|
|
38574
|
+
arr7.pop();
|
|
38575
|
+
arr7.pop();
|
|
38576
38576
|
for (let i = 0; i < n; i++) {
|
|
38577
|
-
|
|
38578
|
-
|
|
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(
|
|
38684
|
-
for (let i = 0; i <
|
|
38685
|
-
|
|
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 =
|
|
38688
|
-
|
|
38689
|
-
|
|
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
|
|
38691
|
+
return arr7;
|
|
38692
38692
|
}
|
|
38693
|
-
function blockDiag(
|
|
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
|
|
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(
|
|
38711
|
-
for (let i = 0; i <
|
|
38712
|
-
if (fn(
|
|
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(
|
|
38825
|
+
function main(arr7, _N, prec = config.relTol, type, computeVectors) {
|
|
38826
38826
|
if (type === "number") {
|
|
38827
|
-
return diag2(
|
|
38827
|
+
return diag2(arr7, prec, computeVectors);
|
|
38828
38828
|
}
|
|
38829
38829
|
if (type === "BigNumber") {
|
|
38830
|
-
return diagBig(
|
|
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
|
|
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(
|
|
39299
|
-
coerceReal(
|
|
39300
|
-
if (isSymmetric(
|
|
39301
|
-
const type2 = coerceTypes(mat,
|
|
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
|
-
|
|
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,
|
|
39312
|
-
return doComplexEigs(
|
|
39311
|
+
const type = coerceTypes(mat, arr7, N);
|
|
39312
|
+
return doComplexEigs(arr7, N, prec, type, computeVectors);
|
|
39313
39313
|
}
|
|
39314
|
-
function isSymmetric(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
39334
|
+
function coerceReal(arr7, N) {
|
|
39335
39335
|
for (let i = 0; i < N; i++) {
|
|
39336
39336
|
for (let j = 0; j < N; j++) {
|
|
39337
|
-
|
|
39337
|
+
arr7[i][j] = re3(arr7[i][j]);
|
|
39338
39338
|
}
|
|
39339
39339
|
}
|
|
39340
39340
|
}
|
|
39341
|
-
function coerceTypes(mat,
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
39604
|
-
for (let i = 0; i <
|
|
39605
|
-
if (typeof
|
|
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(
|
|
39701
|
-
for (let i = 0; i <
|
|
39702
|
-
if (typeof
|
|
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(
|
|
39761
|
-
for (let i = 0; i <
|
|
39762
|
-
if (typeof
|
|
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:
|
|
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(
|
|
40206
|
-
newRule.r = removeParens(
|
|
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 =
|
|
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:
|
|
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 =
|
|
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(
|
|
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,
|
|
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(
|
|
40793
|
-
return
|
|
40792
|
+
"function, ParenthesisNode, string": function(isConst2, node, varName) {
|
|
40793
|
+
return isConst2(node.content, varName);
|
|
40794
40794
|
},
|
|
40795
|
-
"function, FunctionAssignmentNode, string": function(
|
|
40795
|
+
"function, FunctionAssignmentNode, string": function(isConst2, node, varName) {
|
|
40796
40796
|
if (!node.params.includes(varName)) {
|
|
40797
40797
|
return true;
|
|
40798
40798
|
}
|
|
40799
|
-
return
|
|
40799
|
+
return isConst2(node.expr, varName);
|
|
40800
40800
|
},
|
|
40801
|
-
"function, FunctionNode | OperatorNode, string": function(
|
|
40802
|
-
return node.args.every((arg3) =>
|
|
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,
|
|
40810
|
-
if (
|
|
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,
|
|
40816
|
-
return new ParenthesisNode(_derivative(node.content,
|
|
40815
|
+
"ParenthesisNode, function": function(node, isConst2) {
|
|
40816
|
+
return new ParenthesisNode(_derivative(node.content, isConst2));
|
|
40817
40817
|
},
|
|
40818
|
-
"FunctionAssignmentNode, function": function(node,
|
|
40819
|
-
if (
|
|
40818
|
+
"FunctionAssignmentNode, function": function(node, isConst2) {
|
|
40819
|
+
if (isConst2(node)) {
|
|
40820
40820
|
return createConstantNode2(0);
|
|
40821
40821
|
}
|
|
40822
|
-
return _derivative(node.expr,
|
|
40822
|
+
return _derivative(node.expr, isConst2);
|
|
40823
40823
|
},
|
|
40824
|
-
"FunctionNode, function": function(node,
|
|
40825
|
-
if (
|
|
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]),
|
|
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 &&
|
|
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
|
-
|
|
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]]),
|
|
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,
|
|
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,
|
|
41103
|
-
if (
|
|
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,
|
|
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],
|
|
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],
|
|
41124
|
-
_derivative(node.args[1],
|
|
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
|
|
41130
|
+
return isConst2(arg3);
|
|
41131
41131
|
});
|
|
41132
41132
|
if (constantTerms.length > 0) {
|
|
41133
41133
|
const nonConstantTerms = node.args.filter(function(arg3) {
|
|
41134
|
-
return !
|
|
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,
|
|
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,
|
|
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 (
|
|
41158
|
-
return new OperatorNode("/", "divide", [_derivative(arg0,
|
|
41157
|
+
if (isConst2(arg1)) {
|
|
41158
|
+
return new OperatorNode("/", "divide", [_derivative(arg0, isConst2), arg1]);
|
|
41159
41159
|
}
|
|
41160
|
-
if (
|
|
41160
|
+
if (isConst2(arg0)) {
|
|
41161
41161
|
return new OperatorNode("*", "multiply", [
|
|
41162
41162
|
new OperatorNode("-", "unaryMinus", [arg0]),
|
|
41163
41163
|
new OperatorNode("/", "divide", [
|
|
41164
|
-
_derivative(arg1,
|
|
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,
|
|
41172
|
-
new OperatorNode("*", "multiply", [arg0.clone(), _derivative(arg1,
|
|
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 (
|
|
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(),
|
|
41188
|
+
_derivative(arg1.clone(), isConst2)
|
|
41189
41189
|
])
|
|
41190
41190
|
]);
|
|
41191
41191
|
}
|
|
41192
|
-
if (
|
|
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,
|
|
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,
|
|
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,
|
|
41214
|
+
_derivative(arg0, isConst2),
|
|
41215
41215
|
new OperatorNode("/", "divide", [arg1.clone(), arg0.clone()])
|
|
41216
41216
|
]),
|
|
41217
41217
|
new OperatorNode("*", "multiply", [
|
|
41218
|
-
_derivative(arg1,
|
|
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
|
|
41302
|
-
const n =
|
|
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
|
|
41306
|
-
data[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
|
|
43678
|
+
const num2 = parseFloat(m[1]);
|
|
43679
43679
|
const den = parseFloat(m[2]);
|
|
43680
43680
|
const w = Math.sqrt(den);
|
|
43681
|
-
if (Math.abs(
|
|
43681
|
+
if (Math.abs(num2 - w) < 1e-10) {
|
|
43682
43682
|
return `sin(${formatCoeff(w)}*${t})`;
|
|
43683
43683
|
}
|
|
43684
|
-
return `${formatCoeff(
|
|
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
|
|
44133
|
-
if (Math.abs(alpha -
|
|
44134
|
-
if (den === 1) return `${varName} - ${
|
|
44135
|
-
return `${den}*${varName} - ${
|
|
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
|
|
44477
|
-
if (Math.abs(val -
|
|
44478
|
-
const g = iltGcd(Math.abs(
|
|
44479
|
-
const n =
|
|
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
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
45615
|
-
const my =
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
45651
|
-
|
|
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,
|