TRIQS/nda 2.0.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 (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<blas_lapack::BlasArray< 2 > A>
requires (mem::have_host_compatible_addr_space<A> and blas_lapack::has_F_layout<A>)
auto nda::linalg::eig_in_place (A &&a)
 Compute the eigenvalues and right eigenvectors of a general matrix in place.
template<Matrix A>
requires (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<blas_lapack::BlasArray< 2 > A>
requires (mem::have_host_compatible_addr_space<A> and blas_lapack::has_F_layout<A>)
auto nda::linalg::eigvals_in_place (A &&a)
 Compute the eigenvalues of a general matrix in place.
template<Vector WR, Vector WI>
requires (mem::have_host_compatible_addr_space<WR, WI> and AnyOf<get_value_t<WR>, float, double> 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 A, Vector B>
requires (mem::have_host_compatible_addr_space<A, B> and AnyOf<get_value_t<A>, std::complex<float>, std::complex<double>> and
have_same_value_type_v<A, B>)
auto nda::linalg::get_ggev_eigenvalues (const A &alpha, const B &beta)
 Get the complex eigenvalues from nda::lapack::ggev output for complex matrices.
template<Vector AR, Vector AI, Vector B>
requires (mem::have_host_compatible_addr_space<AR, AI, B> and FloatOrDouble<get_value_t<AR>> and have_same_value_type_v<AR, AI, B>)
auto nda::linalg::get_ggev_eigenvalues (const AR &alphar, const AI &alphai, const B &beta)
 Get the complex eigenvalues from nda::lapack::ggev output for real matrices.
template<Vector WI, Matrix VA>
requires (mem::have_host_compatible_addr_space<WI, VA> and FloatOrDouble<get_value_t<WI>> and have_same_value_type_v<WI, VA>)
auto nda::linalg::unpack_eigenvectors (const WI &wi, const VA &va)
 Unpack eigenvectors of real matrices from nda::lapack::geev or nda::lapack::ggev output.