38 #ifndef EIGEN_BDCSVD_LAPACKE_H
39 #define EIGEN_BDCSVD_LAPACKE_H
45 namespace lapacke_helpers {
50 template <
typename MatrixType_,
int Options>
108 }
else if (
info > 0) {
123 template <
typename MatrixType_,
int Options>
125 int computationOptions) {
129 svd = std::move(tmpSvd);
137 #define EIGEN_LAPACKE_SDD(EIGTYPE, EIGCOLROW, OPTIONS) \
139 inline BDCSVD<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic>, OPTIONS>& \
140 BDCSVD<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic>, OPTIONS>::compute_impl( \
141 const Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic>& matrix, unsigned int computationOptions) { \
142 return internal::lapacke_helpers::BDCSVD_wrapper(*this, matrix, computationOptions); \
145 #define EIGEN_LAPACK_SDD_OPTIONS(OPTIONS) \
146 EIGEN_LAPACKE_SDD(double, ColMajor, OPTIONS) \
147 EIGEN_LAPACKE_SDD(float, ColMajor, OPTIONS) \
148 EIGEN_LAPACKE_SDD(dcomplex, ColMajor, OPTIONS) \
149 EIGEN_LAPACKE_SDD(scomplex, ColMajor, OPTIONS) \
151 EIGEN_LAPACKE_SDD(double, RowMajor, OPTIONS) \
152 EIGEN_LAPACKE_SDD(float, RowMajor, OPTIONS) \
153 EIGEN_LAPACKE_SDD(dcomplex, RowMajor, OPTIONS) \
154 EIGEN_LAPACKE_SDD(scomplex, RowMajor, OPTIONS)
166 #undef EIGEN_LAPACK_SDD_OPTIONS
168 #undef EIGEN_LAPACKE_SDD
#define EIGEN_LAPACK_SDD_OPTIONS(OPTIONS)
Definition: BDCSVD_LAPACKE.h:145
cout<< "Here is the matrix m:"<< endl<< m<< endl;JacobiSVD< MatrixXf, ComputeThinU|ComputeThinV > svd(m)
class Bidiagonal Divide and Conquer SVD
Definition: BDCSVD.h:85
void allocate(Index rows, Index cols, unsigned int computationOptions)
Definition: BDCSVD.h:268
Base::RealScalar RealScalar
Definition: BDCSVD.h:97
MatrixType_ MatrixType
Definition: BDCSVD.h:95
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: EigenBase.h:61
Base::Scalar Scalar
Definition: BDCSVD.h:96
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: EigenBase.h:59
constexpr EIGEN_DEVICE_FUNC const Scalar * data() const
Definition: PlainObjectBase.h:273
bool m_computeFullV
Definition: SVDBase.h:337
internal::variable_if_dynamic< Index, DiagSizeAtCompileTime > m_diagSize
Definition: SVDBase.h:342
ComputationInfo m_info
Definition: SVDBase.h:334
bool m_computeThinU
Definition: SVDBase.h:336
EIGEN_DEVICE_FUNC ComputationInfo info() const
Reports whether previous computation was successful.
Definition: SVDBase.h:300
bool computeV() const
Definition: SVDBase.h:275
bool m_isInitialized
Definition: SVDBase.h:335
MatrixVType m_matrixV
Definition: SVDBase.h:332
bool computeU() const
Definition: SVDBase.h:273
Index m_nonzeroSingularValues
Definition: SVDBase.h:339
SingularValuesType m_singularValues
Definition: SVDBase.h:333
bool m_computeThinV
Definition: SVDBase.h:337
bool m_computeFullU
Definition: SVDBase.h:336
Index diagSize() const
Definition: SVDBase.h:279
MatrixUType m_matrixU
Definition: SVDBase.h:331
internal::traits< Derived >::Scalar Scalar
Definition: SolverBase.h:75
Definition: BDCSVD_LAPACKE.h:51
SVD::RealScalar RealScalar
Definition: BDCSVD_LAPACKE.h:55
BDCSVD< MatrixType_, Options > SVD
Definition: BDCSVD_LAPACKE.h:52
BDCSVD_LAPACKE(SVD &&svd)
Definition: BDCSVD_LAPACKE.h:59
SVD::Scalar Scalar
Definition: BDCSVD_LAPACKE.h:54
SVD::MatrixType MatrixType
Definition: BDCSVD_LAPACKE.h:53
void compute_impl_lapacke(const MatrixType &matrix, unsigned int computationOptions)
Definition: BDCSVD_LAPACKE.h:61
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85
@ InvalidInput
Definition: Constants.h:447
@ Success
Definition: Constants.h:440
@ NoConvergence
Definition: Constants.h:444
@ ComputeFullV
Definition: Constants.h:393
@ ComputeThinV
Definition: Constants.h:395
@ ComputeFullU
Definition: Constants.h:389
@ ComputeThinU
Definition: Constants.h:391
#define lapack_int
Definition: lapacke.h:52
EIGEN_ALWAYS_INLINE auto to_lapack(Source value)
Definition: lapacke_helpers.h:61
EIGEN_ALWAYS_INLINE EIGEN_CONSTEXPR lapack_int lapack_storage_of(const EigenBase< Derived > &)
translates storage order of the given Eigen object to the corresponding lapack constant
Definition: lapacke_helpers.h:78
BDCSVD< MatrixType_, Options > & BDCSVD_wrapper(BDCSVD< MatrixType_, Options > &svd, const MatrixType_ &matrix, int computationOptions)
Definition: BDCSVD_LAPACKE.h:124
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
Definition: Eigen_Colamd.h:49