Template Function Q_matrix_to_mcf

Function Documentation

template<typename HilbertField>
matrix_continued_fraction<HilbertField> Q_matrix_to_mcf(const Q_matrix<HilbertField> &Q)

Convert a Q_matrix into a matrix_continued_fraction via block Lanczos.

The Hamiltonian used is the diagonal matrix H = diag(Q.e[0], …, Q.e[M-1]). The L starting vectors are the L rows of Q.v. The resulting MCF is equivalent to the Lehmann sum G(z)(a,b) = sum_k Q.v(a,k) * conj(Q.v(b,k)) / (z - Q.e[k]).

The weight matrix W is extracted from Q.v via modified Gram-Schmidt (as in combine_via_lanczos), so that G(z) = W^H F_0(z) W.

M0 is set to Q.M (the Krylov space cannot exceed the eigenvalue count M), capped by the global parameter max_iter_BL.

Parameters:

Q – Combined Q_matrix (electron + hole poles, already energy-shifted).

Returns:

matrix_continued_fraction equivalent to Q.