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,311 @@
1
+ /**
2
+ * @module number-theory
3
+ * Primes, GCD/LCM, combinatorics, modular arithmetic, and sequences.
4
+ */
5
+ function assertNonNegInt(n, label = 'n') {
6
+ if (!Number.isInteger(n) || n < 0) {
7
+ throw new TypeError(`${label} must be a non-negative integer`);
8
+ }
9
+ }
10
+ function assertPosInt(n, label = 'n') {
11
+ if (!Number.isInteger(n) || n < 1) {
12
+ throw new TypeError(`${label} must be a positive integer`);
13
+ }
14
+ }
15
+ /**
16
+ * Modular multiplication using Russian peasant algorithm to avoid overflow.
17
+ * Computes (a * b) % m safely for large numbers.
18
+ */
19
+ function mulmod(a, b, m) {
20
+ let result = 0;
21
+ a %= m;
22
+ while (b > 0) {
23
+ if (b & 1)
24
+ result = (result + a) % m;
25
+ a = (a * 2) % m;
26
+ b >>= 1;
27
+ }
28
+ return result;
29
+ }
30
+ // ─── Primes ───────────────────────────────────────────────────────────────────
31
+ /**
32
+ * Miller-Rabin primality test (deterministic for n < 3,317,044,064,679,887,385,961,981).
33
+ */
34
+ export function isPrime(n) {
35
+ assertNonNegInt(n);
36
+ if (n < 2)
37
+ return false;
38
+ if (n === 2 || n === 3 || n === 5 || n === 7)
39
+ return true;
40
+ if (n % 2 === 0 || n % 3 === 0)
41
+ return false;
42
+ // Write n-1 as 2^r * d
43
+ let d = n - 1;
44
+ let r = 0;
45
+ while (d % 2 === 0) {
46
+ d >>= 1;
47
+ r++;
48
+ }
49
+ const powmod = (base, exp, mod) => {
50
+ let result = 1;
51
+ base %= mod;
52
+ while (exp > 0) {
53
+ if (exp & 1)
54
+ result = mulmod(result, base, mod);
55
+ base = mulmod(base, base, mod);
56
+ exp >>= 1;
57
+ }
58
+ return result;
59
+ };
60
+ const witnesses = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37];
61
+ outer: for (const a of witnesses) {
62
+ if (a >= n)
63
+ continue;
64
+ let x = powmod(a, d, n);
65
+ if (x === 1 || x === n - 1)
66
+ continue;
67
+ for (let i = 0; i < r - 1; i++) {
68
+ x = mulmod(x, x, n);
69
+ if (x === n - 1)
70
+ continue outer;
71
+ }
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+ /**
77
+ * Sieve of Eratosthenes — returns all primes up to (and including) limit.
78
+ * @example primesUpTo(20) // [2, 3, 5, 7, 11, 13, 17, 19]
79
+ */
80
+ export function primesUpTo(limit) {
81
+ assertNonNegInt(limit, 'limit');
82
+ if (limit < 2)
83
+ return [];
84
+ const sieve = new Uint8Array(limit + 1).fill(1);
85
+ sieve[0] = sieve[1] = 0;
86
+ for (let i = 2; i * i <= limit; i++) {
87
+ if (sieve[i]) {
88
+ for (let j = i * i; j <= limit; j += i)
89
+ sieve[j] = 0;
90
+ }
91
+ }
92
+ const primes = [];
93
+ for (let i = 2; i <= limit; i++)
94
+ if (sieve[i])
95
+ primes.push(i);
96
+ return primes;
97
+ }
98
+ /**
99
+ * Next prime strictly greater than n.
100
+ * @example nextPrime(10) // 11
101
+ */
102
+ export function nextPrime(n) {
103
+ assertNonNegInt(n);
104
+ let candidate = n + 1;
105
+ if (candidate <= 2)
106
+ return 2;
107
+ if (candidate % 2 === 0)
108
+ candidate++;
109
+ while (!isPrime(candidate))
110
+ candidate += 2;
111
+ return candidate;
112
+ }
113
+ /**
114
+ * Prime factorization — returns sorted array of prime factors (with repeats).
115
+ * @example primeFactors(60) // [2, 2, 3, 5]
116
+ */
117
+ export function primeFactors(n) {
118
+ assertPosInt(n);
119
+ const factors = [];
120
+ let remaining = n;
121
+ for (let f = 2; f * f <= remaining; f++) {
122
+ while (remaining % f === 0) {
123
+ factors.push(f);
124
+ remaining /= f;
125
+ }
126
+ }
127
+ if (remaining > 1)
128
+ factors.push(remaining);
129
+ return factors;
130
+ }
131
+ // ─── GCD / LCM ───────────────────────────────────────────────────────────────
132
+ /**
133
+ * Greatest common divisor via Euclidean algorithm.
134
+ * @example gcd(48, 18) // 6
135
+ */
136
+ export function gcd(a, b) {
137
+ if (!Number.isInteger(a) || !Number.isInteger(b)) {
138
+ throw new TypeError('gcd requires integer inputs');
139
+ }
140
+ a = Math.abs(a);
141
+ b = Math.abs(b);
142
+ while (b) {
143
+ [a, b] = [b, a % b];
144
+ }
145
+ return a;
146
+ }
147
+ /**
148
+ * GCD of an array of integers.
149
+ */
150
+ export function gcdMany(nums) {
151
+ if (nums.length === 0)
152
+ throw new RangeError('gcdMany requires at least one number');
153
+ return nums.reduce(gcd);
154
+ }
155
+ /**
156
+ * Least common multiple.
157
+ * @example lcm(4, 6) // 12
158
+ */
159
+ export function lcm(a, b) {
160
+ if (a === 0 || b === 0)
161
+ return 0;
162
+ return Math.abs(a) / gcd(a, b) * Math.abs(b);
163
+ }
164
+ /**
165
+ * LCM of an array of integers.
166
+ */
167
+ export function lcmMany(nums) {
168
+ if (nums.length === 0)
169
+ throw new RangeError('lcmMany requires at least one number');
170
+ return nums.reduce(lcm);
171
+ }
172
+ // ─── Combinatorics ────────────────────────────────────────────────────────────
173
+ /**
174
+ * Factorial n! — uses a cache for performance.
175
+ * @example factorial(10) // 3628800
176
+ */
177
+ const factCache = [1, 1];
178
+ export function factorial(n) {
179
+ assertNonNegInt(n);
180
+ if (n > 170)
181
+ throw new RangeError('factorial overflows Number for n > 170');
182
+ if (factCache[n] !== undefined)
183
+ return factCache[n];
184
+ for (let i = factCache.length; i <= n; i++) {
185
+ factCache[i] = factCache[i - 1] * i;
186
+ }
187
+ return factCache[n];
188
+ }
189
+ /**
190
+ * Binomial coefficient C(n, k) — "n choose k".
191
+ * @example binomial(10, 3) // 120
192
+ */
193
+ export function binomial(n, k) {
194
+ assertNonNegInt(n, 'n');
195
+ assertNonNegInt(k, 'k');
196
+ if (k > n)
197
+ return 0;
198
+ if (k === 0 || k === n)
199
+ return 1;
200
+ k = Math.min(k, n - k);
201
+ let result = 1;
202
+ for (let i = 0; i < k; i++) {
203
+ result = (result * (n - i)) / (i + 1);
204
+ }
205
+ return Math.round(result);
206
+ }
207
+ /**
208
+ * Number of permutations P(n, r) = n! / (n−r)!
209
+ */
210
+ export function permutations(n, r) {
211
+ assertNonNegInt(n, 'n');
212
+ assertNonNegInt(r, 'r');
213
+ if (r > n)
214
+ return 0;
215
+ let result = 1;
216
+ for (let i = n; i > n - r; i--)
217
+ result *= i;
218
+ return result;
219
+ }
220
+ // ─── Modular Arithmetic ───────────────────────────────────────────────────────
221
+ /**
222
+ * Modular exponentiation: (base^exp) mod m
223
+ * @example modPow(2, 10, 1000) // 24
224
+ */
225
+ export function modPow(base, exp, m) {
226
+ assertNonNegInt(base, 'base');
227
+ assertNonNegInt(exp, 'exp');
228
+ assertPosInt(m, 'm');
229
+ let result = 1;
230
+ base %= m;
231
+ while (exp > 0) {
232
+ if (exp & 1)
233
+ result = mulmod(result, base, m);
234
+ base = mulmod(base, base, m);
235
+ exp >>= 1;
236
+ }
237
+ return result;
238
+ }
239
+ /**
240
+ * Euler's totient φ(n) — count of integers in [1, n] coprime to n.
241
+ */
242
+ export function eulerTotient(n) {
243
+ assertPosInt(n);
244
+ let result = n;
245
+ let temp = n;
246
+ for (let p = 2; p * p <= temp; p++) {
247
+ if (temp % p === 0) {
248
+ while (temp % p === 0)
249
+ temp /= p;
250
+ result -= result / p;
251
+ }
252
+ }
253
+ if (temp > 1)
254
+ result -= result / temp;
255
+ return Math.round(result);
256
+ }
257
+ // ─── Integer Sequences ────────────────────────────────────────────────────────
258
+ /**
259
+ * Fibonacci sequence up to length n.
260
+ * @example fibonacci(8) // [0, 1, 1, 2, 3, 5, 8, 13]
261
+ */
262
+ export function fibonacci(n) {
263
+ assertPosInt(n);
264
+ if (n === 1)
265
+ return [0];
266
+ const seq = [0, 1];
267
+ for (let i = 2; i < n; i++)
268
+ seq.push(seq[i - 1] + seq[i - 2]);
269
+ return seq;
270
+ }
271
+ /**
272
+ * nth Fibonacci number (0-indexed, fast doubling algorithm).
273
+ * @example nthFibonacci(10) // 55
274
+ */
275
+ export function nthFibonacci(n) {
276
+ assertNonNegInt(n);
277
+ // Fast doubling: F(2k) = F(k)[2F(k+1) − F(k)], F(2k+1) = F(k)² + F(k+1)²
278
+ function fastDouble(k) {
279
+ if (k === 0)
280
+ return [0, 1];
281
+ const [a, b] = fastDouble(Math.floor(k / 2));
282
+ const c = a * (2 * b - a);
283
+ const d = a * a + b * b;
284
+ return k % 2 === 0 ? [c, d] : [d, c + d];
285
+ }
286
+ return fastDouble(n)[0];
287
+ }
288
+ /**
289
+ * Collatz sequence starting at n (stops at 1).
290
+ * @example collatz(6) // [6, 3, 10, 5, 16, 8, 4, 2, 1]
291
+ */
292
+ export function collatz(n) {
293
+ assertPosInt(n);
294
+ const seq = [n];
295
+ while (n !== 1) {
296
+ n = n % 2 === 0 ? n / 2 : 3 * n + 1;
297
+ seq.push(n);
298
+ }
299
+ return seq;
300
+ }
301
+ /**
302
+ * Digital root of a positive integer (repeated digit sum until single digit).
303
+ * @example digitalRoot(9875) // 2
304
+ */
305
+ export function digitalRoot(n) {
306
+ assertPosInt(n);
307
+ if (n % 9 === 0)
308
+ return 9;
309
+ return n % 9;
310
+ }
311
+ //# 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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"}