@danielsimonjr/mathts-matrix 0.7.9 → 0.8.1
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/README.md +51 -14
- package/dist/backends/BackendManager.d.ts +1 -1
- package/dist/backends/BackendManager.d.ts.map +1 -1
- package/dist/backends/GPUBackend.d.ts.map +1 -1
- package/dist/backends/GPUMatrixBackend.d.ts.map +1 -1
- package/dist/backends/JSBackend.d.ts.map +1 -1
- package/dist/backends/ParallelBackend.d.ts +10 -0
- package/dist/backends/ParallelBackend.d.ts.map +1 -1
- package/dist/backends/WASMBackend.d.ts.map +1 -1
- package/dist/backends/gpu/gpu-or-js.d.ts +5 -0
- package/dist/backends/gpu/gpu-or-js.d.ts.map +1 -0
- package/dist/backends/gpu/run-shader.d.ts +37 -0
- package/dist/backends/gpu/run-shader.d.ts.map +1 -0
- package/dist/backends/wasm/as-typed-array.d.ts +37 -0
- package/dist/backends/wasm/as-typed-array.d.ts.map +1 -0
- package/dist/backends/wasm/index.d.ts +0 -2
- package/dist/backends/wasm/index.d.ts.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.js +621 -1047
- package/dist/operations/common.d.ts +79 -2
- package/dist/operations/common.d.ts.map +1 -1
- package/dist/operations/expm.d.ts.map +1 -1
- package/dist/operations/givens.d.ts +22 -0
- package/dist/operations/givens.d.ts.map +1 -0
- package/dist/operations/index.d.ts +1 -0
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/logm.d.ts.map +1 -1
- package/dist/operations/qr-family.d.ts +2 -0
- package/dist/operations/qr-family.d.ts.map +1 -1
- package/dist/operations/schur.d.ts.map +1 -1
- package/dist/operations/sqrtm.d.ts.map +1 -1
- package/dist/operations/svd.d.ts.map +1 -1
- package/dist/parallel-matrix.d.ts.map +1 -1
- package/dist/types/DenseMatrix.d.ts +7 -0
- package/dist/types/DenseMatrix.d.ts.map +1 -1
- package/dist/types/SparseMatrix.d.ts +3 -0
- package/dist/types/SparseMatrix.d.ts.map +1 -1
- package/dist/types/dense/arithmetic.d.ts.map +1 -1
- package/dist/wasm/mathts-as.wasm +0 -0
- package/dist/wasm/wasm-manifest.json +1 -1
- package/package.json +3 -3
- package/dist/backends/WasmLoader.d.ts +0 -356
- package/dist/backends/WasmLoader.d.ts.map +0 -1
- package/dist/backends/wasm/fft-wasm.d.ts +0 -120
- package/dist/backends/wasm/fft-wasm.d.ts.map +0 -1
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WASM Loader - Loads and manages WebAssembly modules
|
|
3
|
-
* Provides a bridge between JavaScript/TypeScript and compiled WASM
|
|
4
|
-
*
|
|
5
|
-
* Optimizations:
|
|
6
|
-
* - Singleton pattern with module caching
|
|
7
|
-
* - Streaming compilation in browsers (WebAssembly.instantiateStreaming)
|
|
8
|
-
* - Memory pooling for frequent allocations
|
|
9
|
-
* - Compiled module caching for faster re-instantiation
|
|
10
|
-
* - Configurable size thresholds for JS fallback
|
|
11
|
-
*
|
|
12
|
-
* AssemblyScript managed-runtime allocation
|
|
13
|
-
* -----------------------------------------
|
|
14
|
-
* AssemblyScript is the sole WASM backend (`mathts-as.wasm`); the legacy
|
|
15
|
-
* second toolchain was removed in the WASM-backend migration (complete 2026-06-26).
|
|
16
|
-
*
|
|
17
|
-
* The AS managed runtime allocates buffers via `__new(byteLength, id)` and
|
|
18
|
-
* its typed-array exports expect a 12-byte *header* pointer (id=5 for
|
|
19
|
-
* Float64Array, id=4 for Int32Array). The header holds
|
|
20
|
-
* [dataStart, dataStart, byteLength] in little-endian u32s. The data block
|
|
21
|
-
* (id=1 = ArrayBuffer) is allocated separately; we pin both so the GC can't
|
|
22
|
-
* reclaim them.
|
|
23
|
-
*
|
|
24
|
-
* Callers receive an opaque `Allocation` handle whose `.ptr` is the header
|
|
25
|
-
* pointer to pass to the WASM function and whose `.array` is a JS view over
|
|
26
|
-
* the data region.
|
|
27
|
-
*/
|
|
28
|
-
import type { LoadingMetrics } from '@danielsimonjr/mathts-core/internal';
|
|
29
|
-
export type { LoadingMetrics };
|
|
30
|
-
/**
|
|
31
|
-
* Functions that the compiled WebAssembly matrix module exports.
|
|
32
|
-
*
|
|
33
|
-
* Each function reads and writes data through pointers into the linear
|
|
34
|
-
* memory of the module. Use the `WasmLoader` allocation methods to get
|
|
35
|
-
* these pointers.
|
|
36
|
-
*/
|
|
37
|
-
export interface WasmModule {
|
|
38
|
-
multiplyDense: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number, resultPtr: number) => void;
|
|
39
|
-
multiplyDenseSIMD: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number, resultPtr: number) => void;
|
|
40
|
-
multiplyVector: (aPtr: number, aRows: number, aCols: number, xPtr: number, resultPtr: number) => void;
|
|
41
|
-
transpose: (dataPtr: number, rows: number, cols: number, resultPtr: number) => void;
|
|
42
|
-
add: (aPtr: number, bPtr: number, size: number, resultPtr: number) => void;
|
|
43
|
-
subtract: (aPtr: number, bPtr: number, size: number, resultPtr: number) => void;
|
|
44
|
-
scalarMultiply: (aPtr: number, scalar: number, size: number, resultPtr: number) => void;
|
|
45
|
-
dotProduct: (aPtr: number, bPtr: number, size: number) => number;
|
|
46
|
-
luDecomposition: (aPtr: number, n: number, permPtr: number) => number;
|
|
47
|
-
qrDecomposition: (aPtr: number, m: number, n: number, qPtr: number) => void;
|
|
48
|
-
choleskyDecomposition: (aPtr: number, n: number, lPtr: number) => number;
|
|
49
|
-
schur: (aPtr: number, n: number, maxIter: number, tol: number, qPtr: number, tPtr: number, workPtr: number) => number;
|
|
50
|
-
luSolve: (luPtr: number, n: number, permPtr: number, bPtr: number, xPtr: number) => void;
|
|
51
|
-
luDeterminant: (luPtr: number, n: number, permPtr: number) => number;
|
|
52
|
-
laDet: (aPtr: number, n: number, workPtr: number) => number;
|
|
53
|
-
laInv: (aPtr: number, n: number, resultPtr: number, workPtr: number) => number;
|
|
54
|
-
laInv2x2: (aPtr: number, resultPtr: number) => number;
|
|
55
|
-
laInv3x3: (aPtr: number, resultPtr: number) => number;
|
|
56
|
-
laCond1: (aPtr: number, n: number, workPtr: number) => number;
|
|
57
|
-
laCondInf: (aPtr: number, n: number, workPtr: number) => number;
|
|
58
|
-
laKron: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number) => number;
|
|
59
|
-
laDot: (aPtr: number, bPtr: number, n: number) => number;
|
|
60
|
-
laCross: (aPtr: number, bPtr: number) => number;
|
|
61
|
-
laNorm2: (xPtr: number, n: number) => number;
|
|
62
|
-
laSolve: (aPtr: number, bPtr: number, n: number, resultPtr: number, workPtr: number) => number;
|
|
63
|
-
laLsolve: (lPtr: number, bPtr: number, n: number, resultPtr: number) => number;
|
|
64
|
-
laUsolve: (uPtr: number, bPtr: number, n: number, resultPtr: number) => number;
|
|
65
|
-
eigsSymmetric: (matrixPtr: number, n: number, precision: number, eigenvaluesPtr: number, eigenvectorsPtr: number, workPtr: number) => number;
|
|
66
|
-
powerIteration: (matrixPtr: number, n: number, eigenvaluePtr: number, eigenvectorPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
|
|
67
|
-
spectralRadius: (matrixPtr: number, n: number, workPtr: number, maxIterations: number, tolerance: number) => number;
|
|
68
|
-
inverseIteration: (matrixPtr: number, n: number, shift: number, eigenvectorPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
|
|
69
|
-
balanceMatrix: (matrixPtr: number, n: number, scalePtr: number, transformPtr: number) => void;
|
|
70
|
-
reduceToHessenberg: (matrixPtr: number, n: number, transformPtr: number) => void;
|
|
71
|
-
eigenvalues2x2: (a: number, b: number, c: number, d: number, realPtr: number, imagPtr: number) => void;
|
|
72
|
-
qrIterationStep: (matrixPtr: number, n: number, workPtr: number, shift: number) => void;
|
|
73
|
-
qrAlgorithm: (matrixPtr: number, n: number, eigenvaluesRealPtr: number, eigenvaluesImagPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
|
|
74
|
-
hessenbergQRStep: (matrixPtr: number, n: number, startRow: number, endRow: number, shift: number) => void;
|
|
75
|
-
expm: (matrixPtr: number, n: number, resultPtr: number, workPtr: number) => number;
|
|
76
|
-
expmSmall: (matrixPtr: number, n: number, resultPtr: number, workPtr: number, terms: number) => void;
|
|
77
|
-
expmv: (matrixPtr: number, n: number, vectorPtr: number, resultPtr: number, workPtr: number, t: number) => void;
|
|
78
|
-
sqrtm: (matrixPtr: number, n: number, resultPtr: number, tolerance: number, maxIterations: number, workPtr: number) => number;
|
|
79
|
-
sqrtmNewtonSchulz: (matrixPtr: number, n: number, resultPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
|
|
80
|
-
sqrtmCholesky: (matrixPtr: number, n: number, resultPtr: number, workPtr: number) => number;
|
|
81
|
-
sparseLu: (valuesPtr: number, rowIndPtr: number, colPtrPtr: number, n: number, nnz: number, lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, permPtr: number, workPtr: number) => number;
|
|
82
|
-
sparseForwardSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, n: number, bPtr: number, xPtr: number) => void;
|
|
83
|
-
sparseBackwardSolve: (uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, n: number, bPtr: number, xPtr: number) => void;
|
|
84
|
-
sparseLuSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, n: number, permPtr: number, bPtr: number, xPtr: number, workPtr: number) => void;
|
|
85
|
-
sparseChol: (valuesPtr: number, rowIndPtr: number, colPtrPtr: number, n: number, nnz: number, lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, parentPtr: number, workPtr: number) => number;
|
|
86
|
-
sparseCholSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, n: number, bPtr: number, xPtr: number, workPtr: number) => void;
|
|
87
|
-
eliminationTree: (rowIndPtr: number, colPtrPtr: number, n: number, parentPtr: number) => void;
|
|
88
|
-
columnCounts: (rowIndPtr: number, colPtrPtr: number, n: number, parentPtr: number, countsPtr: number, workPtr: number) => void;
|
|
89
|
-
amd: (colPtrPtr: number, rowIdxPtr: number, n: number, permPtr: number, workPtr: number) => void;
|
|
90
|
-
amdAggressive: (colPtrPtr: number, rowIdxPtr: number, n: number, permPtr: number, workPtr: number) => void;
|
|
91
|
-
symbolicCholesky: (indexPtr: number, ptrPtr: number, n: number, parentPtr: number, postPtr: number, colCountPtr: number, workPtr: number) => void;
|
|
92
|
-
simdDotF64: (aPtr: number, bPtr: number, length: number) => number;
|
|
93
|
-
simdSumF64: (aPtr: number, length: number) => number;
|
|
94
|
-
simdSumSquaresF64: (aPtr: number, length: number) => number;
|
|
95
|
-
simdNormF64: (aPtr: number, length: number) => number;
|
|
96
|
-
simdMinF64: (aPtr: number, length: number) => number;
|
|
97
|
-
simdMaxF64: (aPtr: number, length: number) => number;
|
|
98
|
-
simdMeanF64: (aPtr: number, length: number) => number;
|
|
99
|
-
simdVarianceF64: (aPtr: number, length: number, ddof: number) => number;
|
|
100
|
-
simdStdF64: (aPtr: number, length: number, ddof: number) => number;
|
|
101
|
-
simdAddF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
102
|
-
simdSubF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
103
|
-
simdMulF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
104
|
-
simdScaleF64: (aPtr: number, scalar: number, resultPtr: number, length: number) => void;
|
|
105
|
-
simdAbsF64: (aPtr: number, resultPtr: number, length: number) => void;
|
|
106
|
-
simdMatMulF64: (aPtr: number, bPtr: number, cPtr: number, m: number, k: number, n: number) => void;
|
|
107
|
-
gcdArray: (aPtr: number, n: number) => number;
|
|
108
|
-
hypotArray: (aPtr: number, n: number) => number;
|
|
109
|
-
norm1: (aPtr: number, n: number) => number;
|
|
110
|
-
norm2: (aPtr: number, n: number) => number;
|
|
111
|
-
normInf: (aPtr: number, n: number) => number;
|
|
112
|
-
normP: (aPtr: number, n: number, p: number) => number;
|
|
113
|
-
erfArray: (aPtr: number, n: number, resultPtr: number) => void;
|
|
114
|
-
zetaArray: (aPtr: number, n: number, resultPtr: number) => void;
|
|
115
|
-
gammaArray: (aPtr: number, n: number, resultPtr: number) => void;
|
|
116
|
-
lgammaArray: (aPtr: number, n: number, resultPtr: number) => void;
|
|
117
|
-
partitionSelect: (dataPtr: number, n: number, k: number, workPtr: number) => number;
|
|
118
|
-
distanceND: (p1Ptr: number, p2Ptr: number, n: number) => number;
|
|
119
|
-
distance2D: (x1: number, y1: number, x2: number, y2: number) => number;
|
|
120
|
-
distance3D: (x1: number, y1: number, z1: number, x2: number, y2: number, z2: number) => number;
|
|
121
|
-
intersect2DLines: (x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, resultPtr: number) => void;
|
|
122
|
-
intersect2DInfiniteLines: (x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, resultPtr: number) => void;
|
|
123
|
-
distancePointToLine2D: (px: number, py: number, x1: number, y1: number, x2: number, y2: number) => number;
|
|
124
|
-
statsMean: (aPtr: number, n: number) => number;
|
|
125
|
-
statsMedian: (aPtr: number, n: number) => number;
|
|
126
|
-
statsSum: (aPtr: number, n: number) => number;
|
|
127
|
-
statsProd: (aPtr: number, n: number) => number;
|
|
128
|
-
statsMin: (aPtr: number, n: number) => number;
|
|
129
|
-
statsMax: (aPtr: number, n: number) => number;
|
|
130
|
-
statsCumsum: (aPtr: number, n: number) => void;
|
|
131
|
-
statsMad: (aPtr: number, n: number) => number;
|
|
132
|
-
statsCorrelation: (aPtr: number, bPtr: number, n: number) => number;
|
|
133
|
-
statsCovariance: (aPtr: number, bPtr: number, n: number, ddof: number) => number;
|
|
134
|
-
freqz: (bPtr: number, bLen: number, aPtr: number, aLen: number, wPtr: number, wLen: number, hRealPtr: number, hImagPtr: number) => void;
|
|
135
|
-
fft: (dataPtr: number, n: number, inverse: number) => void;
|
|
136
|
-
fft2d: (dataPtr: number, rows: number, cols: number, inverse: number) => void;
|
|
137
|
-
convolve: (signalPtr: number, n: number, kernelPtr: number, m: number, resultPtr: number) => void;
|
|
138
|
-
rfft: (dataPtr: number, n: number, resultPtr: number) => void;
|
|
139
|
-
irfft: (dataPtr: number, n: number, resultPtr: number) => void;
|
|
140
|
-
isPowerOf2: (n: number) => number;
|
|
141
|
-
vectorAdd: (aPtr: number, bPtr: number, n: number, resultPtr: number) => void;
|
|
142
|
-
vectorScale: (aPtr: number, scalar: number, n: number, resultPtr: number) => void;
|
|
143
|
-
vectorCopy: (srcPtr: number, n: number, dstPtr: number) => void;
|
|
144
|
-
maxError: (errorPtr: number, n: number) => number;
|
|
145
|
-
computeStepAdjustment: (maxErr: number, tol: number, order: number, minDelta: number, maxDelta: number) => number;
|
|
146
|
-
rk45Step: (yPtr: number, t: number, h: number, n: number, kPtr: number, yNextPtr: number, yErrorPtr: number) => void;
|
|
147
|
-
rk23Step: (yPtr: number, t: number, h: number, n: number, kPtr: number, yNextPtr: number, yErrorPtr: number) => void;
|
|
148
|
-
bitAndArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
149
|
-
bitOrArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
150
|
-
bitXorArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
151
|
-
bitNotArray?: (inputPtr: number, resultPtr: number, length: number) => void;
|
|
152
|
-
leftShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
153
|
-
rightArithShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
154
|
-
rightLogShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
|
|
155
|
-
bitAnd_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
156
|
-
bitOr_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
157
|
-
bitXor_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
158
|
-
bitNot_i32_array?: (a: Int32Array, result: Int32Array) => void;
|
|
159
|
-
leftShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
160
|
-
rightArithShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
161
|
-
rightLogShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
|
|
162
|
-
matrix_lu_decompose?: (aHdr: number, n: number, lOutHdr: number, uOutHdr: number, permOutHdr: number) => number;
|
|
163
|
-
matrix_qr_decompose?: (aHdr: number, m: number, n: number, qOutHdr: number, rOutHdr: number, vWorkHdr?: number) => number;
|
|
164
|
-
matrix_cholesky?: (aHdr: number, n: number, lOutHdr: number) => number;
|
|
165
|
-
matrix_inverse?: (aHdr: number, n: number, resultHdr: number, workHdr: number) => number;
|
|
166
|
-
matrix_determinant?: (aHdr: number, n: number, workHdr: number) => number;
|
|
167
|
-
__new: (size: number, id: number) => number;
|
|
168
|
-
__pin: (ptr: number) => number;
|
|
169
|
-
__unpin: (ptr: number) => void;
|
|
170
|
-
__collect: () => void;
|
|
171
|
-
memory: WebAssembly.Memory;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Opaque allocation handle returned by `allocateFloat64Array` and friends.
|
|
175
|
-
*
|
|
176
|
-
* Callers treat `ptr` as the typed-array *header* pointer to pass to WASM
|
|
177
|
-
* functions. The `array` view is positioned over the data region so callers
|
|
178
|
-
* can `set()` and read it as JS expects.
|
|
179
|
-
*/
|
|
180
|
-
export interface Allocation<TArray extends Float64Array | Int32Array> {
|
|
181
|
-
/** Header pointer to pass to WASM functions. */
|
|
182
|
-
readonly ptr: number;
|
|
183
|
-
/** JS-side view of the data region. */
|
|
184
|
-
array: TArray;
|
|
185
|
-
/** Element length (independent of byte-width). */
|
|
186
|
-
readonly length: number;
|
|
187
|
-
/** Internal: the data-block offset (the ArrayBuffer the header points at). */
|
|
188
|
-
readonly dataPtr: number;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Singleton that compiles, loads, and caches the WebAssembly matrix module.
|
|
192
|
-
*
|
|
193
|
-
* Use `WasmLoader.getInstance()` to get the instance; the constructor is
|
|
194
|
-
* private. The loader also allocates typed arrays in the memory of the
|
|
195
|
-
* module, keeps a pool of released allocations, and records loading metrics.
|
|
196
|
-
*/
|
|
197
|
-
export declare class WasmLoader {
|
|
198
|
-
private static instance;
|
|
199
|
-
private wasmModule;
|
|
200
|
-
private compiledModule;
|
|
201
|
-
private loading;
|
|
202
|
-
private isNode;
|
|
203
|
-
private lastMetrics;
|
|
204
|
-
private float64Pool;
|
|
205
|
-
private int32Pool;
|
|
206
|
-
private readonly poolSizeThreshold;
|
|
207
|
-
private constructor();
|
|
208
|
-
static getInstance(): WasmLoader;
|
|
209
|
-
/**
|
|
210
|
-
* Load the WASM module
|
|
211
|
-
*/
|
|
212
|
-
load(wasmPath?: string): Promise<WasmModule>;
|
|
213
|
-
/**
|
|
214
|
-
* Precompile the WASM module without instantiation
|
|
215
|
-
* Useful for build-time or startup optimization
|
|
216
|
-
*/
|
|
217
|
-
precompile(wasmPath?: string): Promise<void>;
|
|
218
|
-
private loadModule;
|
|
219
|
-
/**
|
|
220
|
-
* Get the WASM binary path. AssemblyScript is the sole WASM backend
|
|
221
|
-
* (`mathts-as.wasm`); the legacy second toolchain was removed in the
|
|
222
|
-
* WASM-backend migration (complete 2026-06-26).
|
|
223
|
-
*
|
|
224
|
-
* Resolution is package-relative and CWD-independent: the packaged artifact
|
|
225
|
-
* (`dist/wasm/`) is preferred via `resolvePackagedWasm`; when absent, the
|
|
226
|
-
* canonical expected location is returned so the missing-binary warning is
|
|
227
|
-
* actionable (see `defaultWasmLocation` in wasm/resolve.ts — B-3).
|
|
228
|
-
*/
|
|
229
|
-
private getDefaultWasmPath;
|
|
230
|
-
private loadNodeWasm;
|
|
231
|
-
private loadBrowserWasm;
|
|
232
|
-
private getImports;
|
|
233
|
-
/**
|
|
234
|
-
* Get the loaded WASM module
|
|
235
|
-
*/
|
|
236
|
-
getModule(): WasmModule | null;
|
|
237
|
-
/**
|
|
238
|
-
* Get the compiled WASM module (for caching/serialization)
|
|
239
|
-
*/
|
|
240
|
-
getCompiledModule(): WebAssembly.Module | null;
|
|
241
|
-
/**
|
|
242
|
-
* Check if WASM is loaded
|
|
243
|
-
*/
|
|
244
|
-
isLoaded(): boolean;
|
|
245
|
-
/**
|
|
246
|
-
* Check if WASM is precompiled
|
|
247
|
-
*/
|
|
248
|
-
isPrecompiled(): boolean;
|
|
249
|
-
/**
|
|
250
|
-
* Get loading performance metrics
|
|
251
|
-
*/
|
|
252
|
-
getLoadingMetrics(): LoadingMetrics | null;
|
|
253
|
-
/**
|
|
254
|
-
* Allocate Float64Array in WASM memory and copy `data` into it.
|
|
255
|
-
* Uses memory pooling.
|
|
256
|
-
*/
|
|
257
|
-
allocateFloat64Array(data: number[] | Float64Array): Allocation<Float64Array>;
|
|
258
|
-
/**
|
|
259
|
-
* Decode a managed Float64Array RETURNED by an AssemblyScript export
|
|
260
|
-
* (e.g. the `matrix_lu_decompose` / `matrix_qr_decompose` outputs) into a fresh JS copy.
|
|
261
|
-
*
|
|
262
|
-
* AS exports that return a `Float64Array` hand back the typed-array
|
|
263
|
-
* *header* pointer. The header is a 12-byte block laid out as
|
|
264
|
-
* `[buffer, dataStart, byteLength]` (little-endian u32s) — the same shape
|
|
265
|
-
* the loader writes in `makeAsFloat64`. We read `dataStart`/`byteLength`
|
|
266
|
-
* and copy the data region out so it survives any later reuse of WASM
|
|
267
|
-
* memory.
|
|
268
|
-
*/
|
|
269
|
-
readReturnedFloat64Array(headerPtr: number): Float64Array;
|
|
270
|
-
/**
|
|
271
|
-
* Allocate a zero-filled Float64Array (for output buffers). Zeroed explicitly,
|
|
272
|
-
* since a recycled pool block still holds its previous contents.
|
|
273
|
-
*/
|
|
274
|
-
allocateFloat64ArrayEmpty(length: number): Allocation<Float64Array>;
|
|
275
|
-
/**
|
|
276
|
-
* Allocate Int32Array in WASM memory and copy `data` into it.
|
|
277
|
-
*/
|
|
278
|
-
allocateInt32Array(data: number[] | Int32Array): Allocation<Int32Array>;
|
|
279
|
-
/**
|
|
280
|
-
* Allocate a zero-filled Int32Array (for output buffers). Zeroed explicitly,
|
|
281
|
-
* since a recycled pool block still holds its previous contents.
|
|
282
|
-
*/
|
|
283
|
-
allocateInt32ArrayEmpty(length: number): Allocation<Int32Array>;
|
|
284
|
-
private allocateAsFloat64;
|
|
285
|
-
private allocateAsInt32;
|
|
286
|
-
private makeAsFloat64;
|
|
287
|
-
private makeAsInt32;
|
|
288
|
-
/** Record a new in-use allocation so it can be recycled once released. */
|
|
289
|
-
private track;
|
|
290
|
-
/**
|
|
291
|
-
* Find a released pool entry whose data region is large enough (best fit,
|
|
292
|
-
* at most 2x the request); returns null when none is available. The entry's
|
|
293
|
-
* header `byteLength` is rewritten to the requested size, because kernels read
|
|
294
|
-
* their length from the header: a recycled larger block would otherwise make
|
|
295
|
-
* them process trailing elements the caller never wrote.
|
|
296
|
-
*/
|
|
297
|
-
private acquireFromAsPool;
|
|
298
|
-
/** The pool entry for a header pointer, searching both pools. */
|
|
299
|
-
private findEntry;
|
|
300
|
-
/** Unpin an allocation's header and its separately pinned data buffer. */
|
|
301
|
-
private unpinAllocation;
|
|
302
|
-
/** Data pointer recorded in an AS typed-array header (`dataStart`). */
|
|
303
|
-
private headerDataPtr;
|
|
304
|
-
/**
|
|
305
|
-
* Return an allocation to the pool for reuse.
|
|
306
|
-
*
|
|
307
|
-
* Both pools are searched, so `isFloat64` is only a hint kept for backwards
|
|
308
|
-
* compatibility. An allocation above `poolSizeThreshold` is not pooled; it is
|
|
309
|
-
* unpinned instead (header and data buffer), which under the stub runtime
|
|
310
|
-
* leaves it allocated but at least unpinned for a GC runtime.
|
|
311
|
-
*/
|
|
312
|
-
release(ptr: number, isFloat64?: boolean): void;
|
|
313
|
-
/**
|
|
314
|
-
* Release an allocation the caller is done with. A pooled block goes back to
|
|
315
|
-
* the pool, because the stub runtime cannot reclaim it and recycling is the
|
|
316
|
-
* only way to reuse the memory; a larger block is unpinned. Same as
|
|
317
|
-
* `release()`.
|
|
318
|
-
*/
|
|
319
|
-
free(ptr: number): void;
|
|
320
|
-
/**
|
|
321
|
-
* Clear the memory pool
|
|
322
|
-
*/
|
|
323
|
-
clearPool(): void;
|
|
324
|
-
/**
|
|
325
|
-
* Get pool statistics
|
|
326
|
-
*/
|
|
327
|
-
getPoolStats(): {
|
|
328
|
-
float64: {
|
|
329
|
-
total: number;
|
|
330
|
-
inUse: number;
|
|
331
|
-
totalBytes: number;
|
|
332
|
-
};
|
|
333
|
-
int32: {
|
|
334
|
-
total: number;
|
|
335
|
-
inUse: number;
|
|
336
|
-
totalBytes: number;
|
|
337
|
-
};
|
|
338
|
-
};
|
|
339
|
-
/**
|
|
340
|
-
* Run garbage collection.
|
|
341
|
-
*/
|
|
342
|
-
collect(): void;
|
|
343
|
-
/**
|
|
344
|
-
* Reset the loader (for testing)
|
|
345
|
-
*/
|
|
346
|
-
reset(): void;
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Global WASM loader instance
|
|
350
|
-
*/
|
|
351
|
-
export declare const wasmLoader: WasmLoader;
|
|
352
|
-
/**
|
|
353
|
-
* Initialize WASM module (call once at startup)
|
|
354
|
-
*/
|
|
355
|
-
export declare function initWasm(wasmPath?: string): Promise<WasmModule>;
|
|
356
|
-
//# sourceMappingURL=WasmLoader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WasmLoader.d.ts","sourceRoot":"","sources":["../../src/backends/WasmLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WASM-Accelerated FFT Operations
|
|
3
|
-
*
|
|
4
|
-
* Wraps the AssemblyScript WASM FFT exports (`fft` / `rfft` / `powerSpectrum`,
|
|
5
|
-
* `assembly/src/ops/fft.ts`, interleaved complex format) with a high-level
|
|
6
|
-
* TypeScript API. Falls back to a pure JavaScript Cooley-Tukey radix-2
|
|
7
|
-
* implementation when WASM is unavailable. (Phase 7b: the matrix loader now
|
|
8
|
-
* defaults to the AS binary; the AS `fft(data, n, inverse)` / `rfft(data, n,
|
|
9
|
-
* result)` / `powerSpectrum(data, n, result)` call shapes match the consumer
|
|
10
|
-
* exactly, so this module needed no marshalling changes.)
|
|
11
|
-
*
|
|
12
|
-
* The WASM kernels use interleaved complex arrays: [re0, im0, re1, im1, ...].
|
|
13
|
-
* This module converts between split (separate real/imag) and interleaved
|
|
14
|
-
* formats as needed.
|
|
15
|
-
*
|
|
16
|
-
* @packageDocumentation
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* FFT result with separate real and imaginary arrays
|
|
20
|
-
*/
|
|
21
|
-
export interface FFTResult {
|
|
22
|
-
real: Float64Array;
|
|
23
|
-
imag: Float64Array;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* FFT backend selection
|
|
27
|
-
*/
|
|
28
|
-
export type FFTBackend = 'wasm' | 'js' | 'auto';
|
|
29
|
-
/**
|
|
30
|
-
* Configuration for FFT operations
|
|
31
|
-
*/
|
|
32
|
-
export interface FFTConfig {
|
|
33
|
-
/** Backend to use (default: 'auto') */
|
|
34
|
-
backend?: FFTBackend;
|
|
35
|
-
/** Minimum elements to use WASM (default: 64) */
|
|
36
|
-
wasmThreshold?: number;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Check if n is a power of 2
|
|
40
|
-
*/
|
|
41
|
-
export declare function isPowerOf2(n: number): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Next power of 2 >= n
|
|
44
|
-
*/
|
|
45
|
-
export declare function nextPowerOf2(n: number): number;
|
|
46
|
-
/**
|
|
47
|
-
* Pure JavaScript Cooley-Tukey radix-2 FFT
|
|
48
|
-
*
|
|
49
|
-
* Input length must be a power of 2.
|
|
50
|
-
*/
|
|
51
|
-
export declare function fftJS(real: Float64Array, imag: Float64Array, inverse?: boolean): FFTResult;
|
|
52
|
-
/**
|
|
53
|
-
* Check if the WASM FFT backend is available
|
|
54
|
-
*/
|
|
55
|
-
export declare function isWasmFFTAvailable(): boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Compute the Fast Fourier Transform.
|
|
58
|
-
*
|
|
59
|
-
* Automatically selects WASM or JS backend based on availability and
|
|
60
|
-
* array size. Input length must be a power of 2.
|
|
61
|
-
*
|
|
62
|
-
* @param real - Real part of input signal
|
|
63
|
-
* @param imag - Imaginary part (zeros for real-only input)
|
|
64
|
-
* @param config - Backend configuration
|
|
65
|
-
* @returns FFT result with real and imaginary arrays
|
|
66
|
-
*/
|
|
67
|
-
export declare function fft(real: Float64Array, imag: Float64Array, config?: FFTConfig): FFTResult;
|
|
68
|
-
/**
|
|
69
|
-
* Compute the Inverse Fast Fourier Transform.
|
|
70
|
-
*
|
|
71
|
-
* @param real - Real part of frequency-domain signal
|
|
72
|
-
* @param imag - Imaginary part of frequency-domain signal
|
|
73
|
-
* @param config - Backend configuration
|
|
74
|
-
* @returns Time-domain signal with real and imaginary arrays
|
|
75
|
-
*/
|
|
76
|
-
export declare function ifft(real: Float64Array, imag: Float64Array, config?: FFTConfig): FFTResult;
|
|
77
|
-
/**
|
|
78
|
-
* Compute the real FFT (real input -> complex output).
|
|
79
|
-
*
|
|
80
|
-
* Convenience wrapper that creates a zero imaginary array.
|
|
81
|
-
*
|
|
82
|
-
* @param data - Real-valued input signal (length must be power of 2)
|
|
83
|
-
* @param config - Backend configuration
|
|
84
|
-
* @returns FFT result
|
|
85
|
-
*/
|
|
86
|
-
export declare function rfft(data: Float64Array, config?: FFTConfig): FFTResult;
|
|
87
|
-
/**
|
|
88
|
-
* Compute the power spectrum: |X[k]|^2 for each frequency bin.
|
|
89
|
-
*
|
|
90
|
-
* @param real - Real part of FFT output
|
|
91
|
-
* @param imag - Imaginary part of FFT output
|
|
92
|
-
* @returns Power spectrum array
|
|
93
|
-
*/
|
|
94
|
-
export declare function powerSpectrum(real: Float64Array, imag: Float64Array): Float64Array;
|
|
95
|
-
/**
|
|
96
|
-
* Compute the magnitude spectrum: |X[k]| for each frequency bin.
|
|
97
|
-
*
|
|
98
|
-
* @param real - Real part of FFT output
|
|
99
|
-
* @param imag - Imaginary part of FFT output
|
|
100
|
-
* @returns Magnitude spectrum array
|
|
101
|
-
*/
|
|
102
|
-
export declare function magnitudeSpectrum(real: Float64Array, imag: Float64Array): Float64Array;
|
|
103
|
-
/**
|
|
104
|
-
* Compute the phase spectrum: angle(X[k]) for each frequency bin.
|
|
105
|
-
*
|
|
106
|
-
* @param real - Real part of FFT output
|
|
107
|
-
* @param imag - Imaginary part of FFT output
|
|
108
|
-
* @returns Phase spectrum array (radians)
|
|
109
|
-
*/
|
|
110
|
-
export declare function phaseSpectrum(real: Float64Array, imag: Float64Array): Float64Array;
|
|
111
|
-
/**
|
|
112
|
-
* FFT-based convolution: conv(signal, kernel) = IFFT(FFT(signal) * FFT(kernel))
|
|
113
|
-
*
|
|
114
|
-
* @param signal - Input signal
|
|
115
|
-
* @param kernel - Convolution kernel
|
|
116
|
-
* @param config - Backend configuration
|
|
117
|
-
* @returns Convolution result (length = signal.length + kernel.length - 1)
|
|
118
|
-
*/
|
|
119
|
-
export declare function convolve(signal: Float64Array, kernel: Float64Array, config?: FFTConfig): Float64Array;
|
|
120
|
-
//# sourceMappingURL=fft-wasm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fft-wasm.d.ts","sourceRoot":"","sources":["../../../src/backends/wasm/fft-wasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqDD;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,OAAe,GAAG,SAAS,CA+EjG;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,SAAc,GAAG,SAAS,CAgB7F;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,SAAc,GAAG,SAAS,CAgB9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,SAAc,GAAG,SAAS,CAqC1E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAkClF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAOtF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAOlF;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,SAAc,GACrB,YAAY,CAkCd"}
|