@danielsimonjr/mathts-functions 0.20.0 → 0.20.2
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/dist/index.js
CHANGED
|
@@ -3200,6 +3200,63 @@ async function terminateStatistics() {
|
|
|
3200
3200
|
|
|
3201
3201
|
// src/typed/signal.ts
|
|
3202
3202
|
import { mathTyped as mathTyped5 } from "@danielsimonjr/mathts-core";
|
|
3203
|
+
|
|
3204
|
+
// src/signal/fft-core-f64.ts
|
|
3205
|
+
function bitReverse(x, bits) {
|
|
3206
|
+
let result = 0;
|
|
3207
|
+
for (let i = 0; i < bits; i++) {
|
|
3208
|
+
result = result << 1 | x & 1;
|
|
3209
|
+
x >>= 1;
|
|
3210
|
+
}
|
|
3211
|
+
return result;
|
|
3212
|
+
}
|
|
3213
|
+
function fftCoreFloat64(realIn, imagIn, inverse = false) {
|
|
3214
|
+
const n = realIn.length;
|
|
3215
|
+
const bits = Math.log2(n);
|
|
3216
|
+
const real = new Float64Array(n);
|
|
3217
|
+
const imag = new Float64Array(n);
|
|
3218
|
+
for (let i = 0; i < n; i++) {
|
|
3219
|
+
const j = bitReverse(i, bits);
|
|
3220
|
+
real[j] = realIn[i];
|
|
3221
|
+
imag[j] = imagIn[i];
|
|
3222
|
+
}
|
|
3223
|
+
const direction = inverse ? 1 : -1;
|
|
3224
|
+
for (let size2 = 2; size2 <= n; size2 *= 2) {
|
|
3225
|
+
const halfSize = size2 / 2;
|
|
3226
|
+
const angle = direction * 2 * Math.PI / size2;
|
|
3227
|
+
const wRe = Math.cos(angle);
|
|
3228
|
+
const wIm = Math.sin(angle);
|
|
3229
|
+
for (let start = 0; start < n; start += size2) {
|
|
3230
|
+
let tRe = 1;
|
|
3231
|
+
let tIm = 0;
|
|
3232
|
+
for (let j = 0; j < halfSize; j++) {
|
|
3233
|
+
const evenIdx = start + j;
|
|
3234
|
+
const oddIdx = start + j + halfSize;
|
|
3235
|
+
const uRe = real[oddIdx] * tRe - imag[oddIdx] * tIm;
|
|
3236
|
+
const uIm = real[oddIdx] * tIm + imag[oddIdx] * tRe;
|
|
3237
|
+
const eRe = real[evenIdx];
|
|
3238
|
+
const eIm = imag[evenIdx];
|
|
3239
|
+
real[evenIdx] = eRe + uRe;
|
|
3240
|
+
imag[evenIdx] = eIm + uIm;
|
|
3241
|
+
real[oddIdx] = eRe - uRe;
|
|
3242
|
+
imag[oddIdx] = eIm - uIm;
|
|
3243
|
+
const nextTRe = tRe * wRe - tIm * wIm;
|
|
3244
|
+
const nextTIm = tRe * wIm + tIm * wRe;
|
|
3245
|
+
tRe = nextTRe;
|
|
3246
|
+
tIm = nextTIm;
|
|
3247
|
+
}
|
|
3248
|
+
}
|
|
3249
|
+
}
|
|
3250
|
+
if (inverse) {
|
|
3251
|
+
for (let i = 0; i < n; i++) {
|
|
3252
|
+
real[i] /= n;
|
|
3253
|
+
imag[i] /= n;
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
return { real, imag };
|
|
3257
|
+
}
|
|
3258
|
+
|
|
3259
|
+
// src/typed/signal.ts
|
|
3203
3260
|
import { computePool as computePool4 } from "@danielsimonjr/mathts-parallel";
|
|
3204
3261
|
|
|
3205
3262
|
// src/wasm/signal/wasm-bridge.ts
|
|
@@ -3532,59 +3589,6 @@ function nextPowerOf2(n) {
|
|
|
3532
3589
|
if (n <= 1) return 1;
|
|
3533
3590
|
return Math.pow(2, Math.ceil(Math.log2(n)));
|
|
3534
3591
|
}
|
|
3535
|
-
function bitReverse(x, bits) {
|
|
3536
|
-
let result = 0;
|
|
3537
|
-
for (let i = 0; i < bits; i++) {
|
|
3538
|
-
result = result << 1 | x & 1;
|
|
3539
|
-
x >>= 1;
|
|
3540
|
-
}
|
|
3541
|
-
return result;
|
|
3542
|
-
}
|
|
3543
|
-
function fftCoreFloat64(realIn, imagIn, inverse = false) {
|
|
3544
|
-
const n = realIn.length;
|
|
3545
|
-
const bits = Math.log2(n);
|
|
3546
|
-
const real = new Float64Array(n);
|
|
3547
|
-
const imag = new Float64Array(n);
|
|
3548
|
-
for (let i = 0; i < n; i++) {
|
|
3549
|
-
const j = bitReverse(i, bits);
|
|
3550
|
-
real[j] = realIn[i];
|
|
3551
|
-
imag[j] = imagIn[i];
|
|
3552
|
-
}
|
|
3553
|
-
const direction = inverse ? 1 : -1;
|
|
3554
|
-
for (let size2 = 2; size2 <= n; size2 *= 2) {
|
|
3555
|
-
const halfSize = size2 / 2;
|
|
3556
|
-
const angle = direction * 2 * Math.PI / size2;
|
|
3557
|
-
const wRe = Math.cos(angle);
|
|
3558
|
-
const wIm = Math.sin(angle);
|
|
3559
|
-
for (let start = 0; start < n; start += size2) {
|
|
3560
|
-
let tRe = 1;
|
|
3561
|
-
let tIm = 0;
|
|
3562
|
-
for (let j = 0; j < halfSize; j++) {
|
|
3563
|
-
const evenIdx = start + j;
|
|
3564
|
-
const oddIdx = start + j + halfSize;
|
|
3565
|
-
const uRe = real[oddIdx] * tRe - imag[oddIdx] * tIm;
|
|
3566
|
-
const uIm = real[oddIdx] * tIm + imag[oddIdx] * tRe;
|
|
3567
|
-
const eRe = real[evenIdx];
|
|
3568
|
-
const eIm = imag[evenIdx];
|
|
3569
|
-
real[evenIdx] = eRe + uRe;
|
|
3570
|
-
imag[evenIdx] = eIm + uIm;
|
|
3571
|
-
real[oddIdx] = eRe - uRe;
|
|
3572
|
-
imag[oddIdx] = eIm - uIm;
|
|
3573
|
-
const nextTRe = tRe * wRe - tIm * wIm;
|
|
3574
|
-
const nextTIm = tRe * wIm + tIm * wRe;
|
|
3575
|
-
tRe = nextTRe;
|
|
3576
|
-
tIm = nextTIm;
|
|
3577
|
-
}
|
|
3578
|
-
}
|
|
3579
|
-
}
|
|
3580
|
-
if (inverse) {
|
|
3581
|
-
for (let i = 0; i < n; i++) {
|
|
3582
|
-
real[i] /= n;
|
|
3583
|
-
imag[i] /= n;
|
|
3584
|
-
}
|
|
3585
|
-
}
|
|
3586
|
-
return { real, imag };
|
|
3587
|
-
}
|
|
3588
3592
|
async function fourStepFFT(real, imag, inverse) {
|
|
3589
3593
|
const N = real.length;
|
|
3590
3594
|
if (N < 4 || !isPowerOf2(N)) {
|
|
@@ -31753,7 +31757,7 @@ var createSplitUnit = /* @__PURE__ */ factory(
|
|
|
31753
31757
|
);
|
|
31754
31758
|
|
|
31755
31759
|
// src/matrix/fft.ts
|
|
31756
|
-
var
|
|
31760
|
+
var FAST_FFT_THRESHOLD = 64;
|
|
31757
31761
|
function isPowerOf22(n) {
|
|
31758
31762
|
return n > 0 && (n & n - 1) === 0;
|
|
31759
31763
|
}
|
|
@@ -31893,20 +31897,22 @@ var createFft = /* @__PURE__ */ factory(
|
|
|
31893
31897
|
function _fft(arr7, len) {
|
|
31894
31898
|
const length = len ?? arr7.length;
|
|
31895
31899
|
if (length === 1) return [arr7[0]];
|
|
31896
|
-
|
|
31897
|
-
if (wasm && length >= WASM_FFT_THRESHOLD && isPowerOf22(length) && len === void 0) {
|
|
31900
|
+
if (length === arr7.length && length >= FAST_FFT_THRESHOLD && isPowerOf22(length)) {
|
|
31898
31901
|
const interleaved = complexToInterleaved(arr7, complex2);
|
|
31899
31902
|
if (interleaved) {
|
|
31900
|
-
|
|
31901
|
-
|
|
31902
|
-
|
|
31903
|
-
|
|
31904
|
-
|
|
31905
|
-
|
|
31906
|
-
|
|
31907
|
-
|
|
31908
|
-
|
|
31903
|
+
const real = new Float64Array(length);
|
|
31904
|
+
const imag = new Float64Array(length);
|
|
31905
|
+
for (let i = 0; i < length; i++) {
|
|
31906
|
+
real[i] = interleaved[i * 2];
|
|
31907
|
+
imag[i] = interleaved[i * 2 + 1];
|
|
31908
|
+
}
|
|
31909
|
+
const out = fftCoreFloat64(real, imag, false);
|
|
31910
|
+
const result = new Float64Array(length * 2);
|
|
31911
|
+
for (let i = 0; i < length; i++) {
|
|
31912
|
+
result[i * 2] = out.real[i];
|
|
31913
|
+
result[i * 2 + 1] = out.imag[i];
|
|
31909
31914
|
}
|
|
31915
|
+
return interleavedToComplex(result, length, complex2);
|
|
31910
31916
|
}
|
|
31911
31917
|
}
|
|
31912
31918
|
if (length % 2 === 0) {
|
|
@@ -32198,7 +32204,7 @@ var createDivide = /* @__PURE__ */ factory(
|
|
|
32198
32204
|
);
|
|
32199
32205
|
|
|
32200
32206
|
// src/matrix/ifft.ts
|
|
32201
|
-
var
|
|
32207
|
+
var FAST_IFFT_THRESHOLD = 64;
|
|
32202
32208
|
function isPowerOf23(n) {
|
|
32203
32209
|
return n > 0 && (n & n - 1) === 0;
|
|
32204
32210
|
}
|
|
@@ -32239,25 +32245,27 @@ var createIfft = /* @__PURE__ */ factory(
|
|
|
32239
32245
|
const totalSize = size2.reduce((acc, curr) => acc * curr, 1);
|
|
32240
32246
|
if (size2.length === 1) {
|
|
32241
32247
|
const length = size2[0];
|
|
32242
|
-
|
|
32243
|
-
if (wasm && length >= WASM_IFFT_THRESHOLD && isPowerOf23(length)) {
|
|
32248
|
+
if (length >= FAST_IFFT_THRESHOLD && isPowerOf23(length)) {
|
|
32244
32249
|
const arrData = isMatrix(arr7) ? arr7.valueOf() : arr7;
|
|
32245
32250
|
const interleaved = complexToInterleaved2(arrData, complex2);
|
|
32246
32251
|
if (interleaved) {
|
|
32247
|
-
|
|
32248
|
-
|
|
32249
|
-
|
|
32250
|
-
|
|
32251
|
-
|
|
32252
|
-
if (isMatrix(arr7)) {
|
|
32253
|
-
return arr7.create(result);
|
|
32254
|
-
}
|
|
32255
|
-
return result;
|
|
32256
|
-
} finally {
|
|
32257
|
-
wasmLoader.free(dataAlloc.ptr);
|
|
32258
|
-
}
|
|
32259
|
-
} catch {
|
|
32252
|
+
const real = new Float64Array(length);
|
|
32253
|
+
const imag = new Float64Array(length);
|
|
32254
|
+
for (let i = 0; i < length; i++) {
|
|
32255
|
+
real[i] = interleaved[i * 2];
|
|
32256
|
+
imag[i] = interleaved[i * 2 + 1];
|
|
32260
32257
|
}
|
|
32258
|
+
const out = fftCoreFloat64(real, imag, true);
|
|
32259
|
+
const packed = new Float64Array(length * 2);
|
|
32260
|
+
for (let i = 0; i < length; i++) {
|
|
32261
|
+
packed[i * 2] = out.real[i];
|
|
32262
|
+
packed[i * 2 + 1] = out.imag[i];
|
|
32263
|
+
}
|
|
32264
|
+
const result = interleavedToComplex2(packed, length, complex2);
|
|
32265
|
+
if (isMatrix(arr7)) {
|
|
32266
|
+
return arr7.create(result);
|
|
32267
|
+
}
|
|
32268
|
+
return result;
|
|
32261
32269
|
}
|
|
32262
32270
|
}
|
|
32263
32271
|
}
|
package/dist/matrix/fft.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/matrix/fft.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA4D/D,KAAK,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AAIzD,wDAAwD;AACxD,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEhD,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9B,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,WAAW,IAAI,MAAM,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,OAAO,IAAI,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,KAAK,MAAM,CAAC;IAClE,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,QAAQ,CAAC;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/C;AA4BD,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/matrix/fft.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA4D/D,KAAK,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AAIzD,wDAAwD;AACxD,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEhD,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9B,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,WAAW,IAAI,MAAM,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,OAAO,IAAI,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,KAAK,MAAM,CAAC;IAClE,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,QAAQ,CAAC;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/C;AA4BD,eAAO,MAAM,SAAS,sEA4NrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifft.d.ts","sourceRoot":"","sources":["../../src/matrix/ifft.ts"],"names":[],"mappings":"AA6DA,KAAK,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AACzD,KAAK,cAAc,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;AAEzD,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD;AAED,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9B,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,WAAW,IAAI,MAAM,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,OAAO,IAAI,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/C;AAKD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"ifft.d.ts","sourceRoot":"","sources":["../../src/matrix/ifft.ts"],"names":[],"mappings":"AA6DA,KAAK,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AACzD,KAAK,cAAc,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;AAEzD,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD;AAED,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9B,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,WAAW,IAAI,MAAM,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,OAAO,IAAI,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/C;AAKD,eAAO,MAAM,UAAU,sEAuEtB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE radix-2 Cooley-Tukey core for this package, on flat Float64Arrays.
|
|
3
|
+
*
|
|
4
|
+
* There used to be two. This flat one (used by `parallelFFT`), and a second inside
|
|
5
|
+
* `signal/fft.ts` that did the butterfly arithmetic in Complex OBJECTS — a `{ re, im }`
|
|
6
|
+
* allocation per twiddle step and per butterfly. Same transform, same machine:
|
|
7
|
+
*
|
|
8
|
+
* | n | flat Float64Array core | Complex-object core |
|
|
9
|
+
* | --------- | ---------------------- | ------------------- |
|
|
10
|
+
* | 262,144 | 80 ms | 607 ms |
|
|
11
|
+
* | 1,048,576 | 358 ms | 2987 ms |
|
|
12
|
+
*
|
|
13
|
+
* The public `fft()` used the SLOW one, so the FFT every consumer reaches by default was
|
|
14
|
+
* ~8x slower than the library's own fast path. Its `ComplexNumber[]` return type was not
|
|
15
|
+
* the cause: materialising the objects once at the boundary is cheap — doing the
|
|
16
|
+
* ARITHMETIC in them is what cost 8x. Both surfaces now share this core and box at the
|
|
17
|
+
* edge.
|
|
18
|
+
*
|
|
19
|
+
* Internal. Not part of the public API.
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
/** 32-bit int / 64-bit float aliases, matching the annotations used across `signal/`. */
|
|
24
|
+
type i32 = number;
|
|
25
|
+
/**
|
|
26
|
+
* Bit reverse for FFT
|
|
27
|
+
*/
|
|
28
|
+
export declare function bitReverse(x: i32, bits: i32): i32;
|
|
29
|
+
/**
|
|
30
|
+
* Radix-2 FFT core using Float64Array for WASM compatibility
|
|
31
|
+
*/
|
|
32
|
+
export declare function fftCoreFloat64(realIn: Float64Array, imagIn: Float64Array, inverse?: boolean): {
|
|
33
|
+
real: Float64Array;
|
|
34
|
+
imag: Float64Array;
|
|
35
|
+
};
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=fft-core-f64.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fft-core-f64.d.ts","sourceRoot":"","sources":["../../src/signal/fft-core-f64.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,yFAAyF;AACzF,KAAK,GAAG,GAAG,MAAM,CAAC;AAGlB;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAOjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,OAAe,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CA8D5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/typed/signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/typed/signal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED