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.
- package/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +239 -0
- package/dist/cjs/algebra/index.d.ts +99 -0
- package/dist/cjs/algebra/index.d.ts.map +1 -0
- package/dist/cjs/algebra/index.js +358 -0
- package/dist/cjs/algebra/index.js.map +1 -0
- package/dist/cjs/index.d.ts +15 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +82 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/number-theory/index.d.ts +81 -0
- package/dist/cjs/number-theory/index.d.ts.map +1 -0
- package/dist/cjs/number-theory/index.js +331 -0
- package/dist/cjs/number-theory/index.js.map +1 -0
- package/dist/cjs/numerical/index.d.ts +95 -0
- package/dist/cjs/numerical/index.d.ts.map +1 -0
- package/dist/cjs/numerical/index.js +300 -0
- package/dist/cjs/numerical/index.js.map +1 -0
- package/dist/cjs/stats/index.d.ts +32 -0
- package/dist/cjs/stats/index.d.ts.map +1 -0
- package/dist/cjs/stats/index.js +232 -0
- package/dist/cjs/stats/index.js.map +1 -0
- package/dist/esm/algebra/index.d.ts +99 -0
- package/dist/esm/algebra/index.d.ts.map +1 -0
- package/dist/esm/algebra/index.js +333 -0
- package/dist/esm/algebra/index.js.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/number-theory/index.d.ts +81 -0
- package/dist/esm/number-theory/index.d.ts.map +1 -0
- package/dist/esm/number-theory/index.js +311 -0
- package/dist/esm/number-theory/index.js.map +1 -0
- package/dist/esm/numerical/index.d.ts +95 -0
- package/dist/esm/numerical/index.d.ts.map +1 -0
- package/dist/esm/numerical/index.js +280 -0
- package/dist/esm/numerical/index.js.map +1 -0
- package/dist/esm/stats/index.d.ts +32 -0
- package/dist/esm/stats/index.d.ts.map +1 -0
- package/dist/esm/stats/index.js +208 -0
- package/dist/esm/stats/index.js.map +1 -0
- package/dist/types/algebra/index.d.ts +99 -0
- package/dist/types/algebra/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/number-theory/index.d.ts +81 -0
- package/dist/types/number-theory/index.d.ts.map +1 -0
- package/dist/types/numerical/index.d.ts +95 -0
- package/dist/types/numerical/index.d.ts.map +1 -0
- package/dist/types/stats/index.d.ts +32 -0
- package/dist/types/stats/index.d.ts.map +1 -0
- 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":";AAAA;;;GAGG;;;AAEH,SAAS,eAAe,CAAC,CAAS,EAAE,KAAK,GAAG,GAAG;IAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,KAAK,GAAG,GAAG;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,CAAC,IAAI,CAAC,CAAC;IACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,KAAK,CAAC,CAAC;IACV,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,iFAAiF;AAEjF;;GAEG;AACH,SAAgB,OAAO,CAAC,CAAS;IAC/B,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7C,uBAAuB;IACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC,EAAE,CAAC;IAAC,CAAC;IAGrC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW,EAAU,EAAE;QAChE,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,GAAG,CAAC;QACZ,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,CAAC;gBAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,GAAG,KAAK,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACrB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,SAAS,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAnCD,0BAmCC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAa;IACtC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;QAAE,IAAI,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC;AAbD,gCAaC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,CAAS;IACjC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC;QAAE,SAAS,EAAE,CAAC;IACrC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,SAAS,IAAI,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAPD,8BAOC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,SAAS,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAZD,oCAYC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,SAAgB,GAAG,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACrD,CAAC;IACD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAPD,kBAOC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAc;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAHD,0BAGC;AAED;;;GAGG;AACH,SAAgB,GAAG,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAHD,kBAGC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAc;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAHD,0BAGC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,SAAS,GAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,SAAgB,SAAS,CAAC,CAAS;IACjC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;IAC5E,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AARD,8BAQC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxB,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAXD,4BAWC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxB,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,MAAM,IAAI,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAPD,oCAOC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,SAAgB,MAAM,CAAC,IAAY,EAAE,GAAW,EAAE,CAAS;IACzD,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,CAAC,CAAC;IACV,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;QACf,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,GAAG,KAAK,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,wBAYC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC;gBAAE,IAAI,IAAI,CAAC,CAAC;YACjC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAZD,oCAYC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,SAAgB,SAAS,CAAC,CAAS;IACjC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC;AACb,CAAC;AAND,8BAMC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,yEAAyE;IACzE,SAAS,UAAU,CAAC,CAAS;QAC3B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAXD,oCAWC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,CAAS;IAC/B,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACf,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AARD,0BAQC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,CAAS;IACnC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAJD,kCAIC"}
|
|
@@ -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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"}
|