MVE - Multi-View Environment mve-devel
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
matrix_svd.h File Reference
#include <vector>
#include "math/defines.h"
#include "math/matrix.h"
#include "math/matrix_tools.h"
#include "math/matrix_qr.h"
Include dependency graph for matrix_svd.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  math
 Vector, Matrix, basic operations, etc.
 
namespace  math::internal
 Math internals.
 

Macros

#define MATH_SVD_DEFAULT_ZERO_THRESHOLD   1e-12
 

Functions

template<typename T >
int math::internal::find_largest_ev_index (T const *values, int length)
 Returns the index of the largest eigenvalue.
 
template<typename T >
void math::internal::matrix_2x2_eigenvalues (T const *mat, T *smaller_ev, T *larger_ev)
 Returns the larger eigenvalue of the given 2x2 matrix.
 
template<typename T >
void math::internal::matrix_apply_householder_matrix (T *mat_a, int rows, int cols, T const *house_mat, int house_length, int offset_rows, int offset_cols)
 Applies a given householder matrix to a frame in a given matrix with offset (offset_rows, offset_cols).
 
template<typename T >
void math::internal::matrix_bidiagonalize (T const *mat_a, int rows, int cols, T *mat_u, T *mat_b, T *mat_v, T const &epsilon)
 Bidiagonalizes a given MxN matrix, resulting in a MxN matrix U, a bidiagonal MxN matrix B and a NxN matrix V.
 
template<typename T >
void math::internal::matrix_gk_svd (T const *mat_a, int rows, int cols, T *mat_u, T *vec_s, T *mat_v, T const &epsilon)
 Implementation of the [GK-SVD] method.
 
template<typename T >
void math::internal::matrix_gk_svd_step (int rows, int cols, T *mat_b, T *mat_q, T *mat_p, int p, int q, T const &epsilon)
 Single step in the [GK-SVD] method.
 
template<typename T >
void math::internal::matrix_householder_matrix (T const *vector, int length, T const beta, T *matrix)
 Given a Householder vector and beta coefficient, this function creates a transformation matrix to apply the Householder Transformation by simple matrix multiplication.
 
template<typename T >
void math::internal::matrix_householder_vector (T const *input, int length, T *vector, T *beta, T const &epsilon, T const &norm_factor)
 Creates a householder transformation vector and the coefficient for householder matrix creation.
 
template<typename T >
bool math::internal::matrix_is_submatrix_zero_enclosed (T const *mat, int m, int k, T const &epsilon)
 Checks whether the lower-right square sub-matrix of size KxK is enclosed by zeros (up to some epsilon) within a square matrix of size MxM.
 
template<typename T >
bool math::internal::matrix_is_superdiagonal_nonzero (T const *mat, int rows, int cols, T const &epsilon)
 Checks whether the super-diagonal (above the diagonal) of a MxN matrix does not contain zeros up to some epsilon.
 
template<typename T , int M, int N>
void math::matrix_pseudo_inverse (Matrix< T, M, N > const &A, Matrix< T, N, M > *result, T const &epsilon=T(1e-12))
 Computes the Moore–Penrose pseudoinverse of matrix A using the SVD.
 
template<typename T >
void math::internal::matrix_r_svd (T const *mat_a, int rows, int cols, T *mat_u, T *vec_s, T *mat_v, T const &epsilon)
 Implementation of the [R-SVD] method, uses [GK-SVD] as solver for the reduced problem.
 
template<typename T , int M, int N>
void math::matrix_svd (Matrix< T, M, N > const &mat_a, Matrix< T, M, N > *mat_u, Matrix< T, N, N > *mat_s, Matrix< T, N, N > *mat_v, T const &epsilon=T(1e-12))
 SVD for compile-time fixed-size matrices.
 
template<typename T >
void math::matrix_svd (T const *mat_a, int rows, int cols, T *mat_u, T *vec_s, T *mat_v, T const &epsilon=T(1e-12))
 SVD for dynamic-size matrices A of size MxN (M rows, N columns).
 
template<typename T >
void math::internal::matrix_svd_clear_super_entry (int rows, int cols, T *mat_b, T *mat_q, int row_index, T const &epsilon)
 

Macro Definition Documentation

◆ MATH_SVD_DEFAULT_ZERO_THRESHOLD

#define MATH_SVD_DEFAULT_ZERO_THRESHOLD   1e-12

Definition at line 30 of file matrix_svd.h.