/** * Exact Parks-McClellan (Remez exchange) optimal equiripple FIR design. * * This is a faithful TypeScript port of the classic McClellan-Parks-Rabiner * FORTRAN program (via Erik Kvaleberg's `remez.c`), the same code SciPy wraps * in `scipy.signal.remez` (`_sigtoolsmodule.cc`: `pre_remez` + `remez`). It * replaces the earlier Lawson-IRLS approximation. Conventions match SciPy * exactly: band edges are normalized to `[0, 0.5]` (`fs = 1`, `0.5 = Nyquist`), * `desired`/`weight` carry one value per band (length `bands.length / 2`), and * `type` is `'bandpass'` (symmetric), `'differentiator'`, or `'hilbert'` * (antisymmetric). Coefficients are pinned against `scipy.signal.remez` in * `functions/tests/remez-pm.test.ts`. * * The port preserves the original's 1-based array indexing and control flow * (the extremal-search `goto` block is expressed as a small state machine) so * that it reproduces SciPy's discrete-grid extremal selection bit-for-bit. */ /** * Filter type for the Remez exchange design: bandpass, differentiator or Hilbert * transformer. */ export type RemezType = 'bandpass' | 'differentiator' | 'hilbert'; /** * Optimal equiripple FIR design (`scipy.signal.remez`) via the exact * Parks-McClellan / Remez exchange algorithm. `bands` is a flat list of band * edges normalized to `[0, 0.5]` (`fs = 1`, `0.5 = Nyquist`); `desired` and * `weight` carry one value per band (`bands.length / 2` entries). `type` * selects the linear-phase family (`'bandpass'` symmetric; `'differentiator'` * and `'hilbert'` antisymmetric). Returns `numtaps` FIR coefficients. */ export declare function remezExchange(numtaps: number, bands: readonly number[], desired: readonly number[], weight?: readonly number[], type?: RemezType, maxiter?: number, gridDensity?: number): number[]; //# sourceMappingURL=remez-exchange.d.ts.map