Eigen::BDCSVD
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 performs 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
BDCSVD() [1/3]
template<typename _MatrixType >
BDCSVD() [2/3]
template<typename _MatrixType >
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
-
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.
cols()
template<typename _MatrixType >
- Returns
- the number of columns.
- See also
-
rows(), ColsAtCompileTime
compute() [1/2]
template<typename _MatrixType >
Method performing the decomposition of given matrix using current options.
- Parameters
-
matrix |
the matrix to decompose |
This method uses the current computationOptions, as already passed to the constructor or to compute(const MatrixType&, unsigned int).
compute() [2/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
-
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.
rows()
template<typename _MatrixType >
- Returns
- the number of rows.
- See also
-
cols(), RowsAtCompileTime
The documentation for this class was generated from the following file: