@danielsimonjr/mathts-functions 0.20.2 → 0.22.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.
@@ -1 +1 @@
1
- {"version":3,"file":"norm.d.ts","sourceRoot":"","sources":["../../src/arithmetic/norm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,UAAU,WAAW;IACnB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,GAAG,IAAI,aAAa,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,OAAO,CACL,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,EAC3C,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,UAAU,KACf,IAAI,EACT,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI,CAAC;IACR,OAAO,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;CACrD;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,OAAO,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,OAAO,CAAC;IAC3E,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,CAAC;IACtC,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;CACrC;AAmBD,eAAO,MAAM,UAAU,gFA+VtB,CAAC"}
1
+ {"version":3,"file":"norm.d.ts","sourceRoot":"","sources":["../../src/arithmetic/norm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,UAAU,WAAW;IACnB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,GAAG,IAAI,aAAa,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,OAAO,CACL,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,EAC3C,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,UAAU,KACf,IAAI,EACT,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI,CAAC;IACR,OAAO,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;CACrD;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,OAAO,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,OAAO,CAAC;IAC3E,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,CAAC;IACtC,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;CACrC;AAmBD,eAAO,MAAM,UAAU,gFAiXtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"elementwise-gpu.d.ts","sourceRoot":"","sources":["../../src/gpu/elementwise-gpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AA+CnC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;CAgCR,CAAC;AAEX,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,YAAY,CAAC;AAEzD,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAEpC,CAAC;AAExB,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,IAAI,SAAS,gBAAgB,EAAE,CAE9F;AAoCD,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAIhD,eAAO,MAAM,cAAc,gCAAkE,CAAC;AAwG9F,uEAAuE;AACvE,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA4BD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,EAAE,EAAE,YAAY,GAAG,YAAY,EAC/B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAE9B;AA8ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,EAAE,EAAE,YAAY,GAAG,YAAY,EAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB"}
1
+ {"version":3,"file":"elementwise-gpu.d.ts","sourceRoot":"","sources":["../../src/gpu/elementwise-gpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAQL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AA+CnC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;CAgCR,CAAC;AAEX,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,YAAY,CAAC;AAEzD,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAEpC,CAAC;AAExB,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,IAAI,SAAS,gBAAgB,EAAE,CAE9F;AAoCD,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAIhD,eAAO,MAAM,cAAc,gCAAkE,CAAC;AAwG9F,uEAAuE;AACvE,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,EAAE,EAAE,YAAY,GAAG,YAAY,EAC/B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAE9B;AA8ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,EAAE,EAAE,YAAY,GAAG,YAAY,EAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * WebGPU FFT — Stockham autosort, radix-2, f32.
3
+ *
4
+ * Why Stockham rather than the textbook Cooley-Tukey the CPU core uses: it is
5
+ * **self-sorting**. Each pass reads one buffer and scatters into another, so the output
6
+ * comes out in natural order with **no bit-reversal permutation pass** — and a bit-reversal
7
+ * is a pure memory shuffle, which is the one thing a GPU is worst at. The ping-pong between
8
+ * two buffers is also exactly the access pattern the hardware wants.
9
+ *
10
+ * ### Is it worth it? (see `FFT_GPU_MIN_ELEMENTS` for the full table)
11
+ *
12
+ * Chrome / NVIDIA Pascal, warm JIT, against `fftCoreFloat64` — the flat f64 core that
13
+ * `parallelFFT` runs on this thread:
14
+ *
15
+ * | n | CPU f64 | GPU f32 | speedup |
16
+ * | --------- | -------- | -------- | --------- |
17
+ * | 65,536 | 16.8 ms | 14.4 ms | 1.17× |
18
+ * | 262,144 | 53.4 ms | 24.0 ms | **2.23×** |
19
+ * | 1,048,576 | 253.1 ms | 79.7 ms | **3.18×** |
20
+ * | 2,097,152 | 399.9 ms | 116.3 ms | **3.44×** |
21
+ *
22
+ * (~2.2-3.4x, and the ratio is genuinely noisy run to run — regenerate it with
23
+ * `gpu-fft-bench.browser.test.ts` rather than trusting a single hero number. f32 error is
24
+ * ~4e-7 peak-relative at every size above.)
25
+ *
26
+ * Two things decided the design:
27
+ *
28
+ * - **The threshold is 262,144, NOT `GPU_MIN_ELEMENTS`.** At 65,536 the GPU wins by 1.17×,
29
+ * which is inside the noise and nowhere near enough to justify dropping f64 for f32. An
30
+ * FFT makes log2(n) passes over the data, so it amortises the upload more slowly than the
31
+ * memory-bound element-wise chain does. Sharing one threshold would have been convenient
32
+ * and wrong.
33
+ * - **f32 accuracy holds.** Error growth across log2(n) stages was the real risk — it is why
34
+ * an f32 FFT is a harder sell than an f32 element-wise chain. Measured ~4e-7 relative to
35
+ * the spectrum's peak magnitude even at 20 stages, a few times f32 epsilon. Stockham is
36
+ * numerically well-behaved; the error did not compound.
37
+ *
38
+ * An earlier revision of this comment claimed 5.0-8.5x. That came from a COLD-JIT CPU
39
+ * baseline and from comparing against a CPU path `parallelFFT` did not actually take. Both
40
+ * are fixed; the numbers above are warm, and measured against the path it really runs.
41
+ *
42
+ * Same never-throw contract as the rest of the GPU surface: returns `null` — never rejects —
43
+ * whenever the GPU is unavailable, not opted into, the input is below threshold, not a power
44
+ * of two, or a device limit is exceeded. The caller then uses the exact f64 CPU path.
45
+ *
46
+ * @packageDocumentation
47
+ */
48
+ import { type GPUContextOptions } from '@danielsimonjr/mathts-gpu';
49
+ /** Drop cached shaders/buffers (device loss, or between tests). */
50
+ export declare function resetGpuFft(): void;
51
+ /** Options for the GPU FFT. `gpu` overrides the process-global `enableGpu()` flag. */
52
+ export interface GpuFftOptions extends GPUContextOptions {
53
+ /** Force the GPU on/off for this call, ignoring the global flag. */
54
+ gpu?: boolean;
55
+ }
56
+ /** Result of a GPU FFT: f32-precision values widened into the f64 container. */
57
+ export interface GpuFftResult {
58
+ real: Float64Array;
59
+ imag: Float64Array;
60
+ }
61
+ /**
62
+ * Run an FFT on the GPU.
63
+ *
64
+ * `real`/`imag` must be the same length, a power of two, and at least `FFT_GPU_MIN_ELEMENTS`
65
+ * (262,144) — below that the GPU's margin (1.17× at 65,536) does not justify dropping f64 for
66
+ * f32, so this declines and the caller keeps the exact CPU path.
67
+ *
68
+ * Returns `null` rather than throwing whenever it cannot or should not run, so the caller
69
+ * simply falls through to the exact f64 CPU path.
70
+ *
71
+ * Precision: f32 (~4e-7 relative to the spectrum's peak, measured through 20 stages).
72
+ * `enableGpu()` is how a caller consents to that.
73
+ */
74
+ export declare function fftGpuDispatch(real: Float64Array, imag: Float64Array, inverse?: boolean, options?: GpuFftOptions): Promise<GpuFftResult | null>;
75
+ //# sourceMappingURL=fft-gpu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft-gpu.d.ts","sourceRoot":"","sources":["../../src/gpu/fft-gpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AAqGnC,mEAAmE;AACnE,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AA6BD,sFAAsF;AACtF,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,oEAAoE;IACpE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAe9B"}
package/dist/index.js CHANGED
@@ -184,6 +184,7 @@ __export(typed_exports, {
184
184
  factor: () => factor,
185
185
  fallingFactorial: () => fallingFactorial,
186
186
  fft2d: () => fft2d,
187
+ fftGpuDispatch: () => fftGpuDispatch,
187
188
  fibonacci: () => fibonacci,
188
189
  findRoot: () => findRoot,
189
190
  fix: () => fix,
@@ -193,6 +194,7 @@ __export(typed_exports, {
193
194
  fresnelC: () => fresnelC,
194
195
  fresnelS: () => fresnelS,
195
196
  friedmanTest: () => friedmanTest,
197
+ fsum: () => fsum,
196
198
  fullSimplify: () => fullSimplify,
197
199
  functionExpand: () => functionExpand,
198
200
  fuseUnaryChain: () => fuseUnaryChain,
@@ -240,7 +242,7 @@ __export(typed_exports, {
240
242
  invGaussDist: () => invGaussDist,
241
243
  isConnected: () => isConnected,
242
244
  isGpuChainSupported: () => isGpuChainSupported,
243
- isGpuEnabled: () => isGpuEnabled2,
245
+ isGpuEnabled: () => isGpuEnabled3,
244
246
  jacobiSymbol: () => jacobiSymbol,
245
247
  jordanForm: () => jordanForm,
246
248
  jsDivergence: () => jsDivergence,
@@ -312,7 +314,7 @@ __export(typed_exports, {
312
314
  nintegrate: () => nintegrate,
313
315
  noncentralChi2PDF: () => noncentralChi2PDF,
314
316
  norm: () => norm,
315
- norm2: () => norm2,
317
+ norm2: () => norm22,
316
318
  normFro: () => normFro,
317
319
  normalCDF: () => normalCDF,
318
320
  normalDist: () => normalDist,
@@ -400,6 +402,7 @@ __export(typed_exports, {
400
402
  reflectVector: () => reflectVector,
401
403
  resample: () => resample,
402
404
  resetGpuElementwise: () => resetGpuElementwise,
405
+ resetGpuFft: () => resetGpuFft,
403
406
  residue: () => residue,
404
407
  resultant: () => resultant,
405
408
  rightArithShift: () => rightArithShift,
@@ -507,6 +510,7 @@ __export(typed_exports, {
507
510
 
508
511
  // src/typed/arithmetic.ts
509
512
  import { mathTyped as mathTyped2, Complex, Fraction, BigNumber, Dual } from "@danielsimonjr/mathts-core";
513
+ import { pairwiseSum, neumaierSum, norm2 } from "@danielsimonjr/mathts-core";
510
514
  import { DenseMatrix as DenseMatrix2, backendManager as backendManager2, singularValues } from "@danielsimonjr/mathts-matrix";
511
515
 
512
516
  // src/factories/matrix-bridge.ts
@@ -2018,11 +2022,10 @@ function vectorNorm(arr7, p = 2) {
2018
2022
  if (p === Infinity) return Math.max(...arr7.map((x) => Math.abs(x)));
2019
2023
  if (p === -Infinity) return Math.min(...arr7.map((x) => Math.abs(x)));
2020
2024
  if (p === 0) return arr7.filter((x) => x !== 0).length;
2021
- if (p === 2) return Math.sqrt(arr7.reduce((sum3, x) => sum3 + x * x, 0));
2022
- return Math.pow(
2023
- arr7.reduce((sum3, x) => sum3 + Math.pow(Math.abs(x), p), 0),
2024
- 1 / p
2025
- );
2025
+ if (p === 2) return norm2(arr7);
2026
+ const terms = new Array(arr7.length);
2027
+ for (let i = 0; i < arr7.length; i++) terms[i] = Math.pow(Math.abs(arr7[i]), p);
2028
+ return Math.pow(pairwiseSum(terms), 1 / p);
2026
2029
  }
2027
2030
  function matrixNorm(data, p = "fro") {
2028
2031
  const rows = data.length;
@@ -2079,9 +2082,7 @@ var norm = mathTyped2("norm", {
2079
2082
  if (computePool.shouldParallelize(a.length, "norm")) {
2080
2083
  return (await computePool.norm(a)).result;
2081
2084
  }
2082
- let s = 0;
2083
- for (let i = 0; i < a.length; i++) s += a[i] * a[i];
2084
- return Math.sqrt(s);
2085
+ return norm2(a);
2085
2086
  }
2086
2087
  });
2087
2088
  var sinh = mathTyped2("sinh", {
@@ -2213,15 +2214,28 @@ var max = mathTyped2("max", {
2213
2214
  return m;
2214
2215
  }
2215
2216
  });
2217
+ var fsum = mathTyped2("fsum", {
2218
+ Array: (arr7) => neumaierSum(arr7),
2219
+ Float64Array: (a) => neumaierSum(a)
2220
+ });
2216
2221
  var sum = mathTyped2("sum", {
2217
- Array: (arr7) => {
2218
- let total = 0;
2219
- for (let i = 0; i < arr7.length; i++) {
2220
- total += arr7[i];
2221
- }
2222
- return total;
2223
- },
2224
- // Parallel Float64Array sum
2222
+ // PAIRWISE summation, not `total += arr[i]`.
2223
+ //
2224
+ // Naive accumulation lets the running total grow large while the addends stay small, so each
2225
+ // addition rounds off a bit more of the total: error grows as O(n)*eps. Measured on 1e6 copies
2226
+ // of 0.1 (exact answer 100000):
2227
+ //
2228
+ // naive (what shipped) relative error 1.3e-11
2229
+ // pairwise (this) relative error 2.9e-16 <- identical to NumPy's np.sum
2230
+ //
2231
+ // We were ~46,000x less accurate than NumPy on a bog-standard `sum`, and `mean`/`std`/`variance`
2232
+ // all inherit it. Pairwise costs the same number of additions — the naive loop was simply worse.
2233
+ // For catastrophic cancellation (e.g. [1e16, 1, -1e16], which pairwise AND np.sum both
2234
+ // annihilate to 0) use `fsum`.
2235
+ Array: (arr7) => pairwiseSum(arr7),
2236
+ // Float64Array: the pool's sequential branch is pairwise too (see ComputePool.sum), and its
2237
+ // parallel branch sums per-chunk then combines — blocked summation, which is pairwise-like.
2238
+ // Either way the O(n) drift is gone.
2225
2239
  Float64Array: async (a) => {
2226
2240
  const result = await computePool.sum(a);
2227
2241
  return result.result;
@@ -2230,11 +2244,7 @@ var sum = mathTyped2("sum", {
2230
2244
  var mean = mathTyped2("mean", {
2231
2245
  Array: (arr7) => {
2232
2246
  if (arr7.length === 0) return NaN;
2233
- let total = 0;
2234
- for (let i = 0; i < arr7.length; i++) {
2235
- total += arr7[i];
2236
- }
2237
- return total / arr7.length;
2247
+ return pairwiseSum(arr7) / arr7.length;
2238
2248
  },
2239
2249
  // Parallel Float64Array mean
2240
2250
  Float64Array: async (a) => {
@@ -3256,6 +3266,179 @@ function fftCoreFloat64(realIn, imagIn, inverse = false) {
3256
3266
  return { real, imag };
3257
3267
  }
3258
3268
 
3269
+ // src/gpu/fft-gpu.ts
3270
+ import {
3271
+ getGpuDevice,
3272
+ getGlobalGPUContext,
3273
+ isGpuEnabled,
3274
+ ShaderManager,
3275
+ BufferPool,
3276
+ serializeGpu
3277
+ } from "@danielsimonjr/mathts-gpu";
3278
+ var WORKGROUP_SIZE = 64;
3279
+ var FFT_GPU_MIN_ELEMENTS = 262144;
3280
+ var SHADER_KEY = "fft:stockham";
3281
+ var STOCKHAM_WGSL = `
3282
+ @group(0) @binding(0) var<storage, read> src: array<vec2<f32>>;
3283
+ @group(0) @binding(1) var<storage, read_write> dst: array<vec2<f32>>;
3284
+ @group(0) @binding(2) var<uniform> params: vec4<u32>; // n, ns, inverse, _
3285
+
3286
+ fn cmul(a: vec2<f32>, b: vec2<f32>) -> vec2<f32> {
3287
+ return vec2<f32>(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
3288
+ }
3289
+
3290
+ @compute @workgroup_size(${WORKGROUP_SIZE})
3291
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
3292
+ let n = params.x;
3293
+ let ns = params.y;
3294
+ let half = n / 2u;
3295
+ let i = gid.x;
3296
+ if (i >= half) { return; }
3297
+
3298
+ // -1 forward, +1 inverse \u2014 the same sign convention as the CPU core, so the two
3299
+ // implementations agree on which direction is which.
3300
+ let sgn = select(-1.0, 1.0, params.z == 1u);
3301
+ let angle = sgn * 2.0 * 3.14159265358979323846 * f32(i % ns) / f32(ns * 2u);
3302
+ let tw = vec2<f32>(cos(angle), sin(angle));
3303
+
3304
+ let v0 = src[i];
3305
+ let v1 = cmul(src[i + half], tw);
3306
+
3307
+ let idxD = (i / ns) * ns * 2u + (i % ns);
3308
+ dst[idxD] = v0 + v1;
3309
+ dst[idxD + ns] = v0 - v1;
3310
+ }
3311
+ `;
3312
+ var resources = null;
3313
+ async function getResources(options) {
3314
+ const device = await getGpuDevice(options);
3315
+ if (!device) return null;
3316
+ if (resources && resources.device === device) return resources;
3317
+ if (resources) resetGpuFft();
3318
+ const ctx = getGlobalGPUContext();
3319
+ const shaders = new ShaderManager(ctx);
3320
+ shaders.registerShader(SHADER_KEY, STOCKHAM_WGSL);
3321
+ shaders.precompileRegistered();
3322
+ resources = { device, shaders, pool: new BufferPool(ctx), stageUniforms: /* @__PURE__ */ new Map() };
3323
+ return resources;
3324
+ }
3325
+ function resetGpuFft() {
3326
+ if (!resources) return;
3327
+ for (const bufs of resources.stageUniforms.values()) bufs.forEach((b) => b.destroy());
3328
+ resources.pool.destroy();
3329
+ resources = null;
3330
+ }
3331
+ function stageUniformsFor(res, n, inverse) {
3332
+ const key = `${n}:${inverse ? 1 : 0}`;
3333
+ const cached = res.stageUniforms.get(key);
3334
+ if (cached) return cached;
3335
+ const stages = Math.log2(n);
3336
+ const bufs = [];
3337
+ for (let s = 0, ns = 1; s < stages; s++, ns *= 2) {
3338
+ const u = res.device.createBuffer({
3339
+ size: 16,
3340
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
3341
+ label: `fft-stage-${s}`
3342
+ });
3343
+ res.device.queue.writeBuffer(u, 0, new Uint32Array([n, ns, inverse ? 1 : 0, 0]));
3344
+ bufs.push(u);
3345
+ }
3346
+ res.stageUniforms.set(key, bufs);
3347
+ return bufs;
3348
+ }
3349
+ var isPowerOf2 = (n) => n > 0 && (n & n - 1) === 0;
3350
+ function fftGpuDispatch(real, imag, inverse = false, options) {
3351
+ const n = real.length;
3352
+ if (!(options?.gpu ?? isGpuEnabled())) return Promise.resolve(null);
3353
+ if (imag.length !== n) return Promise.resolve(null);
3354
+ if (n < FFT_GPU_MIN_ELEMENTS) return Promise.resolve(null);
3355
+ if (!isPowerOf2(n)) return Promise.resolve(null);
3356
+ return serializeGpu(() => fftGpuDispatchImpl(real, imag, inverse, options));
3357
+ }
3358
+ async function fftGpuDispatchImpl(real, imag, inverse, options) {
3359
+ const n = real.length;
3360
+ const bytes = n * 8;
3361
+ const workgroups = Math.ceil(n / 2 / WORKGROUP_SIZE);
3362
+ let res;
3363
+ let bufA;
3364
+ let bufB;
3365
+ let staging;
3366
+ let scopePushed = false;
3367
+ let scopePopped = false;
3368
+ try {
3369
+ const r = await getResources(options);
3370
+ if (!r) return null;
3371
+ res = r;
3372
+ const { device, shaders, pool } = r;
3373
+ const limits = device.limits;
3374
+ if (workgroups > limits.maxComputeWorkgroupsPerDimension) return null;
3375
+ if (bytes > limits.maxStorageBufferBindingSize) return null;
3376
+ if (bytes > limits.maxBufferSize) return null;
3377
+ const stageUniforms = stageUniformsFor(r, n, inverse);
3378
+ const input = new Float32Array(n * 2);
3379
+ for (let i = 0; i < n; i++) {
3380
+ input[i * 2] = real[i];
3381
+ input[i * 2 + 1] = imag[i];
3382
+ }
3383
+ device.pushErrorScope("validation");
3384
+ scopePushed = true;
3385
+ bufA = pool.acquireStorageBuffer(bytes, "fft-a", true, true);
3386
+ bufB = pool.acquireStorageBuffer(bytes, "fft-b", true, true);
3387
+ staging = pool.acquireStagingBuffer(bytes, "fft-staging");
3388
+ device.queue.writeBuffer(bufA, 0, input);
3389
+ const pipeline = shaders.getRegisteredPipeline(SHADER_KEY);
3390
+ const encoder = device.createCommandEncoder({ label: "fft-stockham" });
3391
+ let src = bufA;
3392
+ let dst2 = bufB;
3393
+ for (let s = 0; s < stageUniforms.length; s++) {
3394
+ const bindGroup = device.createBindGroup({
3395
+ layout: pipeline.getBindGroupLayout(0),
3396
+ entries: [
3397
+ { binding: 0, resource: { buffer: src } },
3398
+ { binding: 1, resource: { buffer: dst2 } },
3399
+ { binding: 2, resource: { buffer: stageUniforms[s] } }
3400
+ ]
3401
+ });
3402
+ const pass = encoder.beginComputePass({ label: `fft-stage-${s}` });
3403
+ pass.setPipeline(pipeline);
3404
+ pass.setBindGroup(0, bindGroup);
3405
+ pass.dispatchWorkgroups(workgroups);
3406
+ pass.end();
3407
+ [src, dst2] = [dst2, src];
3408
+ }
3409
+ encoder.copyBufferToBuffer(src, 0, staging, 0, bytes);
3410
+ device.queue.submit([encoder.finish()]);
3411
+ const validationError = await device.popErrorScope();
3412
+ scopePopped = true;
3413
+ if (validationError) return null;
3414
+ await staging.mapAsync(GPUMapMode.READ, 0, bytes);
3415
+ const packed = new Float32Array(staging.getMappedRange(0, bytes).slice(0));
3416
+ staging.unmap();
3417
+ const outRe = new Float64Array(n);
3418
+ const outIm = new Float64Array(n);
3419
+ const scale = inverse ? 1 / n : 1;
3420
+ for (let i = 0; i < n; i++) {
3421
+ outRe[i] = packed[i * 2] * scale;
3422
+ outIm[i] = packed[i * 2 + 1] * scale;
3423
+ }
3424
+ return { real: outRe, imag: outIm };
3425
+ } catch {
3426
+ return null;
3427
+ } finally {
3428
+ if (res && scopePushed && !scopePopped) {
3429
+ try {
3430
+ await res.device.popErrorScope();
3431
+ } catch {
3432
+ }
3433
+ }
3434
+ if (res) {
3435
+ if (bufA) res.pool.release(bufA);
3436
+ if (bufB) res.pool.release(bufB);
3437
+ if (staging) res.pool.release(staging);
3438
+ }
3439
+ }
3440
+ }
3441
+
3259
3442
  // src/typed/signal.ts
3260
3443
  import { computePool as computePool4 } from "@danielsimonjr/mathts-parallel";
3261
3444
 
@@ -3582,7 +3765,7 @@ function chirpZTransformDispatch(samples, m, phiStartRe, phiStartIm, phiStepRe,
3582
3765
 
3583
3766
  // src/typed/signal.ts
3584
3767
  var WASM_THRESHOLD = 64;
3585
- function isPowerOf2(n) {
3768
+ function isPowerOf22(n) {
3586
3769
  return n > 0 && (n & n - 1) === 0;
3587
3770
  }
3588
3771
  function nextPowerOf2(n) {
@@ -3591,7 +3774,7 @@ function nextPowerOf2(n) {
3591
3774
  }
3592
3775
  async function fourStepFFT(real, imag, inverse) {
3593
3776
  const N = real.length;
3594
- if (N < 4 || !isPowerOf2(N)) {
3777
+ if (N < 4 || !isPowerOf22(N)) {
3595
3778
  return fftCoreFloat64(real, imag, inverse);
3596
3779
  }
3597
3780
  const bits = Math.round(Math.log2(N));
@@ -3665,23 +3848,29 @@ var parallelFFT = mathTyped5("parallelFFT", {
3665
3848
  const real = new Float64Array(paddedLength);
3666
3849
  const imag = new Float64Array(paddedLength);
3667
3850
  real.set(signal);
3668
- const result = computePool4.shouldParallelize(paddedLength) ? await fourStepFFT(real, imag, false) : fftCoreFloat64(real, imag, false);
3851
+ const gpu = await fftGpuDispatch(real, imag, false);
3852
+ if (gpu) return { real: gpu.real, imag: gpu.imag, originalLength: n };
3853
+ const result = computePool4.shouldParallelize(paddedLength, "parallelFFT") ? await fourStepFFT(real, imag, false) : fftCoreFloat64(real, imag, false);
3669
3854
  return { ...result, originalLength: n };
3670
3855
  }
3671
3856
  });
3672
3857
  var parallelIFFT = mathTyped5("parallelIFFT", {
3673
3858
  // IFFT from real/imag arrays
3674
3859
  "Float64Array, Float64Array": async (real, imag) => {
3675
- return computePool4.shouldParallelize(real.length) ? fourStepFFT(real, imag, true) : fftCoreFloat64(real, imag, true);
3860
+ const gpu = await fftGpuDispatch(real, imag, true);
3861
+ if (gpu) return gpu;
3862
+ return computePool4.shouldParallelize(real.length, "parallelFFT") ? fourStepFFT(real, imag, true) : fftCoreFloat64(real, imag, true);
3676
3863
  },
3677
3864
  // IFFT from object with real/imag
3678
3865
  Object: async (spectrum) => {
3679
- return computePool4.shouldParallelize(spectrum.real.length) ? fourStepFFT(spectrum.real, spectrum.imag, true) : fftCoreFloat64(spectrum.real, spectrum.imag, true);
3866
+ const gpu = await fftGpuDispatch(spectrum.real, spectrum.imag, true);
3867
+ if (gpu) return gpu;
3868
+ return computePool4.shouldParallelize(spectrum.real.length, "parallelFFT") ? fourStepFFT(spectrum.real, spectrum.imag, true) : fftCoreFloat64(spectrum.real, spectrum.imag, true);
3680
3869
  }
3681
3870
  });
3682
3871
  var parallelFFTMagnitude = mathTyped5("parallelFFTMagnitude", {
3683
3872
  "Float64Array, Float64Array": async (real, imag) => {
3684
- if (computePool4.shouldParallelize(real.length)) {
3873
+ if (computePool4.shouldParallelize(real.length, "parallelFFT")) {
3685
3874
  const r = await computePool4.applyKernel2(
3686
3875
  real,
3687
3876
  imag,
@@ -3701,7 +3890,7 @@ var parallelFFTMagnitude = mathTyped5("parallelFFTMagnitude", {
3701
3890
  });
3702
3891
  var parallelFFTPower = mathTyped5("parallelFFTPower", {
3703
3892
  "Float64Array, Float64Array": async (real, imag) => {
3704
- if (computePool4.shouldParallelize(real.length)) {
3893
+ if (computePool4.shouldParallelize(real.length, "parallelFFT")) {
3705
3894
  const r = await computePool4.applyKernel2(real, imag, "(re, im) => re * re + im * im");
3706
3895
  return r.result;
3707
3896
  }
@@ -7348,12 +7537,13 @@ var typedSpecial = {
7348
7537
 
7349
7538
  // src/gpu/elementwise-gpu.ts
7350
7539
  import {
7351
- getGpuDevice,
7352
- getGlobalGPUContext,
7353
- isGpuEnabled,
7540
+ getGpuDevice as getGpuDevice2,
7541
+ getGlobalGPUContext as getGlobalGPUContext2,
7542
+ isGpuEnabled as isGpuEnabled2,
7354
7543
  GPU_MIN_ELEMENTS,
7355
- ShaderManager,
7356
- BufferPool
7544
+ ShaderManager as ShaderManager2,
7545
+ BufferPool as BufferPool2,
7546
+ serializeGpu as serializeGpu2
7357
7547
  } from "@danielsimonjr/mathts-gpu";
7358
7548
  var WGSL_IEEE = `
7359
7549
  // NaN / \xB1Inf are supplied through the UNIFORM, not written as literals.
@@ -7426,7 +7616,7 @@ var GPU_ELEMENTWISE_OPS = Object.keys(
7426
7616
  function isGpuChainSupported(ops) {
7427
7617
  return ops.every((op) => op in WGSL_OP_BODY);
7428
7618
  }
7429
- var WORKGROUP_SIZE = 256;
7619
+ var WORKGROUP_SIZE2 = 256;
7430
7620
  function wgslFor(op) {
7431
7621
  return `
7432
7622
  @group(0) @binding(0) var<storage, read> inp: array<f32>;
@@ -7439,7 +7629,7 @@ function wgslFor(op) {
7439
7629
  ${WGSL_OP_BODY[op]}
7440
7630
  }
7441
7631
 
7442
- @compute @workgroup_size(${WORKGROUP_SIZE})
7632
+ @compute @workgroup_size(${WORKGROUP_SIZE2})
7443
7633
  fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7444
7634
  let i = gid.x;
7445
7635
  if (i >= params.x) { return; }
@@ -7464,12 +7654,12 @@ function wgslForReduce(r) {
7464
7654
  ${WGSL_IEEE}
7465
7655
 
7466
7656
  // NOTE: "shared" is a RESERVED WORD in WGSL \u2014 this must not be named that.
7467
- var<workgroup> sdata: array<f32, ${WORKGROUP_SIZE}>;
7657
+ var<workgroup> sdata: array<f32, ${WORKGROUP_SIZE2}>;
7468
7658
 
7469
7659
  fn identity() -> f32 { return ${identity2}; }
7470
7660
  fn combine(a: f32, b: f32) -> f32 { return ${combine2}; }
7471
7661
 
7472
- @compute @workgroup_size(${WORKGROUP_SIZE})
7662
+ @compute @workgroup_size(${WORKGROUP_SIZE2})
7473
7663
  fn main(@builtin(global_invocation_id) gid: vec3<u32>,
7474
7664
  @builtin(local_invocation_id) lid: vec3<u32>,
7475
7665
  @builtin(workgroup_id) wid: vec3<u32>) {
@@ -7478,7 +7668,7 @@ function wgslForReduce(r) {
7478
7668
  sdata[lid.x] = v;
7479
7669
  workgroupBarrier();
7480
7670
 
7481
- var s: u32 = ${WORKGROUP_SIZE}u / 2u;
7671
+ var s: u32 = ${WORKGROUP_SIZE2}u / 2u;
7482
7672
  loop {
7483
7673
  if (s == 0u) { break; }
7484
7674
  if (lid.x < s) { sdata[lid.x] = combine(sdata[lid.x], sdata[lid.x + s]); }
@@ -7489,13 +7679,13 @@ function wgslForReduce(r) {
7489
7679
  }
7490
7680
  `;
7491
7681
  }
7492
- var resources = null;
7493
- async function getResources(options) {
7494
- const device = await getGpuDevice(options);
7682
+ var resources2 = null;
7683
+ async function getResources2(options) {
7684
+ const device = await getGpuDevice2(options);
7495
7685
  if (!device) return null;
7496
- if (resources && resources.device === device) return resources;
7497
- const ctx = getGlobalGPUContext();
7498
- const shaders = new ShaderManager(ctx);
7686
+ if (resources2 && resources2.device === device) return resources2;
7687
+ const ctx = getGlobalGPUContext2();
7688
+ const shaders = new ShaderManager2(ctx);
7499
7689
  for (const op of GPU_ELEMENTWISE_OPS) {
7500
7690
  shaders.registerShader(op, wgslFor(op));
7501
7691
  }
@@ -7503,31 +7693,25 @@ async function getResources(options) {
7503
7693
  shaders.registerShader(reduceKey(r), wgslForReduce(r));
7504
7694
  }
7505
7695
  shaders.precompileRegistered();
7506
- resources = { device, shaders, pool: new BufferPool(ctx) };
7507
- return resources;
7696
+ resources2 = { device, shaders, pool: new BufferPool2(ctx) };
7697
+ return resources2;
7508
7698
  }
7509
7699
  function resetGpuElementwise() {
7510
- resources?.pool.destroy();
7511
- resources = null;
7512
- }
7513
- var gpuQueue = Promise.resolve();
7514
- function serializeGpu(run) {
7515
- const next = gpuQueue.then(run, run);
7516
- gpuQueue = next.catch(() => void 0);
7517
- return next;
7700
+ resources2?.pool.destroy();
7701
+ resources2 = null;
7518
7702
  }
7519
7703
  function elementwiseChainGpuDispatch(ops, xs, options) {
7520
- return serializeGpu(() => chainGpuDispatchImpl(ops, xs, options));
7704
+ return serializeGpu2(() => chainGpuDispatchImpl(ops, xs, options));
7521
7705
  }
7522
7706
  async function chainGpuDispatchImpl(ops, xs, options) {
7523
7707
  const n = xs.length;
7524
- const enabled = options?.gpu ?? isGpuEnabled();
7708
+ const enabled = options?.gpu ?? isGpuEnabled2();
7525
7709
  if (!enabled) return null;
7526
7710
  if (ops.length === 0) return null;
7527
7711
  if (n < GPU_MIN_ELEMENTS) return null;
7528
7712
  if (!isGpuChainSupported(ops)) return null;
7529
7713
  const bytes = n * 4;
7530
- const workgroups = Math.ceil(n / WORKGROUP_SIZE);
7714
+ const workgroups = Math.ceil(n / WORKGROUP_SIZE2);
7531
7715
  let res;
7532
7716
  let bufA;
7533
7717
  let bufB;
@@ -7536,7 +7720,7 @@ async function chainGpuDispatchImpl(ops, xs, options) {
7536
7720
  let scopePushed = false;
7537
7721
  let scopePopped = false;
7538
7722
  try {
7539
- const r = await getResources(options);
7723
+ const r = await getResources2(options);
7540
7724
  if (!r) return null;
7541
7725
  res = r;
7542
7726
  const { device, shaders, pool } = r;
@@ -7600,18 +7784,18 @@ async function chainGpuDispatchImpl(ops, xs, options) {
7600
7784
  }
7601
7785
  }
7602
7786
  function elementwiseChainReduceGpuDispatch(ops, xs, reduce3, options) {
7603
- return serializeGpu(() => chainReduceGpuDispatchImpl(ops, xs, reduce3, options));
7787
+ return serializeGpu2(() => chainReduceGpuDispatchImpl(ops, xs, reduce3, options));
7604
7788
  }
7605
7789
  async function chainReduceGpuDispatchImpl(ops, xs, reduce3, options) {
7606
7790
  const n = xs.length;
7607
- const enabled = options?.gpu ?? isGpuEnabled();
7791
+ const enabled = options?.gpu ?? isGpuEnabled2();
7608
7792
  if (!enabled) return null;
7609
7793
  if (ops.length === 0) return null;
7610
7794
  if (n < GPU_MIN_ELEMENTS) return null;
7611
7795
  if (!isGpuChainSupported(ops)) return null;
7612
7796
  if (!GPU_REDUCE_OPS.includes(reduce3)) return null;
7613
7797
  const bytes = n * 4;
7614
- const workgroups = Math.ceil(n / WORKGROUP_SIZE);
7798
+ const workgroups = Math.ceil(n / WORKGROUP_SIZE2);
7615
7799
  const partialBytes = workgroups * 4;
7616
7800
  let res;
7617
7801
  let bufA;
@@ -7622,7 +7806,7 @@ async function chainReduceGpuDispatchImpl(ops, xs, reduce3, options) {
7622
7806
  let scopePushed = false;
7623
7807
  let scopePopped = false;
7624
7808
  try {
7625
- const r = await getResources(options);
7809
+ const r = await getResources2(options);
7626
7810
  if (!r) return null;
7627
7811
  res = r;
7628
7812
  const { device, shaders, pool } = r;
@@ -16071,7 +16255,7 @@ var pinv = mathTyped13("pinv", {
16071
16255
  var cond = mathTyped13("cond", {
16072
16256
  Array: (A) => matrixCond(A)
16073
16257
  });
16074
- var norm2 = mathTyped13("norm2", {
16258
+ var norm22 = mathTyped13("norm2", {
16075
16259
  Array: (A) => matrixNorm2(A)
16076
16260
  });
16077
16261
  var normFro = mathTyped13("normFro", {
@@ -16135,7 +16319,7 @@ async function gpuScale(a, scalar) {
16135
16319
  }
16136
16320
 
16137
16321
  // src/typed/index.ts
16138
- import { enableGpu, disableGpu, isGpuEnabled as isGpuEnabled2, GPU_MIN_ELEMENTS as GPU_MIN_ELEMENTS2 } from "@danielsimonjr/mathts-gpu";
16322
+ import { enableGpu, disableGpu, isGpuEnabled as isGpuEnabled3, GPU_MIN_ELEMENTS as GPU_MIN_ELEMENTS2 } from "@danielsimonjr/mathts-gpu";
16139
16323
 
16140
16324
  // src/typed/relational.ts
16141
16325
  import naturalSort from "javascript-natural-sort";
@@ -26172,7 +26356,7 @@ var createCumSum = /* @__PURE__ */ factory(
26172
26356
  );
26173
26357
 
26174
26358
  // src/statistics/sum.ts
26175
- var WASM_SUM_THRESHOLD = 100;
26359
+ import { pairwiseSum as pairwiseSum2 } from "@danielsimonjr/mathts-core";
26176
26360
  function isFlatNumberArray3(arr7) {
26177
26361
  for (let i = 0; i < arr7.length; i++) {
26178
26362
  if (typeof arr7[i] !== "number") {
@@ -26205,21 +26389,8 @@ var createSum = /* @__PURE__ */ factory(
26205
26389
  }
26206
26390
  });
26207
26391
  function _sum(array) {
26208
- if (Array.isArray(array) && array.length >= WASM_SUM_THRESHOLD) {
26209
- if (isFlatNumberArray3(array)) {
26210
- const wasm = wasmLoader.getModule();
26211
- if (wasm) {
26212
- try {
26213
- const alloc = wasmLoader.allocateFloat64Array(array);
26214
- try {
26215
- return wasm.statsSum(alloc.ptr, array.length);
26216
- } finally {
26217
- wasmLoader.free(alloc.ptr);
26218
- }
26219
- } catch {
26220
- }
26221
- }
26222
- }
26392
+ if (Array.isArray(array) && isFlatNumberArray3(array)) {
26393
+ return pairwiseSum2(array);
26223
26394
  }
26224
26395
  let sum3;
26225
26396
  deepForEach2(array, function(value) {
@@ -31758,7 +31929,7 @@ var createSplitUnit = /* @__PURE__ */ factory(
31758
31929
 
31759
31930
  // src/matrix/fft.ts
31760
31931
  var FAST_FFT_THRESHOLD = 64;
31761
- function isPowerOf22(n) {
31932
+ function isPowerOf23(n) {
31762
31933
  return n > 0 && (n & n - 1) === 0;
31763
31934
  }
31764
31935
  function complexToInterleaved(arr7, _complex) {
@@ -31897,7 +32068,7 @@ var createFft = /* @__PURE__ */ factory(
31897
32068
  function _fft(arr7, len) {
31898
32069
  const length = len ?? arr7.length;
31899
32070
  if (length === 1) return [arr7[0]];
31900
- if (length === arr7.length && length >= FAST_FFT_THRESHOLD && isPowerOf22(length)) {
32071
+ if (length === arr7.length && length >= FAST_FFT_THRESHOLD && isPowerOf23(length)) {
31901
32072
  const interleaved = complexToInterleaved(arr7, complex2);
31902
32073
  if (interleaved) {
31903
32074
  const real = new Float64Array(length);
@@ -32205,7 +32376,7 @@ var createDivide = /* @__PURE__ */ factory(
32205
32376
 
32206
32377
  // src/matrix/ifft.ts
32207
32378
  var FAST_IFFT_THRESHOLD = 64;
32208
- function isPowerOf23(n) {
32379
+ function isPowerOf24(n) {
32209
32380
  return n > 0 && (n & n - 1) === 0;
32210
32381
  }
32211
32382
  function complexToInterleaved2(arr7, _complex) {
@@ -32245,7 +32416,7 @@ var createIfft = /* @__PURE__ */ factory(
32245
32416
  const totalSize = size2.reduce((acc, curr) => acc * curr, 1);
32246
32417
  if (size2.length === 1) {
32247
32418
  const length = size2[0];
32248
- if (length >= FAST_IFFT_THRESHOLD && isPowerOf23(length)) {
32419
+ if (length >= FAST_IFFT_THRESHOLD && isPowerOf24(length)) {
32249
32420
  const arrData = isMatrix(arr7) ? arr7.valueOf() : arr7;
32250
32421
  const interleaved = complexToInterleaved2(arrData, complex2);
32251
32422
  if (interleaved) {
@@ -39550,6 +39721,7 @@ var createDerivative = /* @__PURE__ */ factory(
39550
39721
  );
39551
39722
 
39552
39723
  // src/arithmetic/norm.ts
39724
+ import { norm2 as norm23 } from "@danielsimonjr/mathts-core";
39553
39725
  var WASM_NORM_THRESHOLD = 100;
39554
39726
  var name245 = "norm";
39555
39727
  var dependencies245 = [
@@ -39746,6 +39918,12 @@ var createNorm = /* @__PURE__ */ factory(
39746
39918
  throw new Error("Unsupported parameter value " + p);
39747
39919
  }
39748
39920
  function _norm(x, p) {
39921
+ if ((p === 2 || p === "fro") && x.size().length === 1) {
39922
+ const v = x.valueOf();
39923
+ if (v.every((e) => typeof e === "number")) {
39924
+ return norm23(v);
39925
+ }
39926
+ }
39749
39927
  const sizeX = x.size();
39750
39928
  if (sizeX.length === 1) {
39751
39929
  return _vectorNorm(x, p);
@@ -44678,7 +44856,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
44678
44856
  let x = Array.from(x0);
44679
44857
  let lambda = 1e-3;
44680
44858
  const h = 1e-7;
44681
- const norm22 = (v) => v.reduce((s, c) => s + c * c, 0);
44859
+ const norm24 = (v) => v.reduce((s, c) => s + c * c, 0);
44682
44860
  const jacobian2 = (xc, r0) => {
44683
44861
  const m = r0.length;
44684
44862
  const J = Array.from({ length: m }, () => new Array(n).fill(0));
@@ -44691,7 +44869,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
44691
44869
  return J;
44692
44870
  };
44693
44871
  let r = residual(x);
44694
- let cost = norm22(r);
44872
+ let cost = norm24(r);
44695
44873
  let iter = 0;
44696
44874
  for (; iter < maxIter; iter++) {
44697
44875
  const J = jacobian2(x, r);
@@ -44722,7 +44900,7 @@ function levenbergMarquardt(residual, x0, opts = {}) {
44722
44900
  }
44723
44901
  const xNew = x.map((v, i) => v + delta[i]);
44724
44902
  const rNew = residual(xNew);
44725
- const costNew = norm22(rNew);
44903
+ const costNew = norm24(rNew);
44726
44904
  if (costNew < cost) {
44727
44905
  x = xNew;
44728
44906
  r = rNew;
@@ -45464,6 +45642,7 @@ export {
45464
45642
  fermiCoupling,
45465
45643
  fft,
45466
45644
  fft2d,
45645
+ fftGpuDispatch,
45467
45646
  fibonacci,
45468
45647
  filter2 as filter,
45469
45648
  filtfilt,
@@ -45484,6 +45663,7 @@ export {
45484
45663
  fresnelC,
45485
45664
  fresnelS,
45486
45665
  friedmanTest,
45666
+ fsum,
45487
45667
  fullSimplify,
45488
45668
  functionExpand,
45489
45669
  fuseUnaryChain,
@@ -45568,7 +45748,7 @@ export {
45568
45748
  isConnected,
45569
45749
  isFinite2 as isFinite,
45570
45750
  isGpuChainSupported,
45571
- isGpuEnabled2 as isGpuEnabled,
45751
+ isGpuEnabled3 as isGpuEnabled,
45572
45752
  isInteger2 as isInteger,
45573
45753
  isNaN2 as isNaN,
45574
45754
  isNegative,
@@ -45705,7 +45885,7 @@ export {
45705
45885
  nodeOperations,
45706
45886
  noncentralChi2PDF,
45707
45887
  norm,
45708
- norm2,
45888
+ norm22 as norm2,
45709
45889
  normFro,
45710
45890
  normalCDF,
45711
45891
  normalDist,
@@ -45832,6 +46012,7 @@ export {
45832
46012
  replacer,
45833
46013
  resample,
45834
46014
  resetGpuElementwise,
46015
+ resetGpuFft,
45835
46016
  reshape2 as reshape,
45836
46017
  residue,
45837
46018
  resize2 as resize,
@@ -1 +1 @@
1
- {"version":3,"file":"sum.d.ts","sourceRoot":"","sources":["../../src/statistics/sum.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA2BvD,UAAU,eAAe;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD;AAKD,eAAO,MAAM,SAAS,yEAmHrB,CAAC"}
1
+ {"version":3,"file":"sum.d.ts","sourceRoot":"","sources":["../../src/statistics/sum.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA0BvD,UAAU,eAAe;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD;AAKD,eAAO,MAAM,SAAS,yEAmHrB,CAAC"}
@@ -186,6 +186,20 @@ export declare const max: import("typed-function").TypedFunction;
186
186
  /**
187
187
  * Sum with parallel array support
188
188
  */
189
+ /**
190
+ * Exactly-rounded sum — the equivalent of Python's `math.fsum` / NumPy's `math.fsum` idiom.
191
+ *
192
+ * `sum` uses pairwise summation, which is accurate to ~machine epsilon and free. But pairwise
193
+ * cannot recover a value that has already been annihilated by catastrophic cancellation:
194
+ *
195
+ * sum([1e16, 1, -1e16]) -> 0 (so does np.sum — the 1 is lost the moment it meets 1e16)
196
+ * fsum([1e16, 1, -1e16]) -> 1 (exact)
197
+ *
198
+ * Neumaier compensation tracks the low-order bits each addition discards and folds them back in.
199
+ * ~2-4x slower than `sum`, so it is opt-in. Reach for it when the result is a small difference of
200
+ * large terms: conservation checks, residuals, long-running accumulators.
201
+ */
202
+ export declare const fsum: import("typed-function").TypedFunction;
189
203
  export declare const sum: import("typed-function").TypedFunction;
190
204
  /**
191
205
  * Mean with parallel array support
@@ -1 +1 @@
1
- {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/typed/arithmetic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/typed/arithmetic.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,7 @@ export { cond } from './matrix-ops.js';
48
48
  export * from './gpu.js';
49
49
  export { enableGpu, disableGpu, isGpuEnabled, GPU_MIN_ELEMENTS } from '@danielsimonjr/mathts-gpu';
50
50
  export { elementwiseChainGpuDispatch, elementwiseChainReduceGpuDispatch, GPU_REDUCE_OPS, type GpuReduceOp, isGpuChainSupported, resetGpuElementwise, GPU_ELEMENTWISE_OPS, type GpuElementwiseOp, type GpuChainOptions, } from '../gpu/elementwise-gpu.js';
51
+ export { fftGpuDispatch, resetGpuFft, type GpuFftOptions, type GpuFftResult, } from '../gpu/fft-gpu.js';
51
52
  export * from './relational.js';
52
53
  export { typedRelational } from './relational.js';
53
54
  export * from './string.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAWhC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,cAAc,UAAU,CAAC;AAIzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,cAAc,EACd,KAAK,WAAW,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAInC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAsCtC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAWhC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,cAAc,UAAU,CAAC;AAIzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,cAAc,EACd,KAAK,WAAW,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAI3B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAsCtC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/typed/signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/typed/signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EACL,mBAAmB,EAOpB,MAAM,+BAA+B,CAAC;AAWvC,0CAA0C;AAC1C,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB,4BAA4B;AAC5B,KAAK,GAAG,GAAG,MAAM,CAAC;AAgJlB;;;;GAIG;AACH,eAAO,MAAM,WAAW,wCAiDtB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,wCAqBvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,wCAwB/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,wCAoB3B,CAAC;AAMH;;;;GAIG;AACH,eAAO,MAAM,YAAY,wCAmEvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,wCAaxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,wCAQ3B,CAAC;AAMH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAErD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,CAAC,EAAE,MAAM,EAAE,GACX;IAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAyDlC;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAUrD;AAUD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgCzC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgC1C;AAMD;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgCzC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiC1C;AAMD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAe,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2CjG;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC,CAuF1F;AAMD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG;IAAE,EAAE,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAE,CAWzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;IAAE,EAAE,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAUhG;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA4DtD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,MAAM,EAAE,EACX,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+G5E;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,MAAM,EAAE,EACX,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAuD1C;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAE,GAAQ,GAAG,MAAM,EAAE,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAE,GAAQ,GAAG,MAAM,EAAE,CAGlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAE,GAAQ,GAAG,MAAM,EAAE,CAM1F;AA6ED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,EAAE,CAc1E;AAMD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,GAAE,GAAO,GAAG,MAAM,EAAE,CAiBzD;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B7D;AAMD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAY3D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5D;AAUD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAC/B,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAW/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAC/B,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,GAC3B;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAS/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAC/B,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,CAAC,CAAC,EAAE,GAAG,CAAA;CAAE,GAC7B;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAwC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,GAAG,CAG/F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAC/B,CAAC,EAAE,GAAG,EACN,QAAQ,GAAE,GAAO,EACjB,OAAO,GAAE,GAA2E,GACnF;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,YAAY,CAAA;CAAE,CAUxC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCvB,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danielsimonjr/mathts-functions",
3
- "version": "0.20.2",
3
+ "version": "0.22.0",
4
4
  "description": "Mathematical functions for MathTS - arithmetic, algebra, trigonometry, statistics, and more",
5
5
  "author": "Daniel Simon Jr.",
6
6
  "license": "MIT",
@@ -34,11 +34,11 @@
34
34
  "build:prod": "tsup src/index.ts --format esm --clean --minify --treeshake"
35
35
  },
36
36
  "dependencies": {
37
- "@danielsimonjr/mathts-core": "^0.6.0",
38
- "@danielsimonjr/mathts-expression": "^0.6.0",
39
- "@danielsimonjr/mathts-gpu": "^0.1.1",
40
- "@danielsimonjr/mathts-matrix": "^0.4.0",
41
- "@danielsimonjr/mathts-parallel": "^0.3.4",
37
+ "@danielsimonjr/mathts-core": "^0.7.0",
38
+ "@danielsimonjr/mathts-expression": "^0.6.1",
39
+ "@danielsimonjr/mathts-gpu": "^0.2.0",
40
+ "@danielsimonjr/mathts-matrix": "^0.4.2",
41
+ "@danielsimonjr/mathts-parallel": "^0.4.0",
42
42
  "bignumber.js": "^9.1.2",
43
43
  "complex.js": "^2.2.5",
44
44
  "decimal.js": "^10.4.3",