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,331 @@
1
+ "use strict";
2
+ /**
3
+ * @module number-theory
4
+ * Primes, GCD/LCM, combinatorics, modular arithmetic, and sequences.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.digitalRoot = exports.collatz = exports.nthFibonacci = exports.fibonacci = exports.eulerTotient = exports.modPow = exports.permutations = exports.binomial = exports.factorial = exports.lcmMany = exports.lcm = exports.gcdMany = exports.gcd = exports.primeFactors = exports.nextPrime = exports.primesUpTo = exports.isPrime = void 0;
8
+ function assertNonNegInt(n, label = 'n') {
9
+ if (!Number.isInteger(n) || n < 0) {
10
+ throw new TypeError(`${label} must be a non-negative integer`);
11
+ }
12
+ }
13
+ function assertPosInt(n, label = 'n') {
14
+ if (!Number.isInteger(n) || n < 1) {
15
+ throw new TypeError(`${label} must be a positive integer`);
16
+ }
17
+ }
18
+ /**
19
+ * Modular multiplication using Russian peasant algorithm to avoid overflow.
20
+ * Computes (a * b) % m safely for large numbers.
21
+ */
22
+ function mulmod(a, b, m) {
23
+ let result = 0;
24
+ a %= m;
25
+ while (b > 0) {
26
+ if (b & 1)
27
+ result = (result + a) % m;
28
+ a = (a * 2) % m;
29
+ b >>= 1;
30
+ }
31
+ return result;
32
+ }
33
+ // ─── Primes ───────────────────────────────────────────────────────────────────
34
+ /**
35
+ * Miller-Rabin primality test (deterministic for n < 3,317,044,064,679,887,385,961,981).
36
+ */
37
+ function isPrime(n) {
38
+ assertNonNegInt(n);
39
+ if (n < 2)
40
+ return false;
41
+ if (n === 2 || n === 3 || n === 5 || n === 7)
42
+ return true;
43
+ if (n % 2 === 0 || n % 3 === 0)
44
+ return false;
45
+ // Write n-1 as 2^r * d
46
+ let d = n - 1;
47
+ let r = 0;
48
+ while (d % 2 === 0) {
49
+ d >>= 1;
50
+ r++;
51
+ }
52
+ const powmod = (base, exp, mod) => {
53
+ let result = 1;
54
+ base %= mod;
55
+ while (exp > 0) {
56
+ if (exp & 1)
57
+ result = mulmod(result, base, mod);
58
+ base = mulmod(base, base, mod);
59
+ exp >>= 1;
60
+ }
61
+ return result;
62
+ };
63
+ const witnesses = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37];
64
+ outer: for (const a of witnesses) {
65
+ if (a >= n)
66
+ continue;
67
+ let x = powmod(a, d, n);
68
+ if (x === 1 || x === n - 1)
69
+ continue;
70
+ for (let i = 0; i < r - 1; i++) {
71
+ x = mulmod(x, x, n);
72
+ if (x === n - 1)
73
+ continue outer;
74
+ }
75
+ return false;
76
+ }
77
+ return true;
78
+ }
79
+ exports.isPrime = isPrime;
80
+ /**
81
+ * Sieve of Eratosthenes — returns all primes up to (and including) limit.
82
+ * @example primesUpTo(20) // [2, 3, 5, 7, 11, 13, 17, 19]
83
+ */
84
+ function primesUpTo(limit) {
85
+ assertNonNegInt(limit, 'limit');
86
+ if (limit < 2)
87
+ return [];
88
+ const sieve = new Uint8Array(limit + 1).fill(1);
89
+ sieve[0] = sieve[1] = 0;
90
+ for (let i = 2; i * i <= limit; i++) {
91
+ if (sieve[i]) {
92
+ for (let j = i * i; j <= limit; j += i)
93
+ sieve[j] = 0;
94
+ }
95
+ }
96
+ const primes = [];
97
+ for (let i = 2; i <= limit; i++)
98
+ if (sieve[i])
99
+ primes.push(i);
100
+ return primes;
101
+ }
102
+ exports.primesUpTo = primesUpTo;
103
+ /**
104
+ * Next prime strictly greater than n.
105
+ * @example nextPrime(10) // 11
106
+ */
107
+ function nextPrime(n) {
108
+ assertNonNegInt(n);
109
+ let candidate = n + 1;
110
+ if (candidate <= 2)
111
+ return 2;
112
+ if (candidate % 2 === 0)
113
+ candidate++;
114
+ while (!isPrime(candidate))
115
+ candidate += 2;
116
+ return candidate;
117
+ }
118
+ exports.nextPrime = nextPrime;
119
+ /**
120
+ * Prime factorization — returns sorted array of prime factors (with repeats).
121
+ * @example primeFactors(60) // [2, 2, 3, 5]
122
+ */
123
+ function primeFactors(n) {
124
+ assertPosInt(n);
125
+ const factors = [];
126
+ let remaining = n;
127
+ for (let f = 2; f * f <= remaining; f++) {
128
+ while (remaining % f === 0) {
129
+ factors.push(f);
130
+ remaining /= f;
131
+ }
132
+ }
133
+ if (remaining > 1)
134
+ factors.push(remaining);
135
+ return factors;
136
+ }
137
+ exports.primeFactors = primeFactors;
138
+ // ─── GCD / LCM ───────────────────────────────────────────────────────────────
139
+ /**
140
+ * Greatest common divisor via Euclidean algorithm.
141
+ * @example gcd(48, 18) // 6
142
+ */
143
+ function gcd(a, b) {
144
+ if (!Number.isInteger(a) || !Number.isInteger(b)) {
145
+ throw new TypeError('gcd requires integer inputs');
146
+ }
147
+ a = Math.abs(a);
148
+ b = Math.abs(b);
149
+ while (b) {
150
+ [a, b] = [b, a % b];
151
+ }
152
+ return a;
153
+ }
154
+ exports.gcd = gcd;
155
+ /**
156
+ * GCD of an array of integers.
157
+ */
158
+ function gcdMany(nums) {
159
+ if (nums.length === 0)
160
+ throw new RangeError('gcdMany requires at least one number');
161
+ return nums.reduce(gcd);
162
+ }
163
+ exports.gcdMany = gcdMany;
164
+ /**
165
+ * Least common multiple.
166
+ * @example lcm(4, 6) // 12
167
+ */
168
+ function lcm(a, b) {
169
+ if (a === 0 || b === 0)
170
+ return 0;
171
+ return Math.abs(a) / gcd(a, b) * Math.abs(b);
172
+ }
173
+ exports.lcm = lcm;
174
+ /**
175
+ * LCM of an array of integers.
176
+ */
177
+ function lcmMany(nums) {
178
+ if (nums.length === 0)
179
+ throw new RangeError('lcmMany requires at least one number');
180
+ return nums.reduce(lcm);
181
+ }
182
+ exports.lcmMany = lcmMany;
183
+ // ─── Combinatorics ────────────────────────────────────────────────────────────
184
+ /**
185
+ * Factorial n! — uses a cache for performance.
186
+ * @example factorial(10) // 3628800
187
+ */
188
+ const factCache = [1, 1];
189
+ function factorial(n) {
190
+ assertNonNegInt(n);
191
+ if (n > 170)
192
+ throw new RangeError('factorial overflows Number for n > 170');
193
+ if (factCache[n] !== undefined)
194
+ return factCache[n];
195
+ for (let i = factCache.length; i <= n; i++) {
196
+ factCache[i] = factCache[i - 1] * i;
197
+ }
198
+ return factCache[n];
199
+ }
200
+ exports.factorial = factorial;
201
+ /**
202
+ * Binomial coefficient C(n, k) — "n choose k".
203
+ * @example binomial(10, 3) // 120
204
+ */
205
+ function binomial(n, k) {
206
+ assertNonNegInt(n, 'n');
207
+ assertNonNegInt(k, 'k');
208
+ if (k > n)
209
+ return 0;
210
+ if (k === 0 || k === n)
211
+ return 1;
212
+ k = Math.min(k, n - k);
213
+ let result = 1;
214
+ for (let i = 0; i < k; i++) {
215
+ result = (result * (n - i)) / (i + 1);
216
+ }
217
+ return Math.round(result);
218
+ }
219
+ exports.binomial = binomial;
220
+ /**
221
+ * Number of permutations P(n, r) = n! / (n−r)!
222
+ */
223
+ function permutations(n, r) {
224
+ assertNonNegInt(n, 'n');
225
+ assertNonNegInt(r, 'r');
226
+ if (r > n)
227
+ return 0;
228
+ let result = 1;
229
+ for (let i = n; i > n - r; i--)
230
+ result *= i;
231
+ return result;
232
+ }
233
+ exports.permutations = permutations;
234
+ // ─── Modular Arithmetic ───────────────────────────────────────────────────────
235
+ /**
236
+ * Modular exponentiation: (base^exp) mod m
237
+ * @example modPow(2, 10, 1000) // 24
238
+ */
239
+ function modPow(base, exp, m) {
240
+ assertNonNegInt(base, 'base');
241
+ assertNonNegInt(exp, 'exp');
242
+ assertPosInt(m, 'm');
243
+ let result = 1;
244
+ base %= m;
245
+ while (exp > 0) {
246
+ if (exp & 1)
247
+ result = mulmod(result, base, m);
248
+ base = mulmod(base, base, m);
249
+ exp >>= 1;
250
+ }
251
+ return result;
252
+ }
253
+ exports.modPow = modPow;
254
+ /**
255
+ * Euler's totient φ(n) — count of integers in [1, n] coprime to n.
256
+ */
257
+ function eulerTotient(n) {
258
+ assertPosInt(n);
259
+ let result = n;
260
+ let temp = n;
261
+ for (let p = 2; p * p <= temp; p++) {
262
+ if (temp % p === 0) {
263
+ while (temp % p === 0)
264
+ temp /= p;
265
+ result -= result / p;
266
+ }
267
+ }
268
+ if (temp > 1)
269
+ result -= result / temp;
270
+ return Math.round(result);
271
+ }
272
+ exports.eulerTotient = eulerTotient;
273
+ // ─── Integer Sequences ────────────────────────────────────────────────────────
274
+ /**
275
+ * Fibonacci sequence up to length n.
276
+ * @example fibonacci(8) // [0, 1, 1, 2, 3, 5, 8, 13]
277
+ */
278
+ function fibonacci(n) {
279
+ assertPosInt(n);
280
+ if (n === 1)
281
+ return [0];
282
+ const seq = [0, 1];
283
+ for (let i = 2; i < n; i++)
284
+ seq.push(seq[i - 1] + seq[i - 2]);
285
+ return seq;
286
+ }
287
+ exports.fibonacci = fibonacci;
288
+ /**
289
+ * nth Fibonacci number (0-indexed, fast doubling algorithm).
290
+ * @example nthFibonacci(10) // 55
291
+ */
292
+ function nthFibonacci(n) {
293
+ assertNonNegInt(n);
294
+ // Fast doubling: F(2k) = F(k)[2F(k+1) − F(k)], F(2k+1) = F(k)² + F(k+1)²
295
+ function fastDouble(k) {
296
+ if (k === 0)
297
+ return [0, 1];
298
+ const [a, b] = fastDouble(Math.floor(k / 2));
299
+ const c = a * (2 * b - a);
300
+ const d = a * a + b * b;
301
+ return k % 2 === 0 ? [c, d] : [d, c + d];
302
+ }
303
+ return fastDouble(n)[0];
304
+ }
305
+ exports.nthFibonacci = nthFibonacci;
306
+ /**
307
+ * Collatz sequence starting at n (stops at 1).
308
+ * @example collatz(6) // [6, 3, 10, 5, 16, 8, 4, 2, 1]
309
+ */
310
+ function collatz(n) {
311
+ assertPosInt(n);
312
+ const seq = [n];
313
+ while (n !== 1) {
314
+ n = n % 2 === 0 ? n / 2 : 3 * n + 1;
315
+ seq.push(n);
316
+ }
317
+ return seq;
318
+ }
319
+ exports.collatz = collatz;
320
+ /**
321
+ * Digital root of a positive integer (repeated digit sum until single digit).
322
+ * @example digitalRoot(9875) // 2
323
+ */
324
+ function digitalRoot(n) {
325
+ assertPosInt(n);
326
+ if (n % 9 === 0)
327
+ return 9;
328
+ return n % 9;
329
+ }
330
+ exports.digitalRoot = digitalRoot;
331
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/number-theory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @module numerical
3
+ * Root finding, numerical integration, differentiation, and interpolation.
4
+ */
5
+ export type Fn = (x: number) => number;
6
+ export interface RootResult {
7
+ root: number;
8
+ iterations: number;
9
+ converged: boolean;
10
+ error: number;
11
+ }
12
+ /**
13
+ * Bisection method — guaranteed convergence on a bracketed root.
14
+ * @param f - continuous function
15
+ * @param a - left bracket
16
+ * @param b - right bracket (f(a) and f(b) must have opposite signs)
17
+ */
18
+ export declare function bisection(f: Fn, a: number, b: number, tol?: number, maxIter?: number): RootResult;
19
+ /**
20
+ * Newton-Raphson method — fast quadratic convergence near smooth roots.
21
+ * @param f - function
22
+ * @param df - derivative (if omitted, estimated numerically)
23
+ */
24
+ export declare function newtonRaphson(f: Fn, x0: number, df?: Fn, tol?: number, maxIter?: number): RootResult;
25
+ /**
26
+ * Brent's method — combines bisection, secant, and inverse quadratic interpolation.
27
+ * Robust and fast — the recommended general-purpose root finder.
28
+ */
29
+ export declare function brent(f: Fn, a: number, b: number, tol?: number, maxIter?: number): RootResult;
30
+ /**
31
+ * First derivative using central differences (O(h²) accuracy).
32
+ */
33
+ export declare function derivative(f: Fn, x: number, h?: number): number;
34
+ /**
35
+ * Second derivative using central differences.
36
+ */
37
+ export declare function secondDerivative(f: Fn, x: number, h?: number): number;
38
+ /**
39
+ * Gradient of a multivariate function at point x.
40
+ * @param f - function accepting a vector and returning a scalar
41
+ * @param x - point at which to compute the gradient
42
+ */
43
+ export declare function gradient(f: (x: number[]) => number, x: number[], h?: number): number[];
44
+ /**
45
+ * Adaptive Simpson's rule — highly accurate for smooth functions.
46
+ */
47
+ export declare function integrate(f: Fn, a: number, b: number, tol?: number, maxDepth?: number): number;
48
+ /**
49
+ * Gauss-Legendre quadrature (5-point) — excellent for polynomials and smooth functions.
50
+ * @param f - function to integrate
51
+ * @param a - lower bound
52
+ * @param b - upper bound
53
+ */
54
+ export declare function gaussLegendre(f: Fn, a: number, b: number): number;
55
+ /**
56
+ * Linear interpolation between two points.
57
+ */
58
+ export declare function lerp(a: number, b: number, t: number): number;
59
+ /**
60
+ * Inverse lerp — find t such that lerp(a, b, t) === value.
61
+ */
62
+ export declare function inverseLerp(a: number, b: number, value: number): number;
63
+ /**
64
+ * Linear interpolation from a data table (sorted x values required).
65
+ * @param xs - sorted x values
66
+ * @param ys - corresponding y values
67
+ * @param x - query x value
68
+ */
69
+ export declare function tableInterpolate(xs: number[], ys: number[], x: number): number;
70
+ /**
71
+ * Lagrange polynomial interpolation at a query point.
72
+ */
73
+ export declare function lagrange(xs: number[], ys: number[], x: number): number;
74
+ /**
75
+ * Clamp a value to [min, max].
76
+ */
77
+ export declare function clamp(value: number, min: number, max: number): number;
78
+ /**
79
+ * Round to n decimal places.
80
+ */
81
+ export declare function roundTo(value: number, decimals: number): number;
82
+ /**
83
+ * Check if two floats are approximately equal.
84
+ */
85
+ export declare function approxEqual(a: number, b: number, relTol?: number, absTol?: number): boolean;
86
+ /**
87
+ * Map a value from one range to another.
88
+ * @example remap(5, 0, 10, 0, 100) // 50
89
+ */
90
+ export declare function remap(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
91
+ /**
92
+ * Sum of an array using compensated Kahan summation (reduces floating-point error).
93
+ */
94
+ export declare function kahanSum(data: number[]): number;
95
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/numerical/index.ts"],"names":[],"mappings":"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"}