#include "svd.h"
Public Types | |
typedef T::real_diag_matrix_type | DM_T |
enum class | Driver { GESVD , GESDD , GEJSV } |
enum class | Type { std , economy , sigma_only } |
Public Member Functions | |
svd (const svd &a) | |
svd (const T &a, svd::Type type=svd::Type::std, svd::Driver driver=svd::Driver::GESVD) | |
svd (void) | |
~svd (void)=default | |
T | left_singular_matrix (void) const |
svd & | operator= (const svd &a) |
T | right_singular_matrix (void) const |
DM_T | singular_values (void) const |
Private Types | |
typedef DM_T::element_type | DM_P |
typedef T::element_type | P |
Private Member Functions | |
void | gejsv (char &joba, char &jobu, char &jobv, char &jobr, char &jobt, char &jobp, F77_INT m, F77_INT n, P *tmp_data, F77_INT m1, DM_P *s_vec, P *u, P *v, F77_INT nrow_v1, std::vector< P > &work, F77_INT &lwork, std::vector< F77_INT > &iwork, F77_INT &info) |
void | gejsv (char &joba, char &jobu, char &jobv, char &jobr, char &jobt, char &jobp, F77_INT m, F77_INT n, P *tmp_data, F77_INT m1, DM_P *s_vec, P *u, P *v, F77_INT nrow_v1, std::vector< P > &work, F77_INT &lwork, std::vector< F77_INT > &iwork, F77_INT &info) |
void | gejsv (char &joba, char &jobu, char &jobv, char &jobr, char &jobt, char &jobp, F77_INT m, F77_INT n, P *tmp_data, F77_INT m1, DM_P *s_vec, P *u, P *v, F77_INT nrow_v1, std::vector< P > &work, F77_INT &lwork, std::vector< F77_INT > &iwork, F77_INT &info) |
void | gejsv (char &joba, char &jobu, char &jobv, char &jobr, char &jobt, char &jobp, F77_INT m, F77_INT n, P *tmp_data, F77_INT m1, DM_P *s_vec, P *u, P *v, F77_INT nrow_v1, std::vector< P > &work, F77_INT &lwork, std::vector< F77_INT > &iwork, F77_INT &info) |
void | gejsv (char &joba, char &jobu, char &jobv, char &jobr, char &jobt, char &jobp, octave_f77_int_type m, octave_f77_int_type n, P *tmp_data, octave_f77_int_type m1, DM_P *s_vec, P *u, P *v, octave_f77_int_type nrow_v1, std::vector< P > &work, octave_f77_int_type &lwork, std::vector< octave_f77_int_type > &iwork, octave_f77_int_type &info) |
OCTAVE_API void | gesdd (char &jobz, F77_INT m, F77_INT n, Complex *tmp_data, F77_INT m1, double *s_vec, Complex *u, Complex *vt, F77_INT nrow_vt1, std::vector< Complex > &work, F77_INT &lwork, F77_INT *iwork, F77_INT &info) |
OCTAVE_API void | gesdd (char &jobz, F77_INT m, F77_INT n, double *tmp_data, F77_INT m1, double *s_vec, double *u, double *vt, F77_INT nrow_vt1, std::vector< double > &work, F77_INT &lwork, F77_INT *iwork, F77_INT &info) |
OCTAVE_API void | gesdd (char &jobz, F77_INT m, F77_INT n, float *tmp_data, F77_INT m1, float *s_vec, float *u, float *vt, F77_INT nrow_vt1, std::vector< float > &work, F77_INT &lwork, F77_INT *iwork, F77_INT &info) |
OCTAVE_API void | gesdd (char &jobz, F77_INT m, F77_INT n, FloatComplex *tmp_data, F77_INT m1, float *s_vec, FloatComplex *u, FloatComplex *vt, F77_INT nrow_vt1, std::vector< FloatComplex > &work, F77_INT &lwork, F77_INT *iwork, F77_INT &info) |
void | gesdd (char &jobz, octave_f77_int_type m, octave_f77_int_type n, P *tmp_data, octave_f77_int_type m1, DM_P *s_vec, P *u, P *vt, octave_f77_int_type nrow_vt1, std::vector< P > &work, octave_f77_int_type &lwork, octave_f77_int_type *iwork, octave_f77_int_type &info) |
OCTAVE_API void | gesvd (char &jobu, char &jobv, F77_INT m, F77_INT n, Complex *tmp_data, F77_INT m1, double *s_vec, Complex *u, Complex *vt, F77_INT nrow_vt1, std::vector< Complex > &work, F77_INT &lwork, F77_INT &info) |
OCTAVE_API void | gesvd (char &jobu, char &jobv, F77_INT m, F77_INT n, double *tmp_data, F77_INT m1, double *s_vec, double *u, double *vt, F77_INT nrow_vt1, std::vector< double > &work, F77_INT &lwork, F77_INT &info) |
OCTAVE_API void | gesvd (char &jobu, char &jobv, F77_INT m, F77_INT n, float *tmp_data, F77_INT m1, float *s_vec, float *u, float *vt, F77_INT nrow_vt1, std::vector< float > &work, F77_INT &lwork, F77_INT &info) |
OCTAVE_API void | gesvd (char &jobu, char &jobv, F77_INT m, F77_INT n, FloatComplex *tmp_data, F77_INT m1, float *s_vec, FloatComplex *u, FloatComplex *vt, F77_INT nrow_vt1, std::vector< FloatComplex > &work, F77_INT &lwork, F77_INT &info) |
void | gesvd (char &jobu, char &jobv, octave_f77_int_type m, octave_f77_int_type n, P *tmp_data, octave_f77_int_type m1, DM_P *s_vec, P *u, P *vt, octave_f77_int_type nrow_vt1, std::vector< P > &work, octave_f77_int_type &lwork, octave_f77_int_type &info) |
Private Attributes | |
svd::Driver | m_driver |
T | m_left_sm |
T | m_right_sm |
DM_T | m_sigma |
svd::Type | m_type |
|
strong |
|
strong |
svd< T >::svd | ( | const T & | a, |
svd< T >::Type | type = svd< T >::Type::std , |
||
svd< T >::Driver | driver = svd< T >::Driver::GESVD |
||
) |
Definition at line 670 of file svd.cc.
References current_liboctave_error_handler, svd< T >::economy, svd< T >::GEJSV, svd< T >::gejsv(), svd< T >::GESDD, svd< T >::gesdd(), svd< T >::GESVD, svd< T >::gesvd(), m, svd< T >::m_driver, svd< T >::m_left_sm, svd< T >::m_right_sm, svd< T >::m_sigma, svd< T >::m_type, max(), min(), n, svd< T >::sigma_only, and svd< T >::std.
|
private |
Definition at line 577 of file svd.cc.
References GEJSV_REAL_STEP, m, n, and gejsv_lwork< T >::optimal().
|
private |
Definition at line 594 of file svd.cc.
References GEJSV_REAL_STEP, m, n, and gejsv_lwork< T >::optimal().
|
private |
Definition at line 611 of file svd.cc.
References F77_DBLE_CMPLX_ARG, and GEJSV_COMPLEX_STEP.
|
private |
Definition at line 640 of file svd.cc.
References F77_CMPLX_ARG, and GEJSV_COMPLEX_STEP.
|
private |
Referenced by svd< T >::svd().
|
private |
Definition at line 479 of file svd.cc.
References F77_DBLE_CMPLX_ARG, GESDD_COMPLEX_STEP, m, max(), min(), and n.
|
private |
Definition at line 447 of file svd.cc.
References GESDD_REAL_STEP.
|
private |
Definition at line 463 of file svd.cc.
References GESDD_REAL_STEP.
|
private |
Definition at line 508 of file svd.cc.
References F77_CMPLX_ARG, GESDD_COMPLEX_STEP, m, max(), min(), and n.
|
private |
Referenced by svd< T >::svd().
|
private |
Definition at line 388 of file svd.cc.
References F77_DBLE_CMPLX_ARG, GESVD_COMPLEX_STEP, m, max(), and n.
|
private |
Definition at line 354 of file svd.cc.
References GESVD_REAL_STEP.
|
private |
Definition at line 371 of file svd.cc.
References GESVD_REAL_STEP.
|
private |
Definition at line 407 of file svd.cc.
References F77_CMPLX_ARG, GESVD_COMPLEX_STEP, m, max(), and n.
|
private |
Referenced by svd< T >::svd().
T svd< T >::left_singular_matrix | ( | void | ) | const |
Definition at line 310 of file svd.cc.
References svd< T >::sigma_only.
Definition at line 72 of file svd.h.
References svd< T >::m_driver, svd< T >::m_left_sm, svd< T >::m_right_sm, svd< T >::m_sigma, and svd< T >::m_type.
T svd< T >::right_singular_matrix | ( | void | ) | const |
Definition at line 321 of file svd.cc.
References svd< T >::sigma_only.
|
private |
Definition at line 100 of file svd.h.
Referenced by svd< T >::svd(), and svd< T >::operator=().
|
private |
Definition at line 102 of file svd.h.
Referenced by svd< T >::svd(), and svd< T >::operator=().
|
private |
Definition at line 104 of file svd.h.
Referenced by svd< T >::svd(), and svd< T >::operator=().
Definition at line 103 of file svd.h.
Referenced by svd< T >::svd(), and svd< T >::operator=().
Definition at line 99 of file svd.h.
Referenced by svd< T >::svd(), and svd< T >::operator=().