API Contract
This document defines the public API exported from
src/index.ts. Public signatures and behavior must remain aligned across implementation, documentation, and examples.
Core FFT Engine
createFFTEngine()
typescript
async function createFFTEngine(config?: Partial<FFTEngineConfig>): Promise<FFTEngine>;1
- Creates and initializes a GPU FFT engine
- Throws
FFTErrorwithWEBGPU_NOT_AVAILABLEwhen WebGPU cannot be initialized
FFTEngine
typescript
interface FFTEngine {
fft(input: Float32Array): Promise<Float32Array>;
ifft(input: Float32Array): Promise<Float32Array>;
rfft(input: Float32Array): Promise<Float32Array>;
irfft(input: Float32Array): Promise<Float32Array>;
fft2d(input: Float32Array, width: number, height: number): Promise<Float32Array>;
ifft2d(input: Float32Array, width: number, height: number): Promise<Float32Array>;
rfft2d(input: Float32Array, width: number, height: number): Promise<Float32Array>;
irfft2d(input: Float32Array, width: number, height: number): Promise<Float32Array>;
dispose(): void;
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Real-input contracts
rfft()accepts a real-valued signal of lengthNand returns an interleaved complex half-spectrum withN / 2 + 1binsirfft()accepts a valid half-spectrum and returns a real-valued signal of lengthNrfft2d()accepts a real-valuedwidth × heightinput and returnsheight × (width / 2 + 1)interleaved complex binsirfft2d()accepts that compressed 2D spectrum plus the originalwidthandheight, then returns a real-valuedwidth × heightoutput
CPU FFT Functions
typescript
function cpuFFT(input: Float32Array): Float32Array;
function cpuIFFT(input: Float32Array): Float32Array;
function cpuFFT2D(input: Float32Array, width: number, height: number): Float32Array;
function cpuIFFT2D(input: Float32Array, width: number, height: number): Float32Array;
function cpuRFFT(input: Float32Array): Float32Array;
function cpuIRFFT(input: Float32Array): Float32Array;
function cpuRFFT2D(input: Float32Array, width: number, height: number): Float32Array;
function cpuIRFFT2D(input: Float32Array, width: number, height: number): Float32Array;1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Real-input backend seam
typescript
function createRealFFTBackend(backend: FFTBackend): RealFFTBackend;1
- Promotes a complex FFT backend to the
RealFFTBackendseam - Encapsulates Hermitian packing and expansion as implementation details
- Preserves the backend's synchronous or asynchronous execution model
Validation Helpers
typescript
function validateFFTInput(input: Float32Array): number;
function validateFFT2DInput(input: Float32Array, width: number, height: number): void;1
2
2
Application Utilities
typescript
function createSpectrumAnalyzer(config: SpectrumAnalyzerConfig): SpectrumAnalyzer;
function createImageFilter(config: ImageFilterConfig): ImageFilter;1
2
2
typescript
class SpectrumAnalyzer {
analyze(audioData: Float32Array): Promise<Float32Array>;
getFrequencies(): Float32Array;
getFrequency(binIndex: number): number;
dispose(): void;
}1
2
3
4
5
6
2
3
4
5
6
typescript
class ImageFilter {
apply(imageData: Float32Array, width: number, height: number): Promise<Float32Array>;
dispose(): void;
}1
2
3
4
2
3
4
CPU-only
createSpectrumAnalyzer() and createImageFilter() are CPU-only utilities and must not be documented as GPU-accelerated FFT execution surfaces.
GPU Detection
typescript
async function isWebGPUAvailable(): Promise<boolean>;
function hasWebGPUSupport(): boolean;1
2
2
Utility Exports
The public API also exports:
- complex-number helpers
- bit-reversal helpers:
bitReverse(value: number, bitWidth: number): numberlog2(n: number): numberisPowerOf2(n: number): booleanbitReversalPermutation(data: Float32Array): Float32ArraybitReversalPermutationInPlace(data: Float32Array): void
- window functions:
hannWindow(size: number): Float32ArrayhammingWindow(size: number): Float32ArrayblackmanWindow(size: number): Float32ArrayflatTopWindow(size: number): Float32ArrayrectangularWindow(size: number): Float32ArrayapplyWindow(signal: Float32Array, window: Float32Array): Float32ArrayapplyWindowComplex(signal: Float32Array, window: Float32Array): Float32Array
- public TypeScript types
FFTErrorandFFTErrorCode
Input Validation
Utility functions must reject invalid shapes instead of returning silently corrupted output. Window sizes must be positive integers; one-sample windows return [1]. Bit-reversal permutation inputs must be interleaved complex arrays with a power-of-two number of complex samples.