|
enum | {
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
DiagSizeAtCompileTime = EIGEN_SIZE_MIN_PREFER_DYNAMIC(RowsAtCompileTime, ColsAtCompileTime),
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
MaxDiagSizeAtCompileTime = EIGEN_SIZE_MIN_PREFER_FIXED(MaxRowsAtCompileTime, MaxColsAtCompileTime),
MatrixOptions = MatrixType::Options
} |
|
typedef Ref< ArrayXr > | ArrayRef |
|
typedef Array< Index, 1, Dynamic > | ArrayXi |
|
typedef Array< RealScalar, Dynamic, 1 > | ArrayXr |
|
typedef Ref< ArrayXi > | IndicesRef |
|
typedef NumTraits< RealScalar >::Literal | Literal |
|
typedef _MatrixType | MatrixType |
|
typedef Base::MatrixUType | MatrixUType |
|
typedef Base::MatrixVType | MatrixVType |
|
typedef Matrix< Scalar, Dynamic, Dynamic, ColMajor > | MatrixX |
|
typedef Matrix< RealScalar, Dynamic, Dynamic, ColMajor > | MatrixXr |
|
typedef NumTraits< typename MatrixType::Scalar >::Real | RealScalar |
|
typedef MatrixType::Scalar | Scalar |
|
typedef Base::SingularValuesType | SingularValuesType |
|
typedef Matrix< RealScalar, Dynamic, 1 > | VectorType |
|
enum | |
|
typedef Eigen::Index | Index |
|
typedef internal::traits< BDCSVD< _MatrixType > >::MatrixType | MatrixType |
|
typedef Matrix< Scalar, RowsAtCompileTime, RowsAtCompileTime, MatrixOptions, MaxRowsAtCompileTime, MaxRowsAtCompileTime > | MatrixUType |
|
typedef Matrix< Scalar, ColsAtCompileTime, ColsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MaxColsAtCompileTime > | MatrixVType |
|
typedef NumTraits< typename MatrixType::Scalar >::Real | RealScalar |
|
typedef MatrixType::Scalar | Scalar |
|
typedef internal::plain_diag_type< MatrixType, RealScalar >::type | SingularValuesType |
|
typedef MatrixType::StorageIndex | StorageIndex |
|
|
void | allocate (Index rows, Index cols, unsigned int computationOptions) |
|
void | computeSingVals (const ArrayRef &col0, const ArrayRef &diag, const IndicesRef &perm, VectorType &singVals, ArrayRef shifts, ArrayRef mus) |
|
void | computeSingVecs (const ArrayRef &zhat, const ArrayRef &diag, const IndicesRef &perm, const VectorType &singVals, const ArrayRef &shifts, const ArrayRef &mus, MatrixXr &U, MatrixXr &V) |
|
void | computeSVDofM (Index firstCol, Index n, MatrixXr &U, VectorType &singVals, MatrixXr &V) |
|
template<typename HouseholderU , typename HouseholderV , typename NaiveU , typename NaiveV > |
void | copyUV (const HouseholderU &householderU, const HouseholderV &householderV, const NaiveU &naiveU, const NaiveV &naivev) |
|
void | deflation (Index firstCol, Index lastCol, Index k, Index firstRowW, Index firstColW, Index shift) |
|
void | deflation43 (Index firstCol, Index shift, Index i, Index size) |
|
void | deflation44 (Index firstColu, Index firstColm, Index firstRowW, Index firstColW, Index i, Index j, Index size) |
|
void | divide (Index firstCol, Index lastCol, Index firstRowW, Index firstColW, Index shift) |
|
void | perturbCol0 (const ArrayRef &col0, const ArrayRef &diag, const IndicesRef &perm, const VectorType &singVals, const ArrayRef &shifts, const ArrayRef &mus, ArrayRef zhat) |
|
void | structured_update (Block< MatrixXr, Dynamic, Dynamic > A, const MatrixXr &B, Index n1) |
|
template<typename _MatrixType>
class Eigen::BDCSVD< _MatrixType >
class Bidiagonal Divide and Conquer SVD
- Template Parameters
-
_MatrixType | the type of the matrix of which we are computing the SVD decomposition |
This class first reduces the input matrix to bi-diagonal form using class UpperBidiagonalization, and then performs a divide-and-conquer diagonalization. Small blocks are diagonalized using class JacobiSVD. You can control the switching size with the setSwitchSize() method, default is 16. For small matrice (<16), it is thus preferable to directly use JacobiSVD. For larger ones, BDCSVD is highly recommended and can several order of magnitude faster.
- Warning
- this algorithm is unlikely to provide accurate result when compiled with unsafe math optimizations. For instance, this concerns Intel's compiler (ICC), which perfroms such optimization by default unless you compile with the
-fp-model
precise
option. Likewise, the -ffast-math
option of GCC or clang will significantly degrade the accuracy.
- See also
- class JacobiSVD
Definition at line 259 of file ForwardDeclarations.h.