37 using cplx = std::complex<double>;
56 void solve(std::vector<cplx>&
d)
const;
constexpr T ipow(T x) noexcept
Compute x^N at compile time via repeated squaring.
Constant-coefficient complex tridiagonal solver (precomputed LU).
std::vector< cplx > inv_b
Inverse of modified main diagonal (precomputed)
void solve(std::vector< cplx > &d) const
In-place Thomas solve.
std::complex< double > cplx
cplx a_coeff
Sub-diagonal value (constant across all rows)
void factor(int n_, cplx a_, cplx b_, cplx c_)
Factor the tridiagonal matrix.
std::vector< cplx > c_mod
Modified super-diagonal (precomputed from LU)