# @phoebe/signal

Real-time streaming signal processing for neural interfaces: a dependency-free
dense linear-algebra kernel (matrix ops, cyclic-Jacobi symmetric eigensolver,
Cholesky, matrix inverse, symmetric matrix functions, and the generalized
symmetric eigenproblem `geig`), streaming IIR filters (Butterworth low/high/band
biquad cascades and a 50/60 Hz mains notch, run causally in Direct-Form-II
transposed) with re-referencing / decimation / epoching, FastICA artifact
separation with an ICLabel-style component classifier, online drift / impedance
change detection (EWMA + Page–Hinkley + CUSUM), CSP and xDAWN spatial filters via
generalized eigendecomposition, SPD-covariance Riemannian methods (affine-
invariant distance, Fréchet mean, tangent-space projection, MDM classifier, and
recenter+stretch Procrustes alignment for cross-session transfer), and streaming
spike-binning / band-power feature extraction.

All algorithms here are implemented in TypeScript and verified numerically
against closed-form / published values in the test suite. The phase spec names
Rust for the production bounded-latency hot path (SIMD biquad cascades, real-time
FFT, lock-free ring buffers). That Rust port is a deliberate follow-up: the
TypeScript here is the reference implementation and correctness oracle, not a
placeholder — every routine is a real, converged algorithm.
