Oh I missed this, reading from the bottom. Any weird wrapper will mean *
can’t use BLAS.
But it’s also structure you can perhaps exploit. Here https://github.com/JuliaMatrices/SpecialMatrices.jl/blob/master/src/circulant.jl#L26 it seems to have special methods for *
with a vector. By writing fft(x,1)
etc. you could probably extend that to *
with a matrix. I see Remove Toeplitz, Hankel, and circulant matrices by devmotion · Pull Request #40 · JuliaLinearAlgebra/SpecialMatrices.jl · GitHub points towards ToeplitzMatrices.jl which may have a more complete version?