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

Detailed Description

Provides functions to solve (generalized) eigenvalue problems with a symmetric/hermitian matrices.

Definition in file eigh.hpp.

Go to the source code of this file.

Functions

template<Matrix A>
requires (Scalar<get_value_t<A>>)
auto nda::linalg::eigh (A const &a)
 Compute the eigenvalues and eigenvectors of a real symmetric or complex hermitian matrix.
template<Matrix A, Matrix B>
requires (Scalar<get_value_t<A>> and Scalar<get_value_t<B>>)
auto nda::linalg::eigh (A const &a, B const &b, int itype=1)
 Compute the eigenvalues and eigenvectors of a generalized real symmetric-definite or complex hermitian-definite eigenvalue problem.
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::eigh_in_place (A &&a)
 Compute the eigenvalues and eigenvectors of a real symmetric or complex hermitian matrix.
template<MemoryMatrix A, MemoryMatrix B>
requires (nda::mem::have_host_compatible_addr_space<A, B> and is_blas_lapack_v<get_value_t<A>> and have_same_value_type_v<A, B> and nda::blas::has_F_layout<A> and nda::blas::has_F_layout<B>)
auto nda::linalg::eigh_in_place (A &&a, B &&b, int itype=1)
 Compute the eigenvalues and eigenvectors of a generalized real symmetric-definite or complex hermitian-definite eigenvalue problem.
template<Matrix A>
requires (Scalar<get_value_t<A>>)
auto nda::linalg::eigvalsh (A const &a)
 Compute the eigenvalues of a real symmetric or complex hermitian matrix.
template<Matrix A, Matrix B>
requires (Scalar<get_value_t<A>> and Scalar<get_value_t<B>>)
auto nda::linalg::eigvalsh (A const &a, B const &b, int itype=1)
 Compute the eigenvalues of a generalized real symmetric-definite or complex hermitian-definite eigenvalue problem.
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::eigvalsh_in_place (A &&a)
 Compute the eigenvalues of a real symmetric or complex hermitian matrix.
template<MemoryMatrix A, MemoryMatrix B>
requires (nda::mem::have_host_compatible_addr_space<A, B> and is_blas_lapack_v<get_value_t<A>> and have_same_value_type_v<A, B> and nda::blas::has_F_layout<A> and nda::blas::has_F_layout<B>)
auto nda::linalg::eigvalsh_in_place (A &&a, B &&b, int itype=1)
 Compute the eigenvalues of a generalized real symmetric-definite or complex hermitian-definite eigenvalue problem.