Namespaces | Macros | Functions
bidiag.h File Reference

Header wrapper for bidiag_base.h. More...

#include <o2scl/err_hnd.h>
#include <o2scl/permutation.h>
#include <o2scl/cblas.h>
#include <o2scl/householder.h>
#include <o2scl/givens.h>
#include "bidiag_base.h"

Go to the source code of this file.

Namespaces

 o2scl_linalg
 The namespace for linear algebra classes and functions.
 
 o2scl_linalg_bracket
 The namespace for linear algebra classes and functions with operator()
 

Macros

#define O2SCL_IX(V, i)   V[i]
 
#define O2SCL_IX2(M, i, j)   M(i,j)
 
#define O2SCL_IX(V, i)   V[i]
 
#define O2SCL_IX2(M, i, j)   M[i][j]
 

Functions

template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg::o2scl_linalg::bidiag_decomp (size_t M, size_t N, mat_t &A, vec_t &tau_U, vec2_t &tau_V)
 Factor a matrix into bidiagonal form. More...
 
template<class mat_t , class vec_t , class mat2_t , class vec2_t , class mat3_t , class vec3_t , class vec4_t >
int o2scl_linalg::o2scl_linalg::bidiag_unpack (size_t M, size_t N, const mat_t &A, const vec_t &tau_U, mat2_t &U, const vec2_t &tau_V, mat3_t &V, vec3_t &diag, vec4_t &superdiag)
 Unpack a matrix A with the bidiagonal decomposition and create matrices U, V, diagonal diag and superdiagonal superdiag. More...
 
template<class mat_t , class vec_t , class vec2_t , class mat2_t >
int o2scl_linalg::o2scl_linalg::bidiag_unpack2 (size_t M, size_t N, mat_t &A, vec_t &tau_U, vec2_t &tau_V, mat2_t &V)
 Unpack a matrix A with the bidiagonal decomposition and create matrix V.
 
template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg::o2scl_linalg::bidiag_unpack_B (size_t M, size_t N, const mat_t &A, vec_t &diag, vec2_t &superdiag)
 Unpack the diagonal and superdiagonal of the bidiagonal decomposition of A into diag and superdiag.
 
template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_decomp (size_t M, size_t N, mat_t &A, vec_t &tau_U, vec2_t &tau_V)
 Factor a matrix into bidiagonal form. More...
 
template<class mat_t , class vec_t , class mat2_t , class vec2_t , class mat3_t , class vec3_t , class vec4_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_unpack (size_t M, size_t N, const mat_t &A, const vec_t &tau_U, mat2_t &U, const vec2_t &tau_V, mat3_t &V, vec3_t &diag, vec4_t &superdiag)
 Unpack a matrix A with the bidiagonal decomposition and create matrices U, V, diagonal diag and superdiagonal superdiag. More...
 
template<class mat_t , class vec_t , class vec2_t , class mat2_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_unpack2 (size_t M, size_t N, mat_t &A, vec_t &tau_U, vec2_t &tau_V, mat2_t &V)
 Unpack a matrix A with the bidiagonal decomposition and create matrix V.
 
template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_unpack_B (size_t M, size_t N, const mat_t &A, vec_t &diag, vec2_t &superdiag)
 Unpack the diagonal and superdiagonal of the bidiagonal decomposition of A into diag and superdiag.
 

Function Documentation

◆ bidiag_decomp() [1/2]

template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg::o2scl_linalg::bidiag_decomp ( size_t  M,
size_t  N,
mat_t &  A,
vec_t &  tau_U,
vec2_t &  tau_V 
)

Factor matrix A of size (M,N) with $ M\geq N $ into $ A = U B V^T $ where U and V are orthogonal and B is upper bidiagonal.

After the function call, the matrix $ B $ is stored the diagonal and first superdiagonal of A. The matrices $ U $ and $ V $ are stored as packed sets of Householder transformations in the lower and upper triangular parts of A, respectively.

Adapted from the GSL version which was based on algorithm 5.4.2 in Golub96.

Definition at line 66 of file bidiag.h.

◆ bidiag_decomp() [2/2]

template<class mat_t , class vec_t , class vec2_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_decomp ( size_t  M,
size_t  N,
mat_t &  A,
vec_t &  tau_U,
vec2_t &  tau_V 
)

Factor matrix A of size (M,N) with $ M\geq N $ into $ A = U B V^T $ where U and V are orthogonal and B is upper bidiagonal.

After the function call, the matrix $ B $ is stored the diagonal and first superdiagonal of A. The matrices $ U $ and $ V $ are stored as packed sets of Householder transformations in the lower and upper triangular parts of A, respectively.

Adapted from the GSL version which was based on algorithm 5.4.2 in Golub96.

Definition at line 66 of file bidiag.h.

◆ bidiag_unpack() [1/2]

template<class mat_t , class vec_t , class mat2_t , class vec2_t , class mat3_t , class vec3_t , class vec4_t >
int o2scl_linalg::o2scl_linalg::bidiag_unpack ( size_t  M,
size_t  N,
const mat_t &  A,
const vec_t &  tau_U,
mat2_t &  U,
const vec2_t &  tau_V,
mat3_t &  V,
vec3_t &  diag,
vec4_t &  superdiag 
)

Given a matrix A of size (M,N) with $ M \geq N $ created by bidiag_decomp(), this function creates the matrix U of size (M,N), the matrix V of size (N,N), the diagonal diag of size N and the super-diagonal superdiag of size N-1.

Definition at line 114 of file bidiag.h.

◆ bidiag_unpack() [2/2]

template<class mat_t , class vec_t , class mat2_t , class vec2_t , class mat3_t , class vec3_t , class vec4_t >
int o2scl_linalg_bracket::o2scl_linalg::bidiag_unpack ( size_t  M,
size_t  N,
const mat_t &  A,
const vec_t &  tau_U,
mat2_t &  U,
const vec2_t &  tau_V,
mat3_t &  V,
vec3_t &  diag,
vec4_t &  superdiag 
)

Given a matrix A of size (M,N) with $ M \geq N $ created by bidiag_decomp(), this function creates the matrix U of size (M,N), the matrix V of size (N,N), the diagonal diag of size N and the super-diagonal superdiag of size N-1.

Definition at line 114 of file bidiag.h.

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).