fft-symmetric
A fast Fourier transform for the symmetric group over finite fields.
This crate currently implements the semisimple case: for S_n over F_p,
the constructor enforces p > n. The transform uses Young's seminormal
representations and the subgroup chain
S_1 <= S_2 <= ... <= S_n
with coefficients ordered by lexicographic permutation order.
use SymmetricFft;
let fft = new?;
let values = vec!;
let transform = fft.fft?;
let recovered = fft.ifft?;
assert_eq!;
let product = fft.multiply?;
assert_eq!;
let mut unit = vec!;
unit = 5;
let inverse = fft.invert?;
let mut identity = vec!;
identity = 1;
assert_eq!;
for in transform.blocks
# Ok::
The library also exposes naive_dft as a small-rank correctness oracle.
For group algebra products, use multiply; naive_multiply is available as
a direct-convolution baseline. For units, use invert; it applies the FFT,
inverts each Young block over the prime field, and applies the inverse FFT.