lambda-lanczos 2.0.0
Loading...
Searching...
No Matches
lambda_lanczos_tridiagonal_impl.hpp File Reference
#include <iostream>
#include <vector>
#include <complex>
#include <algorithm>
#include <functional>
#include <iterator>
#include "lambda_lanczos_util.hpp"

Go to the source code of this file.

Namespaces

namespace  lambda_lanczos
 
namespace  lambda_lanczos::tridiagonal_impl
 

Functions

template<typename T >
size_t lambda_lanczos::tridiagonal_impl::num_of_eigs_smaller_than (T c, const std::vector< T > &alpha, const std::vector< T > &beta)
 Finds the number of eigenvalues of given tridiagonal matrix smaller than c. More...
 
template<typename T >
lambda_lanczos::tridiagonal_impl::tridiagonal_eigen_limit (const std::vector< T > &alpha, const std::vector< T > &beta)
 Computes the upper bound of the absolute value of eigenvalues by Gerschgorin theorem. More...
 
template<typename T >
lambda_lanczos::tridiagonal_impl::find_mth_eigenvalue (const std::vector< T > &alpha, const std::vector< T > &beta, const size_t m)
 Finds the mth smaller eigenvalue of given tridiagonal matrix. More...
 
template<typename T >
std::vector< T > lambda_lanczos::tridiagonal_impl::compute_tridiagonal_eigenvector_from_eigenvalue (const std::vector< T > &alpha, const std::vector< T > &beta, const size_t index, const T ev)
 Computes an eigenvector corresponding to given eigenvalue for given tri-diagonal matrix. More...
 
template<typename T >
void lambda_lanczos::tridiagonal_impl::tridiagonal_eigenpairs_bisection (const std::vector< T > &alpha, const std::vector< T > &beta, std::vector< T > &eigenvalues, std::vector< std::vector< T > > &eigenvectors)
 Computes all eigenpairs (eigenvalues and eigenvectors) for given tri-diagonal matrix. More...
 
template<typename T >
std::pair< T, T > lambda_lanczos::tridiagonal_impl::calc_givens_cs (T a, T b)
 Calculates the cosine and sine of Givens rotation that eliminates a specific element (see detail). More...
 
template<typename T >
void lambda_lanczos::tridiagonal_impl::isqr_step (std::vector< T > &alpha, std::vector< T > &beta, std::vector< std::vector< T > > &q, size_t offset, size_t nsub, bool rotate_matrix)
 Performs an implicit shift QR step A = Z^T A Z on given sub tridiagonal matrix A. More...
 
template<typename T >
void lambda_lanczos::tridiagonal_impl::find_subspace (const std::vector< T > &alpha, std::vector< T > &beta, size_t &submatrix_first, size_t &submatrix_last)
 Find sub-tridiagonal matrix that remains non-diagonal. More...
 
template<typename T >
size_t lambda_lanczos::tridiagonal_impl::tridiagonal_eigenpairs (const std::vector< T > &alpha, const std::vector< T > &beta, std::vector< T > &eigenvalues, std::vector< std::vector< T > > &eigenvectors, bool compute_eigenvector=true)
 Computes all eigenpairs (eigenvalues and eigenvectors) for given tri-diagonal matrix using the Implicitly Shifted QR algorithm. More...
 
template<typename T >
size_t lambda_lanczos::tridiagonal_impl::tridiagonal_eigenvalues (const std::vector< T > &alpha, const std::vector< T > &beta, std::vector< T > &eigenvalues)
 Computes all eigenvalues for given tri-diagonal matrix using the Implicitly Shifted QR algorithm. More...