Pure JavaScript library discrete transforms, including Discrete Fourier Transform (DFT); It's fast, inverse, and special forms.
npm i fourier
var fourier = require('fourier');
<script src="https://cdn.jsdelivr.net/npm/fourier/fourier.min.js"></script>
Fast Fourier transform (FFT). Cooley–Tukey algorithm. in-place. Radix-2, Decimation in Time (DIT).
One function for each data type, vector size and coding style
fourier.custom.fft_<type>_<size>_<style>
f32
or f64
16
, 32
, ... 1048576
asm
// Init
var stdlib = {
Math: Math,
Float32Array: Float32Array,
Float64Array: Float64Array
};
// Create heap for the fft data and twiddle factors
var heap = fourier.custom.alloc(65536, 3);
// Create instance of FFT runner
var fft_f64_65536_asm_runner = fourier.custom.fft_f64_65536_asm(stdlib, null, heap);
// Init twiddle factors
fft_f64_65536_asm_runner.init();
// Run transformations
fft_f64_65536_asm_runner.transform();
fourier.dft(realArray, imagArray); // ⇒ [realArray, imagArray]
$$\large Xk=\sum{n=0}^{N-1}x_n\cdot e^{-i 2 \pi k n/N}$$
fourier.idft(realArray, imagArray); // ⇒ [realArray, imagArray]
$$\large xn=\frac{1}{N}\sum{k=0}^{N-1}X_k\cdot e^{i 2 \pi kn/N}$$
npm test
MIT LICENSE.