compbio
Public Types | Public Member Functions | Public Attributes | Protected Attributes | List of all members
Eigen::BDCSVD< _MatrixType > Class Template Reference

class Bidiagonal Divide and Conquer SVD More...

#include <BDCSVD.h>

Inheritance diagram for Eigen::BDCSVD< _MatrixType >:
Eigen::SVDBase< BDCSVD< _MatrixType > >

Public Types

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 _MatrixType MatrixType
 
typedef MatrixType::Scalar Scalar
 
typedef NumTraits< typename MatrixType::Scalar >::Real RealScalar
 
typedef Base::MatrixUType MatrixUType
 
typedef Base::MatrixVType MatrixVType
 
typedef Base::SingularValuesType SingularValuesType
 
typedef Matrix< Scalar, Dynamic, Dynamic, ColMajorMatrixX
 
typedef Matrix< RealScalar, Dynamic, Dynamic, ColMajorMatrixXr
 
typedef Matrix< RealScalar, Dynamic, 1 > VectorType
 
typedef Array< RealScalar, Dynamic, 1 > ArrayXr
 
typedef Array< Index, 1, DynamicArrayXi
 
typedef Ref< ArrayXrArrayRef
 
typedef Ref< ArrayXiIndicesRef
 
- Public Types inherited from Eigen::SVDBase< BDCSVD< _MatrixType > >
enum  
 
typedef internal::traits< BDCSVD< _MatrixType > >::MatrixType MatrixType
 
typedef MatrixType::Scalar Scalar
 
typedef NumTraits< typename MatrixType::Scalar >::Real RealScalar
 
typedef MatrixType::StorageIndex StorageIndex
 
typedef Eigen::Index Index
 
typedef Matrix< Scalar, RowsAtCompileTime, RowsAtCompileTime, MatrixOptions, MaxRowsAtCompileTime, MaxRowsAtCompileTime > MatrixUType
 
typedef Matrix< Scalar, ColsAtCompileTime, ColsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MaxColsAtCompileTime > MatrixVType
 
typedef internal::plain_diag_type< MatrixType, RealScalar >::type SingularValuesType
 

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...
 
BDCSVDcompute (const MatrixType &matrix, unsigned int computationOptions)
 Method performing the decomposition of given matrix using custom options. More...
 
BDCSVDcompute (const MatrixType &matrix)
 Method performing the decomposition of given matrix using current options. More...
 
void setSwitchSize (int s)
 
- Public Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > >
BDCSVD< _MatrixType > & derived ()
 
const BDCSVD< _MatrixType > & derived () const
 
const MatrixUTypematrixU () const
 
const MatrixVTypematrixV () const
 
const SingularValuesTypesingularValues () const
 
Index nonzeroSingularValues () const
 
Index rank () const
 
BDCSVD< _MatrixType > & setThreshold (const RealScalar &threshold)
 Allows to prescribe a threshold to be used by certain methods, such as rank() and solve(), which need to determine when singular values are to be considered nonzero. More...
 
BDCSVD< _MatrixType > & setThreshold (Default_t)
 Allows to come back to the default behavior, letting Eigen use its default formula for determining the threshold. More...
 
RealScalar threshold () const
 Returns the threshold that will be used by certain methods such as rank(). More...
 
bool computeU () const
 
bool computeV () const
 
Index rows () const
 
Index cols () const
 
const Solve< BDCSVD< _MatrixType >, Rhs > solve (const MatrixBase< Rhs > &b) const
 
EIGEN_DEVICE_FUNC void _solve_impl (const RhsType &rhs, DstType &dst) const
 
void _solve_impl (const RhsType &rhs, DstType &dst) const
 

Public Attributes

int m_numIters
 

Protected Attributes

MatrixXr m_naiveU
 
MatrixXr m_naiveV
 
MatrixXr m_computed
 
Index m_nRec
 
ArrayXr m_workspace
 
ArrayXi m_workspaceI
 
int m_algoswap
 
bool m_isTranspose
 
bool m_compU
 
bool m_compV
 
- Protected Attributes inherited from Eigen::SVDBase< BDCSVD< _MatrixType > >
MatrixUType m_matrixU
 
MatrixVType m_matrixV
 
SingularValuesType m_singularValues
 
bool m_isInitialized
 
bool m_isAllocated
 
bool m_usePrescribedThreshold
 
bool m_computeFullU
 
bool m_computeThinU
 
bool m_computeFullV
 
bool m_computeThinV
 
unsigned int m_computationOptions
 
Index m_nonzeroSingularValues
 
Index m_rows
 
Index m_cols
 
Index m_diagSize
 
RealScalar m_prescribedThreshold
 

Additional Inherited Members

- Protected Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > >
bool allocate (Index rows, Index cols, unsigned int computationOptions)
 
 SVDBase ()
 Default Constructor. More...
 
- Static Protected Member Functions inherited from Eigen::SVDBase< BDCSVD< _MatrixType > >
static void check_template_parameters ()
 

Detailed Description

template<typename _MatrixType>
class Eigen::BDCSVD< _MatrixType >

class Bidiagonal Divide and Conquer SVD

Template Parameters
_MatrixTypethe 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

Constructor & Destructor Documentation

§ BDCSVD() [1/3]

template<typename _MatrixType>
Eigen::BDCSVD< _MatrixType >::BDCSVD ( )
inline

Default Constructor.

The default constructor is useful in cases in which the user intends to perform decompositions via BDCSVD::compute(const MatrixType&).

§ BDCSVD() [2/3]

template<typename _MatrixType>
Eigen::BDCSVD< _MatrixType >::BDCSVD ( Index  rows,
Index  cols,
unsigned int  computationOptions = 0 
)
inline

Default Constructor with memory preallocation.

Like the default constructor but with preallocation of the internal data according to the specified problem size.

See also
BDCSVD()

§ BDCSVD() [3/3]

template<typename _MatrixType>
Eigen::BDCSVD< _MatrixType >::BDCSVD ( const MatrixType &  matrix,
unsigned int  computationOptions = 0 
)
inline

Constructor performing the decomposition of given matrix.

Parameters
matrixthe matrix to decompose
computationOptionsoptional 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.

Member Function Documentation

§ compute() [1/2]

template<typename MatrixType >
BDCSVD< MatrixType > & Eigen::BDCSVD< MatrixType >::compute ( const MatrixType &  matrix,
unsigned int  computationOptions 
)

Method performing the decomposition of given matrix using custom options.

Parameters
matrixthe matrix to decompose
computationOptionsoptional 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.

§ compute() [2/2]

template<typename _MatrixType>
BDCSVD& Eigen::BDCSVD< _MatrixType >::compute ( const MatrixType &  matrix)
inline

Method performing the decomposition of given matrix using current options.

Parameters
matrixthe matrix to decompose

This method uses the current computationOptions, as already passed to the constructor or to compute(const MatrixType&, unsigned int).


The documentation for this class was generated from the following files: