H2Lib  3.0
Data Structures | Typedefs | Functions
eigensolvers.h File Reference
#include "amatrix.h"
#include "realavector.h"
#include "settings.h"

Go to the source code of this file.

Data Structures

struct  _tridiag
 Real tridiagonal matrix $T$, represented by vectors containing the diagonal, sub- and superdiagonal. More...
 

Typedefs

typedef struct _tridiag tridiag
 Tridiagonal matrix.
 
typedef tridiagptridiag
 Pointer to a tridiag object.
 
typedef const tridiagpctridiag
 Pointer to a constant tridiag object.
 

Functions

ptridiag init_tridiag (ptridiag T, uint size)
 Initialize a tridiag object. More...
 
ptridiag init_sub_tridiag (ptridiag T, ptridiag src, uint size, uint off)
 Initialize a tridiag object to represent a submatrix. More...
 
ptridiag init_vec_tridiag (ptridiag T, prealavector src, uint size)
 Initialize a tridiag object using pre-allocated storage. More...
 
void uninit_tridiag (ptridiag T)
 Uninitialize a tridiag object. More...
 
ptridiag new_tridiag (uint size)
 Create a new tridiag object. More...
 
void del_tridiag (ptridiag T)
 Delete a tridiag object. More...
 
void copy_tridiag (pctridiag T, ptridiag Tcopy)
 Copy a matrix into another matrix, $T_{\rm copy} \gets T$. More...
 
real check_tridiag (pctridiag T, pcamatrix Ts)
 Compute the Frobenius norm $\|T - T_s\|_F$ of the difference of a tridiagonal matrix $T$ and a general matrix $T_s$. More...
 
real check_lower_tridiag (pctridiag T, pcamatrix Ts)
 Compute the Frobenius norm $\|T - T_s\|_F$ of the difference of a lower bidiagonal matrix $T$ and a general matrix $T_s$. More...
 
void diageval_tridiag_amatrix (field alpha, bool atrans, pctridiag a, bool xtrans, pamatrix x)
 Multiply a matrix $X$ by the diagonal part $A$ of a tridiagonal matrix, $X \gets \alpha A X$. More...
 
void lowereval_tridiag_amatrix (field alpha, bool atrans, pctridiag a, bool xtrans, pamatrix x)
 Multiply a matrix $X$ by the lower bidiagonal part $A$ of a tridiagonal matrix, $X \gets \alpha A X$. More...
 
void qrstep_tridiag (ptridiag T, field shift, pamatrix Q)
 Perform one implicit QR step on a self-adjoint tridiagonal matrix. More...
 
uint sb_muleig_tridiag (ptridiag T, pamatrix Q, uint maxiter)
 Solve a self-adjoint tridiagonal eigenproblem, self-made implementation without BLAS or LAPACK. More...
 
uint muleig_tridiag (ptridiag T, pamatrix Q)
 Solve a self-adjoint tridiagonal eigenproblem. More...
 
uint eig_tridiag (ptridiag T, pamatrix Q)
 Solve a self-adjoint tridiagonal eigenproblem. More...
 
void sb_tridiagonalize_amatrix (pamatrix A, ptridiag T, pamatrix Q)
 Hessenberg tridiagonalization of a self-adjoint matrix, self-made implementation without BLAS or LAPACK. More...
 
void tridiagonalize_amatrix (pamatrix A, ptridiag T, pamatrix Q)
 Hessenberg tridiagonalization of a self-adjoint matrix. More...
 
uint sb_eig_amatrix (pamatrix A, prealavector lambda, pamatrix Q, uint maxiter)
 Solve a self-adjoint eigenproblem, self-made implementation without BLAS or LAPACK. More...
 
uint eig_amatrix (pamatrix A, prealavector lambda, pamatrix Q)
 Solve a self-adjoint eigenproblem, $A e = \lambda e$. More...
 
uint geig_amatrix (pamatrix A, pamatrix M, prealavector lambda, pamatrix Q)
 Solve self-adjoint generalized eigenproblem, $A e = \lambda M e$. More...
 
void svdstep_tridiag (ptridiag T, field shift, pamatrix U, pamatrix Vt)
 Perform one step of the Golub-Kahan iteration on a lower bidiagonal matrix. More...
 
uint sb_mulsvd_tridiag (ptridiag T, pamatrix U, pamatrix Vt, uint maxiter)
 Compute the SVD of a bidiagonal matrix, self-made implementation without BLAS or LAPACK. More...
 
uint mulsvd_tridiag (ptridiag T, pamatrix U, pamatrix Vt)
 Compute the SVD of a bidiagonal matrix. More...
 
uint svd_tridiag (ptridiag T, pamatrix U, pamatrix Vt)
 Compute the SVD of a bidiagonal matrix. More...
 
void sb_bidiagonalize_amatrix (pamatrix A, ptridiag T, pamatrix U, pamatrix Vt)
 Golub-Kahan bidiagonalization of a matrix, self-made implementation without BLAS or LAPACK. More...
 
void bidiagonalize_amatrix (pamatrix A, ptridiag T, pamatrix U, pamatrix Vt)
 Golub-Kahan bidiagonalization of a matrix. More...
 
uint sb_svd_amatrix (pamatrix A, prealavector sigma, pamatrix U, pamatrix Vt, uint maxiter)
 Compute the SVD of a matrix, self-made implementation without BLAS or LAPACK. More...
 
uint svd_amatrix (pamatrix A, prealavector sigma, pamatrix U, pamatrix Vt)
 Compute the SVD of a matrix. More...
 

Detailed Description

Author
Steffen Börm