class Bidiagonal Divide and Conquer SVD More...
#include <ForwardDeclarations.h>
Public Member Functions | |
BDCSVD () | |
Default Constructor. More... | |
BDCSVD (Index rows, Index cols, unsigned int computationOptions=0) | |
Default Constructor with memory preallocation. More... | |
BDCSVD (const MatrixType &matrix, unsigned int computationOptions=0) | |
Constructor performing the decomposition of given matrix. More... | |
BDCSVD & | compute (const MatrixType &matrix, unsigned int computationOptions) |
Method performing the decomposition of given matrix using custom options. More... | |
BDCSVD & | compute (const MatrixType &matrix) |
Method performing the decomposition of given matrix using current options. More... | |
void | setSwitchSize (int s) |
~BDCSVD () | |
Public Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > > | |
void | _solve_impl (const RhsType &rhs, DstType &dst) const |
void | _solve_impl_transposed (const RhsType &rhs, DstType &dst) const |
Index | cols () const |
bool | computeU () const |
bool | computeV () const |
BDCSVD< _MatrixType > & | derived () |
const BDCSVD< _MatrixType > & | derived () const |
EIGEN_DEVICE_FUNC ComputationInfo | info () const |
Reports whether previous computation was successful. More... | |
const MatrixUType & | matrixU () const |
const MatrixVType & | matrixV () const |
Index | nonzeroSingularValues () const |
Index | rank () const |
Index | rows () const |
BDCSVD< _MatrixType > & | setThreshold (const RealScalar &threshold) |
BDCSVD< _MatrixType > & | setThreshold (Default_t) |
const SingularValuesType & | singularValues () const |
RealScalar | threshold () const |
Public Member Functions inherited from Eigen::SolverBase< SVDBase< BDCSVD< _MatrixType > > > | |
AdjointReturnType | adjoint () const |
const Solve< SVDBase< BDCSVD< _MatrixType > >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
SolverBase () | |
ConstTransposeReturnType | transpose () const |
~SolverBase () | |
Public Member Functions inherited from Eigen::EigenBase< Derived > | |
template<typename Dest > | |
EIGEN_DEVICE_FUNC void | addTo (Dest &dst) const |
template<typename Dest > | |
EIGEN_DEVICE_FUNC void | applyThisOnTheLeft (Dest &dst) const |
template<typename Dest > | |
EIGEN_DEVICE_FUNC void | applyThisOnTheRight (Dest &dst) const |
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
EIGEN_DEVICE_FUNC Derived & | const_cast_derived () const |
EIGEN_DEVICE_FUNC const Derived & | const_derived () const |
EIGEN_DEVICE_FUNC Derived & | derived () |
EIGEN_DEVICE_FUNC const Derived & | derived () const |
template<typename Dest > | |
EIGEN_DEVICE_FUNC void | evalTo (Dest &dst) const |
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
template<typename Dest > | |
EIGEN_DEVICE_FUNC void | subTo (Dest &dst) const |
Public Attributes | |
int | m_numIters |
Protected Attributes | |
int | m_algoswap |
bool | m_compU |
MatrixXr | m_computed |
bool | m_compV |
bool | m_isTranspose |
MatrixXr | m_naiveU |
MatrixXr | m_naiveV |
Index | m_nRec |
ArrayXr | m_workspace |
ArrayXi | m_workspaceI |
Protected Attributes inherited from Eigen::SVDBase< BDCSVD< _MatrixType > > | |
Index | m_cols |
unsigned int | m_computationOptions |
bool | m_computeFullU |
bool | m_computeFullV |
bool | m_computeThinU |
bool | m_computeThinV |
Index | m_diagSize |
ComputationInfo | m_info |
bool | m_isAllocated |
bool | m_isInitialized |
MatrixUType | m_matrixU |
MatrixVType | m_matrixV |
Index | m_nonzeroSingularValues |
RealScalar | m_prescribedThreshold |
Index | m_rows |
SingularValuesType | m_singularValues |
bool | m_usePrescribedThreshold |
Private Types | |
typedef SVDBase< BDCSVD > | Base |
Private Member Functions | |
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) |
Static Private Member Functions | |
static RealScalar | secularEq (RealScalar x, const ArrayRef &col0, const ArrayRef &diag, const IndicesRef &perm, const ArrayRef &diagShifted, RealScalar shift) |
Additional Inherited Members | |
Protected Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > > | |
void | _check_compute_assertions () const |
void | _check_solve_assertion (const Rhs &b) const |
bool | allocate (Index rows, Index cols, unsigned int computationOptions) |
SVDBase () | |
Default Constructor. More... | |
Protected Member Functions inherited from Eigen::SolverBase< SVDBase< BDCSVD< _MatrixType > > > | |
void | _check_solve_assertion (const Rhs &b) const |
Static Protected Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > > | |
static void | check_template_parameters () |
class Bidiagonal Divide and Conquer SVD
_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.
-fp-model
precise
option. Likewise, the -ffast-math
option of GCC or clang will significantly degrade the accuracy.Definition at line 279 of file ForwardDeclarations.h.
typedef Ref<ArrayXr> Eigen::BDCSVD< _MatrixType >::ArrayRef |
typedef Array<Index,1,Dynamic> Eigen::BDCSVD< _MatrixType >::ArrayXi |
typedef Array<RealScalar, Dynamic, 1> Eigen::BDCSVD< _MatrixType >::ArrayXr |
|
private |
typedef Ref<ArrayXi> Eigen::BDCSVD< _MatrixType >::IndicesRef |
typedef NumTraits<RealScalar>::Literal Eigen::BDCSVD< _MatrixType >::Literal |
typedef _MatrixType Eigen::BDCSVD< _MatrixType >::MatrixType |
typedef Base::MatrixUType Eigen::BDCSVD< _MatrixType >::MatrixUType |
typedef Base::MatrixVType Eigen::BDCSVD< _MatrixType >::MatrixVType |
typedef Matrix<RealScalar, Dynamic, Dynamic, ColMajor> Eigen::BDCSVD< _MatrixType >::MatrixXr |
typedef NumTraits<typename MatrixType::Scalar>::Real Eigen::BDCSVD< _MatrixType >::RealScalar |
typedef MatrixType::Scalar Eigen::BDCSVD< _MatrixType >::Scalar |
typedef Base::SingularValuesType Eigen::BDCSVD< _MatrixType >::SingularValuesType |
typedef Matrix<RealScalar, Dynamic, 1> Eigen::BDCSVD< _MatrixType >::VectorType |
anonymous enum |
|
inline |
Default Constructor.
The default constructor is useful in cases in which the user intends to perform decompositions via BDCSVD::compute(const MatrixType&).
|
inline |
|
inline |
Constructor performing the decomposition of given matrix.
matrix | the matrix to decompose |
computationOptions | optional parameter allowing to specify if you want full or thin U or V unitaries to be computed. By default, none is computed. This is a bit - field, the possible bits are ComputeFullU, ComputeThinU, ComputeFullV, ComputeThinV. |
Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not available with the (non - default) FullPivHouseholderQR preconditioner.
|
inline |
|
private |
BDCSVD< MatrixType > & Eigen::BDCSVD< MatrixType >::compute | ( | const MatrixType & | matrix, |
unsigned int | computationOptions | ||
) |
Method performing the decomposition of given matrix using custom options.
matrix | the matrix to decompose |
computationOptions | optional parameter allowing to specify if you want full or thin U or V unitaries to be computed. By default, none is computed. This is a bit - field, the possible bits are ComputeFullU, ComputeThinU, ComputeFullV, ComputeThinV. |
Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not available with the (non - default) FullPivHouseholderQR preconditioner.
|
inline |
Method performing the decomposition of given matrix using current options.
matrix | the matrix to decompose |
This method uses the current computationOptions, as already passed to the constructor or to compute(const MatrixType&, unsigned int).
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
inline |
|
private |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
int Eigen::BDCSVD< _MatrixType >::m_numIters |
|
protected |
|
protected |