mathfuse 1.0.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +239 -0
  4. package/dist/cjs/algebra/index.d.ts +99 -0
  5. package/dist/cjs/algebra/index.d.ts.map +1 -0
  6. package/dist/cjs/algebra/index.js +358 -0
  7. package/dist/cjs/algebra/index.js.map +1 -0
  8. package/dist/cjs/index.d.ts +15 -0
  9. package/dist/cjs/index.d.ts.map +1 -0
  10. package/dist/cjs/index.js +82 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/number-theory/index.d.ts +81 -0
  13. package/dist/cjs/number-theory/index.d.ts.map +1 -0
  14. package/dist/cjs/number-theory/index.js +331 -0
  15. package/dist/cjs/number-theory/index.js.map +1 -0
  16. package/dist/cjs/numerical/index.d.ts +95 -0
  17. package/dist/cjs/numerical/index.d.ts.map +1 -0
  18. package/dist/cjs/numerical/index.js +300 -0
  19. package/dist/cjs/numerical/index.js.map +1 -0
  20. package/dist/cjs/stats/index.d.ts +32 -0
  21. package/dist/cjs/stats/index.d.ts.map +1 -0
  22. package/dist/cjs/stats/index.js +232 -0
  23. package/dist/cjs/stats/index.js.map +1 -0
  24. package/dist/esm/algebra/index.d.ts +99 -0
  25. package/dist/esm/algebra/index.d.ts.map +1 -0
  26. package/dist/esm/algebra/index.js +333 -0
  27. package/dist/esm/algebra/index.js.map +1 -0
  28. package/dist/esm/index.d.ts +15 -0
  29. package/dist/esm/index.d.ts.map +1 -0
  30. package/dist/esm/index.js +16 -0
  31. package/dist/esm/index.js.map +1 -0
  32. package/dist/esm/number-theory/index.d.ts +81 -0
  33. package/dist/esm/number-theory/index.d.ts.map +1 -0
  34. package/dist/esm/number-theory/index.js +311 -0
  35. package/dist/esm/number-theory/index.js.map +1 -0
  36. package/dist/esm/numerical/index.d.ts +95 -0
  37. package/dist/esm/numerical/index.d.ts.map +1 -0
  38. package/dist/esm/numerical/index.js +280 -0
  39. package/dist/esm/numerical/index.js.map +1 -0
  40. package/dist/esm/stats/index.d.ts +32 -0
  41. package/dist/esm/stats/index.d.ts.map +1 -0
  42. package/dist/esm/stats/index.js +208 -0
  43. package/dist/esm/stats/index.js.map +1 -0
  44. package/dist/types/algebra/index.d.ts +99 -0
  45. package/dist/types/algebra/index.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +15 -0
  47. package/dist/types/index.d.ts.map +1 -0
  48. package/dist/types/number-theory/index.d.ts +81 -0
  49. package/dist/types/number-theory/index.d.ts.map +1 -0
  50. package/dist/types/numerical/index.d.ts +95 -0
  51. package/dist/types/numerical/index.d.ts.map +1 -0
  52. package/dist/types/stats/index.d.ts +32 -0
  53. package/dist/types/stats/index.d.ts.map +1 -0
  54. package/package.json +85 -0
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Bisection method — guaranteed convergence on a bracketed root.
3
+ * @param f - continuous function
4
+ * @param a - left bracket
5
+ * @param b - right bracket (f(a) and f(b) must have opposite signs)
6
+ */
7
+ export function bisection(f, a, b, tol = 1e-10, maxIter = 100) {
8
+ if (f(a) * f(b) > 0) {
9
+ throw new RangeError('f(a) and f(b) must have opposite signs (bracket the root)');
10
+ }
11
+ let lo = a, hi = b, mid = a, iter = 0;
12
+ while (iter < maxIter) {
13
+ mid = (lo + hi) / 2;
14
+ const fmid = f(mid);
15
+ const error = (hi - lo) / 2;
16
+ if (error < tol || fmid === 0) {
17
+ return { root: mid, iterations: iter + 1, converged: true, error };
18
+ }
19
+ if (f(lo) * fmid < 0)
20
+ hi = mid;
21
+ else
22
+ lo = mid;
23
+ iter++;
24
+ }
25
+ return { root: mid, iterations: maxIter, converged: false, error: (hi - lo) / 2 };
26
+ }
27
+ /**
28
+ * Newton-Raphson method — fast quadratic convergence near smooth roots.
29
+ * @param f - function
30
+ * @param df - derivative (if omitted, estimated numerically)
31
+ */
32
+ export function newtonRaphson(f, x0, df, tol = 1e-10, maxIter = 100) {
33
+ const h = 1e-7;
34
+ const deriv = df ?? ((x) => (f(x + h) - f(x - h)) / (2 * h));
35
+ let x = x0;
36
+ for (let iter = 0; iter < maxIter; iter++) {
37
+ const fx = f(x);
38
+ const dfx = deriv(x);
39
+ if (Math.abs(dfx) < 1e-14)
40
+ throw new RangeError('derivative is zero — Newton-Raphson failed');
41
+ const dx = fx / dfx;
42
+ x -= dx;
43
+ if (Math.abs(dx) < tol) {
44
+ return { root: x, iterations: iter + 1, converged: true, error: Math.abs(dx) };
45
+ }
46
+ }
47
+ return { root: x, iterations: maxIter, converged: false, error: Math.abs(f(x)) };
48
+ }
49
+ /**
50
+ * Brent's method — combines bisection, secant, and inverse quadratic interpolation.
51
+ * Robust and fast — the recommended general-purpose root finder.
52
+ */
53
+ export function brent(f, a, b, tol = 1e-10, maxIter = 100) {
54
+ let fa = f(a), fb = f(b);
55
+ if (fa * fb > 0) {
56
+ throw new RangeError('f(a) and f(b) must have opposite signs');
57
+ }
58
+ if (Math.abs(fa) < Math.abs(fb)) {
59
+ [a, b] = [b, a];
60
+ [fa, fb] = [fb, fa];
61
+ }
62
+ let c = a, fc = fa, s = 0;
63
+ let mflag = true, d = 0;
64
+ for (let iter = 0; iter < maxIter; iter++) {
65
+ if (Math.abs(b - a) < tol) {
66
+ return { root: b, iterations: iter + 1, converged: true, error: Math.abs(b - a) };
67
+ }
68
+ if (fa !== fc && fb !== fc) {
69
+ s = (a * fb * fc) / ((fa - fb) * (fa - fc)) +
70
+ (b * fa * fc) / ((fb - fa) * (fb - fc)) +
71
+ (c * fa * fb) / ((fc - fa) * (fc - fb));
72
+ }
73
+ else {
74
+ s = b - fb * (b - a) / (fb - fa);
75
+ }
76
+ const cond1 = (s < (3 * a + b) / 4 || s > b);
77
+ const cond2 = mflag && Math.abs(s - b) >= Math.abs(b - c) / 2;
78
+ const cond3 = !mflag && Math.abs(s - b) >= Math.abs(c - d) / 2;
79
+ if (cond1 || cond2 || cond3) {
80
+ s = (a + b) / 2;
81
+ mflag = true;
82
+ }
83
+ else {
84
+ mflag = false;
85
+ }
86
+ const fs = f(s);
87
+ d = c;
88
+ c = b;
89
+ fc = fb;
90
+ if (fa * fs < 0) {
91
+ b = s;
92
+ fb = fs;
93
+ }
94
+ else {
95
+ a = s;
96
+ fa = fs;
97
+ }
98
+ if (Math.abs(fa) < Math.abs(fb)) {
99
+ [a, b] = [b, a];
100
+ [fa, fb] = [fb, fa];
101
+ }
102
+ }
103
+ return { root: b, iterations: maxIter, converged: false, error: Math.abs(f(b)) };
104
+ }
105
+ // ─── Numerical Differentiation ────────────────────────────────────────────────
106
+ /**
107
+ * First derivative using central differences (O(h²) accuracy).
108
+ */
109
+ export function derivative(f, x, h = 1e-5) {
110
+ return (f(x + h) - f(x - h)) / (2 * h);
111
+ }
112
+ /**
113
+ * Second derivative using central differences.
114
+ */
115
+ export function secondDerivative(f, x, h = 1e-4) {
116
+ return (f(x + h) - 2 * f(x) + f(x - h)) / h ** 2;
117
+ }
118
+ /**
119
+ * Gradient of a multivariate function at point x.
120
+ * @param f - function accepting a vector and returning a scalar
121
+ * @param x - point at which to compute the gradient
122
+ */
123
+ export function gradient(f, x, h = 1e-5) {
124
+ return x.map((_, i) => {
125
+ const xp = [...x];
126
+ xp[i] += h;
127
+ const xm = [...x];
128
+ xm[i] -= h;
129
+ return (f(xp) - f(xm)) / (2 * h);
130
+ });
131
+ }
132
+ // ─── Numerical Integration ────────────────────────────────────────────────────
133
+ /**
134
+ * Adaptive Simpson's rule — highly accurate for smooth functions.
135
+ */
136
+ export function integrate(f, a, b, tol = 1e-8, maxDepth = 50) {
137
+ function simpsonRule(fa, fm, fb, width) {
138
+ return (width / 6) * (fa + 4 * fm + fb);
139
+ }
140
+ function adaptive(x0, x1, fa, fm, fb, whole, depth) {
141
+ const mid = (x0 + x1) / 2;
142
+ const m0 = (x0 + mid) / 2;
143
+ const m1 = (mid + x1) / 2;
144
+ const fm0 = f(m0);
145
+ const fm1 = f(m1);
146
+ const leftV = simpsonRule(fa, fm0, fm, mid - x0);
147
+ const rightV = simpsonRule(fm, fm1, fb, x1 - mid);
148
+ const delta = leftV + rightV - whole;
149
+ if (depth >= maxDepth || Math.abs(delta) <= 15 * tol) {
150
+ return leftV + rightV + delta / 15;
151
+ }
152
+ return (adaptive(x0, mid, fa, fm0, fm, leftV, depth + 1) +
153
+ adaptive(mid, x1, fm, fm1, fb, rightV, depth + 1));
154
+ }
155
+ const mid = (a + b) / 2;
156
+ const fa = f(a), fm = f(mid), fb = f(b);
157
+ const whole = simpsonRule(fa, fm, fb, b - a);
158
+ return adaptive(a, b, fa, fm, fb, whole, 0);
159
+ }
160
+ /**
161
+ * Gauss-Legendre quadrature (5-point) — excellent for polynomials and smooth functions.
162
+ * @param f - function to integrate
163
+ * @param a - lower bound
164
+ * @param b - upper bound
165
+ */
166
+ export function gaussLegendre(f, a, b) {
167
+ // 5-point GL nodes and weights on [-1, 1]
168
+ const nodes = [
169
+ -0.9061798459386640, -0.5384693101056831, 0,
170
+ 0.5384693101056831, 0.9061798459386640,
171
+ ];
172
+ const weights = [
173
+ 0.2369268850561891, 0.4786286704993665, 0.5688888888888889,
174
+ 0.4786286704993665, 0.2369268850561891,
175
+ ];
176
+ const half = (b - a) / 2;
177
+ const mid = (a + b) / 2;
178
+ return half * nodes.reduce((s, t, i) => s + weights[i] * f(mid + half * t), 0);
179
+ }
180
+ // ─── Interpolation ────────────────────────────────────────────────────────────
181
+ /**
182
+ * Linear interpolation between two points.
183
+ */
184
+ export function lerp(a, b, t) {
185
+ return a + (b - a) * t;
186
+ }
187
+ /**
188
+ * Inverse lerp — find t such that lerp(a, b, t) === value.
189
+ */
190
+ export function inverseLerp(a, b, value) {
191
+ if (a === b)
192
+ throw new RangeError('a and b must be different for inverse lerp');
193
+ return (value - a) / (b - a);
194
+ }
195
+ /**
196
+ * Linear interpolation from a data table (sorted x values required).
197
+ * @param xs - sorted x values
198
+ * @param ys - corresponding y values
199
+ * @param x - query x value
200
+ */
201
+ export function tableInterpolate(xs, ys, x) {
202
+ if (xs.length !== ys.length || xs.length < 2) {
203
+ throw new RangeError('xs and ys must have equal length >= 2');
204
+ }
205
+ if (x <= xs[0])
206
+ return ys[0];
207
+ if (x >= xs[xs.length - 1])
208
+ return ys[ys.length - 1];
209
+ let lo = 0, hi = xs.length - 1;
210
+ while (hi - lo > 1) {
211
+ const mid = (lo + hi) >> 1;
212
+ if (xs[mid] <= x)
213
+ lo = mid;
214
+ else
215
+ hi = mid;
216
+ }
217
+ return ys[lo] + ((x - xs[lo]) / (xs[hi] - xs[lo])) * (ys[hi] - ys[lo]);
218
+ }
219
+ /**
220
+ * Lagrange polynomial interpolation at a query point.
221
+ */
222
+ export function lagrange(xs, ys, x) {
223
+ if (xs.length !== ys.length)
224
+ throw new RangeError('xs and ys must have equal length');
225
+ const n = xs.length;
226
+ let result = 0;
227
+ for (let i = 0; i < n; i++) {
228
+ let term = ys[i];
229
+ for (let j = 0; j < n; j++) {
230
+ if (j !== i) {
231
+ if (xs[i] === xs[j])
232
+ throw new RangeError('xs must have distinct values');
233
+ term *= (x - xs[j]) / (xs[i] - xs[j]);
234
+ }
235
+ }
236
+ result += term;
237
+ }
238
+ return result;
239
+ }
240
+ // ─── Misc Numerical Utilities ─────────────────────────────────────────────────
241
+ /**
242
+ * Clamp a value to [min, max].
243
+ */
244
+ export function clamp(value, min, max) {
245
+ return Math.min(max, Math.max(min, value));
246
+ }
247
+ /**
248
+ * Round to n decimal places.
249
+ */
250
+ export function roundTo(value, decimals) {
251
+ const factor = 10 ** decimals;
252
+ return Math.round(value * factor) / factor;
253
+ }
254
+ /**
255
+ * Check if two floats are approximately equal.
256
+ */
257
+ export function approxEqual(a, b, relTol = 1e-9, absTol = 0) {
258
+ return Math.abs(a - b) <= Math.max(relTol * Math.max(Math.abs(a), Math.abs(b)), absTol);
259
+ }
260
+ /**
261
+ * Map a value from one range to another.
262
+ * @example remap(5, 0, 10, 0, 100) // 50
263
+ */
264
+ export function remap(value, inMin, inMax, outMin, outMax) {
265
+ return outMin + ((value - inMin) / (inMax - inMin)) * (outMax - outMin);
266
+ }
267
+ /**
268
+ * Sum of an array using compensated Kahan summation (reduces floating-point error).
269
+ */
270
+ export function kahanSum(data) {
271
+ let sum = 0, comp = 0;
272
+ for (const v of data) {
273
+ const y = v - comp;
274
+ const t = sum + y;
275
+ comp = t - sum - y;
276
+ sum = t;
277
+ }
278
+ return sum;
279
+ }
280
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/numerical/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module stats
3
+ * Descriptive statistics, correlation, normalization, and regression.
4
+ */
5
+ export declare function mean(data: number[]): number;
6
+ export declare function geometricMean(data: number[]): number;
7
+ export declare function harmonicMean(data: number[]): number;
8
+ export declare function median(data: number[]): number;
9
+ export declare function mode(data: number[]): number[];
10
+ export declare function weightedMean(data: number[], weights: number[]): number;
11
+ export declare function variance(data: number[], population?: boolean): number;
12
+ export declare function stdDev(data: number[], population?: boolean): number;
13
+ export declare function range(data: number[]): number;
14
+ export declare function iqr(data: number[]): number;
15
+ export declare function mad(data: number[]): number;
16
+ export declare function percentile(data: number[], p: number): number;
17
+ export declare function fiveNumberSummary(data: number[]): [number, number, number, number, number];
18
+ export declare function skewness(data: number[]): number;
19
+ export declare function kurtosis(data: number[]): number;
20
+ export declare function covariance(x: number[], y: number[]): number;
21
+ export declare function pearsonCorrelation(x: number[], y: number[]): number;
22
+ export declare function spearmanCorrelation(x: number[], y: number[]): number;
23
+ export declare function zScore(data: number[]): number[];
24
+ export declare function minMaxNormalize(data: number[]): number[];
25
+ export interface RegressionResult {
26
+ slope: number;
27
+ intercept: number;
28
+ r2: number;
29
+ predict: (x: number) => number;
30
+ }
31
+ export declare function linearRegression(x: number[], y: number[]): RegressionResult;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stats/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG3C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7C;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAOtE;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,GAAG,MAAM,CAQnE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,GAAG,MAAM,CAEjE;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG5C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG1C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1C;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAU1F;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAa/C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAW/C;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM3D;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAInE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBpE;AAID,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAI/C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOxD;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAkB3E"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @module stats
3
+ * Descriptive statistics, correlation, normalization, and regression.
4
+ */
5
+ // ─── Helpers ────────────────────────────────────────────────────────────────
6
+ function assertNonEmpty(data, label = 'data') {
7
+ if (data.length === 0)
8
+ throw new RangeError(`${label} must be non-empty`);
9
+ }
10
+ // ─── Central Tendency ───────────────────────────────────────────────────────
11
+ export function mean(data) {
12
+ assertNonEmpty(data);
13
+ return data.reduce((s, v) => s + v, 0) / data.length;
14
+ }
15
+ export function geometricMean(data) {
16
+ assertNonEmpty(data);
17
+ if (data.some((v) => v <= 0)) {
18
+ throw new RangeError('geometricMean requires all values to be positive');
19
+ }
20
+ const logSum = data.reduce((s, v) => s + Math.log(v), 0);
21
+ return Math.exp(logSum / data.length);
22
+ }
23
+ export function harmonicMean(data) {
24
+ assertNonEmpty(data);
25
+ if (data.some((v) => v === 0)) {
26
+ throw new RangeError('harmonicMean requires all values to be non-zero');
27
+ }
28
+ const recipSum = data.reduce((s, v) => s + 1 / v, 0);
29
+ return data.length / recipSum;
30
+ }
31
+ export function median(data) {
32
+ assertNonEmpty(data);
33
+ const sorted = [...data].sort((a, b) => a - b);
34
+ const mid = Math.floor(sorted.length / 2);
35
+ return sorted.length % 2 !== 0
36
+ ? sorted[mid]
37
+ : (sorted[mid - 1] + sorted[mid]) / 2;
38
+ }
39
+ export function mode(data) {
40
+ assertNonEmpty(data);
41
+ const freq = new Map();
42
+ for (const v of data)
43
+ freq.set(v, (freq.get(v) ?? 0) + 1);
44
+ const maxFreq = Math.max(...freq.values());
45
+ return [...freq.entries()]
46
+ .filter(([, f]) => f === maxFreq)
47
+ .map(([v]) => v)
48
+ .sort((a, b) => a - b);
49
+ }
50
+ export function weightedMean(data, weights) {
51
+ assertNonEmpty(data);
52
+ if (data.length !== weights.length) {
53
+ throw new RangeError('data and weights must have equal length');
54
+ }
55
+ const wSum = weights.reduce((s, w) => s + w, 0);
56
+ return data.reduce((s, v, i) => s + v * weights[i], 0) / wSum;
57
+ }
58
+ // ─── Spread ─────────────────────────────────────────────────────────────────
59
+ export function variance(data, population = false) {
60
+ assertNonEmpty(data);
61
+ if (!population && data.length < 2) {
62
+ throw new RangeError('sample variance requires at least 2 data points');
63
+ }
64
+ const m = mean(data);
65
+ const sum = data.reduce((s, v) => s + (v - m) ** 2, 0);
66
+ return sum / (population ? data.length : data.length - 1);
67
+ }
68
+ export function stdDev(data, population = false) {
69
+ return Math.sqrt(variance(data, population));
70
+ }
71
+ export function range(data) {
72
+ assertNonEmpty(data);
73
+ return Math.max(...data) - Math.min(...data);
74
+ }
75
+ export function iqr(data) {
76
+ assertNonEmpty(data);
77
+ return percentile(data, 75) - percentile(data, 25);
78
+ }
79
+ export function mad(data) {
80
+ assertNonEmpty(data);
81
+ const m = median(data);
82
+ return median(data.map((v) => Math.abs(v - m)));
83
+ }
84
+ // ─── Percentile ─────────────────────────────────────────────────────────────
85
+ export function percentile(data, p) {
86
+ assertNonEmpty(data);
87
+ const sorted = [...data].sort((a, b) => a - b);
88
+ const idx = (p / 100) * (sorted.length - 1);
89
+ const lo = Math.floor(idx);
90
+ const hi = Math.ceil(idx);
91
+ return sorted[lo] + (idx - lo) * (sorted[hi] - sorted[lo]);
92
+ }
93
+ export function fiveNumberSummary(data) {
94
+ assertNonEmpty(data);
95
+ const sorted = [...data].sort((a, b) => a - b);
96
+ return [
97
+ sorted[0],
98
+ percentile(data, 25),
99
+ median(data),
100
+ percentile(data, 75),
101
+ sorted[sorted.length - 1],
102
+ ];
103
+ }
104
+ // ─── Shape ──────────────────────────────────────────────────────────────────
105
+ export function skewness(data) {
106
+ assertNonEmpty(data);
107
+ if (data.length < 3) {
108
+ throw new RangeError('skewness requires at least 3 data points');
109
+ }
110
+ const m = mean(data);
111
+ const s = stdDev(data);
112
+ if (s === 0)
113
+ return 0;
114
+ const n = data.length;
115
+ return ((n / ((n - 1) * (n - 2))) *
116
+ data.reduce((sum, v) => sum + ((v - m) / s) ** 3, 0));
117
+ }
118
+ export function kurtosis(data) {
119
+ assertNonEmpty(data);
120
+ if (data.length < 4) {
121
+ throw new RangeError('kurtosis requires at least 4 data points');
122
+ }
123
+ const m = mean(data);
124
+ const s = stdDev(data, true);
125
+ if (s === 0)
126
+ return 0;
127
+ const n = data.length;
128
+ const k4 = data.reduce((sum, v) => sum + ((v - m) / s) ** 4, 0);
129
+ return k4 / n - 3;
130
+ }
131
+ // ─── Correlation & Covariance ───────────────────────────────────────────────
132
+ export function covariance(x, y) {
133
+ if (x.length !== y.length)
134
+ throw new RangeError('x and y must have equal length');
135
+ assertNonEmpty(x);
136
+ if (x.length < 2)
137
+ throw new RangeError('covariance requires at least 2 data points');
138
+ const mx = mean(x), my = mean(y);
139
+ return x.reduce((s, v, i) => s + (v - mx) * (y[i] - my), 0) / (x.length - 1);
140
+ }
141
+ export function pearsonCorrelation(x, y) {
142
+ const sx = stdDev(x), sy = stdDev(y);
143
+ if (sx === 0 || sy === 0)
144
+ return 0;
145
+ return covariance(x, y) / (sx * sy);
146
+ }
147
+ export function spearmanCorrelation(x, y) {
148
+ if (x.length !== y.length)
149
+ throw new RangeError('x and y must have equal length');
150
+ const rankArr = (arr) => {
151
+ const sorted = [...arr].sort((a, b) => a - b);
152
+ const ranks = new Array(arr.length);
153
+ // Build rank map with average ranks for ties
154
+ const rankMap = new Map();
155
+ let i = 0;
156
+ while (i < sorted.length) {
157
+ let j = i;
158
+ while (j < sorted.length && sorted[j] === sorted[i])
159
+ j++;
160
+ const avgRank = (i + 1 + j) / 2; // average of 1-indexed positions
161
+ rankMap.set(sorted[i], avgRank);
162
+ i = j;
163
+ }
164
+ for (let k = 0; k < arr.length; k++) {
165
+ ranks[k] = rankMap.get(arr[k]);
166
+ }
167
+ return ranks;
168
+ };
169
+ return pearsonCorrelation(rankArr(x), rankArr(y));
170
+ }
171
+ // ─── Normalization ──────────────────────────────────────────────────────────
172
+ export function zScore(data) {
173
+ const m = mean(data);
174
+ const s = stdDev(data);
175
+ return data.map((v) => (v - m) / s);
176
+ }
177
+ export function minMaxNormalize(data) {
178
+ assertNonEmpty(data);
179
+ const mn = Math.min(...data);
180
+ const mx = Math.max(...data);
181
+ const r = mx - mn;
182
+ if (r === 0)
183
+ return data.map(() => 0);
184
+ return data.map((v) => (v - mn) / r);
185
+ }
186
+ export function linearRegression(x, y) {
187
+ if (x.length !== y.length)
188
+ throw new RangeError('x and y must have equal length');
189
+ assertNonEmpty(x);
190
+ if (x.length < 2)
191
+ throw new RangeError('linearRegression requires at least 2 data points');
192
+ const n = x.length;
193
+ const sx = x.reduce((s, v) => s + v, 0);
194
+ const sy = y.reduce((s, v) => s + v, 0);
195
+ const sxy = x.reduce((s, v, i) => s + v * y[i], 0);
196
+ const sxx = x.reduce((s, v) => s + v * v, 0);
197
+ const denom = n * sxx - sx * sx;
198
+ if (denom === 0)
199
+ throw new RangeError('linearRegression requires at least 2 distinct x values');
200
+ const slope = (n * sxy - sx * sy) / denom;
201
+ const intercept = (sy - slope * sx) / n;
202
+ const yMean = sy / n;
203
+ const ssTot = y.reduce((s, v) => s + (v - yMean) ** 2, 0);
204
+ const ssRes = y.reduce((s, v, i) => s + (v - (slope * x[i] + intercept)) ** 2, 0);
205
+ const r2 = ssTot === 0 ? 1 : 1 - ssRes / ssTot;
206
+ return { slope, intercept, r2, predict: (xv) => slope * xv + intercept };
207
+ }
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stats/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @module algebra
3
+ * Vector and matrix operations using plain JS arrays.
4
+ * All operations return new values — inputs are never mutated.
5
+ */
6
+ export type Vector = number[];
7
+ export type Matrix = number[][];
8
+ /**
9
+ * Vector addition: a + b
10
+ */
11
+ export declare function vadd(a: Vector, b: Vector): Vector;
12
+ /**
13
+ * Vector subtraction: a − b
14
+ */
15
+ export declare function vsub(a: Vector, b: Vector): Vector;
16
+ /**
17
+ * Scalar multiplication: c * v
18
+ */
19
+ export declare function vscale(v: Vector, c: number): Vector;
20
+ /**
21
+ * Dot product: a · b
22
+ */
23
+ export declare function vdot(a: Vector, b: Vector): number;
24
+ /**
25
+ * L2 (Euclidean) norm of a vector.
26
+ */
27
+ export declare function vnorm(v: Vector, p?: number): number;
28
+ /**
29
+ * Normalized unit vector (direction only).
30
+ */
31
+ export declare function vnormalize(v: Vector): Vector;
32
+ /**
33
+ * Euclidean distance between two vectors.
34
+ */
35
+ export declare function vdistance(a: Vector, b: Vector): number;
36
+ /**
37
+ * Cosine similarity between two vectors: (a · b) / (|a| |b|)
38
+ */
39
+ export declare function cosineSimilarity(a: Vector, b: Vector): number;
40
+ /**
41
+ * Cross product of two 3D vectors.
42
+ */
43
+ export declare function cross3d(a: Vector, b: Vector): Vector;
44
+ /**
45
+ * Element-wise (Hadamard) product.
46
+ */
47
+ export declare function vhadamard(a: Vector, b: Vector): Vector;
48
+ /**
49
+ * Create an n×m matrix filled with a value (default 0).
50
+ */
51
+ export declare function mzeros(n: number, m: number): Matrix;
52
+ /**
53
+ * Create an n×n identity matrix.
54
+ */
55
+ export declare function midentity(n: number): Matrix;
56
+ /**
57
+ * Transpose a matrix.
58
+ */
59
+ export declare function mtranspose(m: Matrix): Matrix;
60
+ /**
61
+ * Matrix addition.
62
+ */
63
+ export declare function madd(a: Matrix, b: Matrix): Matrix;
64
+ /**
65
+ * Matrix scalar multiplication.
66
+ */
67
+ export declare function mscale(m: Matrix, c: number): Matrix;
68
+ /**
69
+ * Matrix multiplication (naive O(n³)).
70
+ */
71
+ export declare function mmul(a: Matrix, b: Matrix): Matrix;
72
+ /**
73
+ * Matrix-vector product: m · v
74
+ */
75
+ export declare function mvmul(m: Matrix, v: Vector): Vector;
76
+ /**
77
+ * Determinant via LU decomposition (in-place, returns sign + value).
78
+ * @example mdet([[1,2],[3,4]]) // -2
79
+ */
80
+ export declare function mdet(m: Matrix): number;
81
+ /**
82
+ * Matrix inverse via Gauss-Jordan elimination.
83
+ * Throws if the matrix is singular.
84
+ */
85
+ export declare function minverse(m: Matrix): Matrix;
86
+ /**
87
+ * Matrix trace — sum of diagonal elements.
88
+ */
89
+ export declare function mtrace(m: Matrix): number;
90
+ /**
91
+ * Matrix rank via Gaussian elimination.
92
+ */
93
+ export declare function mrank(m: Matrix): number;
94
+ /**
95
+ * Solve Ax = b using Gauss-Jordan elimination.
96
+ * @returns solution vector x
97
+ */
98
+ export declare function msolve(A: Matrix, b: Vector): Vector;
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/algebra/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAC9B,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;AAUhC;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,MAAM,CAK9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAsBD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAajD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAID;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BtC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CA4B1C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAsBvC;AAID;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBnD"}