TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
eig.hpp
#include "./utils.hpp"
#include "../basic_array.hpp"
#include "../blas/tools.hpp"
#include "../concepts.hpp"
#include "../declarations.hpp"
#include "../exceptions.hpp"
#include "../lapack/geev.hpp"
#include "../layout/policies.hpp"
#include "../macros.hpp"
#include "../matrix_functions.hpp"
#include "../mem/address_space.hpp"
#include "../traits.hpp"
#include <array>
#include <cmath>
#include <complex>
#include <concepts>
#include <tuple>
#include <type_traits>
#include <utility>

Detailed Description

Provides functions to solve eigenvalue problems for general (non-symmetric) matrices.

Definition in file eig.hpp.

Go to the source code of this file.

Functions

template<Matrix A>
requires (nda::mem::have_host_compatible_addr_space<A> and is_blas_lapack_v<get_value_t<A>>)
auto nda::linalg::eig (A const &a)
 Compute the eigenvalues and right eigenvectors of a general matrix.
template<MemoryMatrix A>
requires (nda::mem::have_host_compatible_addr_space<A> and is_blas_lapack_v<get_value_t<A>> and nda::blas::has_F_layout<A>)
auto nda::linalg::eig_in_place (A &&a)
 Compute the eigenvalues and right eigenvectors of a general matrix.
template<MemoryMatrix A>
requires (nda::mem::have_host_compatible_addr_space<A> and is_blas_lapack_v<get_value_t<A>>)
auto nda::linalg::eigvals (A const &a)
 Compute the eigenvalues of a general matrix.
template<MemoryMatrix A>
requires (nda::mem::have_host_compatible_addr_space<A> and is_blas_lapack_v<get_value_t<A>> and nda::blas::has_F_layout<A>)
auto nda::linalg::eigvals_in_place (A &&a)
 Compute the eigenvalues of a general matrix.
template<Vector WR, Vector WI>
requires (mem::have_host_compatible_addr_space<WR, WI> and std::same_as<double, get_value_t<WR>> and have_same_value_type_v<WR, WI>)
auto nda::linalg::get_geev_eigenvalues (const WR &wr, const WI &wi)
 Get the complex eigenvalues from nda::lapack::geev output for real matrices.
template<Vector WI, Matrix VA>
requires (mem::have_host_compatible_addr_space<WI, VA> and std::same_as<double, get_value_t<WI>> and have_same_value_type_v<WI, VA>)
auto nda::linalg::get_geev_eigenvectors (const WI &wi, const VA &va)
 Get the complex left/right eigenvectors from nda::lapack::geev output for real matrices.