|
28 | 28 | #include <cppdlr/dlr_imtime.hpp> |
29 | 29 | #include <cppdlr/dlr_kernels.hpp> |
30 | 30 |
|
31 | | -#include <nda/linalg/eigenelements.hpp> |
| 31 | +#include <nda/linalg/eigh.hpp> |
32 | 32 | #include <type_traits> |
33 | 33 |
|
34 | 34 | namespace cppdlr { |
@@ -124,7 +124,7 @@ namespace cppdlr { |
124 | 124 | auto g = Tg(sig.shape()); // Declare Green's function |
125 | 125 | g = rhs; // Get right hand side of Dyson equation |
126 | 126 | auto g_rs = nda::matrix_view<nda::get_value_t<Tg>>(nda::reshape(g, norb, r * norb)); // Reshape g to be compatible w/ LAPACK |
127 | | - nda::lapack::getrs(sysmat, g_rs, ipiv); // Back solve |
| 127 | + nda::lapack::getrs(sysmat, transpose(g_rs), ipiv); // Back solve |
128 | 128 |
|
129 | 129 | if constexpr (std::floating_point<Ht>) { // If h is scalar, g is scalar-valued |
130 | 130 | return g; |
@@ -173,7 +173,7 @@ namespace cppdlr { |
173 | 173 | auto g = Tg(sig.shape()); // Declare Green's function |
174 | 174 | g = rhs; // Get right hand side of Dyson equation |
175 | 175 | auto g_rs = nda::matrix_view<nda::get_value_t<Tg>>(nda::reshape(g, norb, r * norb)); // Reshape g to be compatible w/ LAPACK |
176 | | - nda::lapack::getrs(sysmat, g_rs, ipiv); // Back solve |
| 176 | + nda::lapack::getrs(sysmat, transpose(g_rs), ipiv); // Back solve |
177 | 177 |
|
178 | 178 | if constexpr (std::floating_point<Ht>) { // If h is scalar, g is scalar-valued |
179 | 179 | return g; |
@@ -231,7 +231,7 @@ namespace cppdlr { |
231 | 231 | int norb = h.shape(0); |
232 | 232 |
|
233 | 233 | // Diagonalize Hamiltonian |
234 | | - auto [eval, evec] = nda::linalg::eigenelements(h); |
| 234 | + auto [eval, evec] = nda::linalg::eigh(h); |
235 | 235 |
|
236 | 236 | auto E0 = nda::min_element(eval); |
237 | 237 | eval -= E0; |
|
0 commit comments