11 #ifndef EIGEN_JACOBISVD_H
12 #define EIGEN_JACOBISVD_H
35 template <
typename MatrixType,
int QRPreconditioner,
int Case>
38 a = MatrixType::RowsAtCompileTime !=
Dynamic && MatrixType::ColsAtCompileTime !=
Dynamic &&
39 MatrixType::ColsAtCompileTime <= MatrixType::RowsAtCompileTime,
40 b = MatrixType::RowsAtCompileTime !=
Dynamic && MatrixType::ColsAtCompileTime !=
Dynamic &&
41 MatrixType::RowsAtCompileTime <= MatrixType::ColsAtCompileTime,
47 template <
typename MatrixType,
int Options,
int QRPreconditioner,
int Case,
51 template <
typename MatrixType,
int Options,
int QRPreconditioner,
int Case>
55 template <
typename Xpr>
63 template <
typename MatrixType,
int Options>
70 enum { WorkspaceSize = MatrixType::RowsAtCompileTime, MaxWorkspaceSize = MatrixType::MaxRowsAtCompileTime };
75 if (
svd.rows() != m_qr.rows() ||
svd.cols() != m_qr.cols()) {
79 if (
svd.m_computeFullU) m_workspace.resize(
svd.rows());
81 template <
typename Xpr>
85 svd.m_workMatrix = m_qr.matrixQR().block(0, 0,
matrix.cols(),
matrix.cols()).template triangularView<Upper>();
86 if (
svd.m_computeFullU) m_qr.matrixQ().evalTo(
svd.m_matrixU, m_workspace);
87 if (
svd.computeV())
svd.m_matrixV = m_qr.colsPermutation();
99 template <
typename MatrixType,
int Options>
107 RowsAtCompileTime = MatrixType::RowsAtCompileTime,
108 ColsAtCompileTime = MatrixType::ColsAtCompileTime,
109 MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
110 MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
115 MaxColsAtCompileTime, MaxRowsAtCompileTime>
::type
119 if (
svd.cols() != m_qr.rows() ||
svd.rows() != m_qr.cols()) {
123 if (
svd.m_computeFullV) m_workspace.resize(
svd.cols());
125 template <
typename Xpr>
128 m_qr.compute(
matrix.adjoint());
130 m_qr.matrixQR().block(0, 0,
matrix.rows(),
matrix.rows()).template triangularView<Upper>().adjoint();
131 if (
svd.m_computeFullV) m_qr.matrixQ().evalTo(
svd.m_matrixV, m_workspace);
132 if (
svd.computeU())
svd.m_matrixU = m_qr.colsPermutation();
146 template <
typename MatrixType,
int Options>
161 if (
svd.rows() != m_qr.rows() ||
svd.cols() != m_qr.cols()) {
165 if (
svd.m_computeFullU)
166 m_workspace.resize(
svd.rows());
167 else if (
svd.m_computeThinU)
168 m_workspace.resize(
svd.cols());
170 template <
typename Xpr>
174 svd.m_workMatrix = m_qr.matrixQR().block(0, 0,
matrix.cols(),
matrix.cols()).template triangularView<Upper>();
175 if (
svd.m_computeFullU)
176 m_qr.householderQ().evalTo(
svd.m_matrixU, m_workspace);
177 else if (
svd.m_computeThinU) {
179 m_qr.householderQ().applyThisOnTheLeft(
svd.m_matrixU, m_workspace);
181 if (
svd.computeV())
svd.m_matrixV = m_qr.colsPermutation();
193 template <
typename MatrixType,
int Options>
201 RowsAtCompileTime = MatrixType::RowsAtCompileTime,
202 ColsAtCompileTime = MatrixType::ColsAtCompileTime,
203 MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
204 MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
213 MaxColsAtCompileTime, MaxRowsAtCompileTime>
::type
217 if (
svd.cols() != m_qr.rows() ||
svd.rows() != m_qr.cols()) {
221 if (
svd.m_computeFullV)
222 m_workspace.resize(
svd.cols());
223 else if (
svd.m_computeThinV)
224 m_workspace.resize(
svd.rows());
226 template <
typename Xpr>
229 m_qr.compute(
matrix.adjoint());
232 m_qr.matrixQR().block(0, 0,
matrix.rows(),
matrix.rows()).template triangularView<Upper>().adjoint();
233 if (
svd.m_computeFullV)
234 m_qr.householderQ().evalTo(
svd.m_matrixV, m_workspace);
235 else if (
svd.m_computeThinV) {
237 m_qr.householderQ().applyThisOnTheLeft(
svd.m_matrixV, m_workspace);
239 if (
svd.computeU())
svd.m_matrixU = m_qr.colsPermutation();
253 template <
typename MatrixType,
int Options>
267 if (
svd.rows() != m_qr.rows() ||
svd.cols() != m_qr.cols()) {
271 if (
svd.m_computeFullU)
272 m_workspace.resize(
svd.rows());
273 else if (
svd.m_computeThinU)
274 m_workspace.resize(
svd.cols());
276 template <
typename Xpr>
280 svd.m_workMatrix = m_qr.matrixQR().block(0, 0,
matrix.cols(),
matrix.cols()).template triangularView<Upper>();
281 if (
svd.m_computeFullU)
282 m_qr.householderQ().evalTo(
svd.m_matrixU, m_workspace);
283 else if (
svd.m_computeThinU) {
285 m_qr.householderQ().applyThisOnTheLeft(
svd.m_matrixU, m_workspace);
299 template <
typename MatrixType,
int Options>
306 RowsAtCompileTime = MatrixType::RowsAtCompileTime,
307 ColsAtCompileTime = MatrixType::ColsAtCompileTime,
308 MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
309 MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
318 MaxColsAtCompileTime, MaxRowsAtCompileTime>
::type
322 if (
svd.cols() != m_qr.rows() ||
svd.rows() != m_qr.cols()) {
326 if (
svd.m_computeFullV)
327 m_workspace.resize(
svd.cols());
328 else if (
svd.m_computeThinV)
329 m_workspace.resize(
svd.rows());
332 template <
typename Xpr>
335 m_qr.compute(
matrix.adjoint());
338 m_qr.matrixQR().block(0, 0,
matrix.rows(),
matrix.rows()).template triangularView<Upper>().adjoint();
339 if (
svd.m_computeFullV)
340 m_qr.householderQ().evalTo(
svd.m_matrixV, m_workspace);
341 else if (
svd.m_computeThinV) {
343 m_qr.householderQ().applyThisOnTheLeft(
svd.m_matrixV, m_workspace);
362 template <
typename MatrixType,
int Options>
369 template <
typename MatrixType,
int Options>
392 work_matrix.row(
p) *= z;
393 if (
svd.computeU())
svd.m_matrixU.col(
p) *=
conj(z);
397 work_matrix.row(
q) *= z;
398 if (
svd.computeU())
svd.m_matrixU.col(
q) *=
conj(z);
404 work_matrix.applyOnTheLeft(
p,
q,
rot);
405 if (
svd.computeU())
svd.m_matrixU.applyOnTheRight(
p,
q,
rot.adjoint());
408 work_matrix.col(
q) *= z;
409 if (
svd.computeV())
svd.m_matrixV.col(
q) *= z;
413 work_matrix.row(
q) *= z;
414 if (
svd.computeU())
svd.m_matrixU.col(
q) *=
conj(z);
419 maxDiagEntry = numext::maxi<RealScalar>(
420 maxDiagEntry, numext::maxi<RealScalar>(
abs(work_matrix.
coeff(
p,
p)),
abs(work_matrix.
coeff(
q,
q))));
422 RealScalar threshold = numext::maxi<RealScalar>(considerAsZero, precision * maxDiagEntry);
427 template <
typename MatrixType_,
int Options>
499 template <
typename MatrixType_,
int Options_>
557 internal::check_svd_options_assertions<MatrixType, Options>(computationOptions,
rows,
cols);
582 internal::check_svd_options_assertions<MatrixType, Options>(computationOptions,
matrix.rows(),
matrix.cols());
618 "JacobiSVD: can't compute thin U or thin V with the FullPivHouseholderQR preconditioner. "
619 "Use the ColPivHouseholderQR preconditioner instead.");
649 "JacobiSVD: can't compute thin U or thin V with the FullPivHouseholderQR preconditioner. "
650 "Use the ColPivHouseholderQR preconditioner instead.")
652 template <typename MatrixType__,
int Options__,
bool IsComplex_>
653 friend struct
internal::svd_precondition_2x2_block_to_be_real;
654 template <typename MatrixType__,
int Options__,
int QRPreconditioner_,
int Case_,
bool DoAnything_>
666 unsigned int computationOptions) {
695 matrix.template topLeftCorner<DiagSizeAtCompileTime, DiagSizeAtCompileTime>(
diagSize(),
diagSize()) / scale;
734 maxDiagEntry = numext::maxi<RealScalar>(
792 template <
typename Derived>
793 template <
int Options>
798 template <
typename Derived>
799 template <
int Options>
801 unsigned int computationOptions)
const {
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar imag(const AnnoyingScalar &)
Definition: AnnoyingScalar.h:132
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
cout<< "Here is the matrix m:"<< endl<< m<< endl;JacobiSVD< MatrixXf, ComputeThinU|ComputeThinV > svd(m)
#define EIGEN_DEPRECATED
Definition: Macros.h:931
#define eigen_assert(x)
Definition: Macros.h:910
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
Rotation given by a cosine-sine pair.
Definition: Jacobi.h:38
EIGEN_DEVICE_FUNC JacobiRotation transpose() const
Definition: Jacobi.h:61
Two-sided Jacobi SVD decomposition of a rectangular matrix.
Definition: JacobiSVD.h:500
EIGEN_DEPRECATED JacobiSVD & compute(const MatrixType &matrix, unsigned int computationOptions)
Method performing the decomposition of given matrix, as specified by the computationOptions parameter...
Definition: JacobiSVD.h:602
Base::RealScalar RealScalar
Definition: JacobiSVD.h:506
Base::SingularValuesType SingularValuesType
Definition: JacobiSVD.h:521
Base::MatrixVType MatrixVType
Definition: JacobiSVD.h:520
SVDBase< JacobiSVD > Base
Definition: JacobiSVD.h:501
JacobiSVD()
Default Constructor.
Definition: JacobiSVD.h:531
EIGEN_DEPRECATED JacobiSVD(Index rows, Index cols, unsigned int computationOptions)
Default Constructor with memory preallocation.
Definition: JacobiSVD.h:556
int Options__
Definition: JacobiSVD.h:652
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: EigenBase.h:61
EIGEN_STATIC_ASSERT(!(ShouldComputeThinU &&int(QRPreconditioner)==int(FullPivHouseholderQRPreconditioner)) &&!(ShouldComputeThinU &&int(QRPreconditioner)==int(FullPivHouseholderQRPreconditioner)), "JacobiSVD: can't compute thin U or thin V with the FullPivHouseholderQR preconditioner. " "Use the ColPivHouseholderQR preconditioner instead.") template< typename MatrixType__
Base::Scalar Scalar
Definition: JacobiSVD.h:505
JacobiSVD(const MatrixType &matrix, unsigned int computationOptions)
Constructor performing the decomposition of given matrix using specified options for computing unitar...
Definition: JacobiSVD.h:581
JacobiSVD & compute_impl(const MatrixType &matrix, unsigned int computationOptions)
Definition: JacobiSVD.h:665
Base::MatrixUType MatrixUType
Definition: JacobiSVD.h:519
JacobiSVD(Index rows, Index cols)
Default Constructor with memory preallocation.
Definition: JacobiSVD.h:540
internal::qr_preconditioner_impl< MatrixType, Options, QRPreconditioner, internal::PreconditionIfMoreColsThanRows > m_qr_precond_morecols
Definition: JacobiSVD.h:658
JacobiSVD & compute(const MatrixType &matrix)
Method performing the decomposition of given matrix. Computes Thin/Full unitaries U/V if specified us...
Definition: JacobiSVD.h:591
JacobiSVD(const MatrixType &matrix)
Constructor performing the decomposition of given matrix, using the custom options specified with the...
Definition: JacobiSVD.h:566
internal::qr_preconditioner_impl< MatrixType, Options, QRPreconditioner, internal::PreconditionIfMoreRowsThanCols > m_qr_precond_morerows
Definition: JacobiSVD.h:660
MatrixType_ MatrixType
Definition: JacobiSVD.h:504
void allocate(Index rows_, Index cols_, unsigned int computationOptions)
Definition: JacobiSVD.h:614
Matrix< Scalar, DiagSizeAtCompileTime, DiagSizeAtCompileTime, MatrixOptions, MaxDiagSizeAtCompileTime, MaxDiagSizeAtCompileTime > WorkMatrixType
Definition: JacobiSVD.h:524
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: EigenBase.h:59
WorkMatrixType m_workMatrix
Definition: JacobiSVD.h:661
@ ColsAtCompileTime
Definition: JacobiSVD.h:511
@ MaxColsAtCompileTime
Definition: JacobiSVD.h:514
@ Options
Definition: JacobiSVD.h:508
@ MaxRowsAtCompileTime
Definition: JacobiSVD.h:513
@ DiagSizeAtCompileTime
Definition: JacobiSVD.h:512
@ MatrixOptions
Definition: JacobiSVD.h:516
@ RowsAtCompileTime
Definition: JacobiSVD.h:510
@ MaxDiagSizeAtCompileTime
Definition: JacobiSVD.h:515
@ QRPreconditioner
Definition: JacobiSVD.h:509
JacobiSVD< PlainObject, Options > jacobiSvd() const
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:217
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE const Scalar & coeff(Index rowId, Index colId) const
Definition: PlainObjectBase.h:198
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition: PlainObjectBase.h:294
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(DenseBase< OtherDerived > &other)
Override DenseBase::swap() since for dynamic-sized matrices of same type it is enough to swap the dat...
Definition: PlainObjectBase.h:898
Base class of SVD algorithms.
Definition: SVDBase.h:119
Index cols() const
Definition: SVDBase.h:278
internal::make_proper_matrix_type< Scalar, RowsAtCompileTime, MatrixUColsAtCompileTime, MatrixOptions, MaxRowsAtCompileTime, MatrixUMaxColsAtCompileTime >::type MatrixUType
Definition: SVDBase.h:153
bool m_usePrescribedThreshold
Definition: SVDBase.h:335
bool m_computeFullV
Definition: SVDBase.h:337
static constexpr bool ShouldComputeThinV
Definition: SVDBase.h:132
Index rank() const
Definition: SVDBase.h:217
ComputationInfo m_info
Definition: SVDBase.h:334
bool m_computeThinU
Definition: SVDBase.h:336
NumTraits< typename MatrixType::Scalar >::Real RealScalar
Definition: SVDBase.h:126
bool computeV() const
Definition: SVDBase.h:275
bool m_isInitialized
Definition: SVDBase.h:335
unsigned int m_computationOptions
Definition: SVDBase.h:338
MatrixVType m_matrixV
Definition: SVDBase.h:332
bool computeU() const
Definition: SVDBase.h:273
internal::plain_diag_type< MatrixType, RealScalar >::type SingularValuesType
Definition: SVDBase.h:158
internal::make_proper_matrix_type< Scalar, ColsAtCompileTime, MatrixVColsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MatrixVMaxColsAtCompileTime >::type MatrixVType
Definition: SVDBase.h:156
@ MatrixOptions
Definition: SVDBase.h:141
@ ColsAtCompileTime
Definition: SVDBase.h:136
@ DiagSizeAtCompileTime
Definition: SVDBase.h:137
@ MaxRowsAtCompileTime
Definition: SVDBase.h:138
@ MaxDiagSizeAtCompileTime
Definition: SVDBase.h:140
@ MaxColsAtCompileTime
Definition: SVDBase.h:139
@ RowsAtCompileTime
Definition: SVDBase.h:135
RealScalar threshold() const
Definition: SVDBase.h:265
MatrixType::Scalar Scalar
Definition: SVDBase.h:125
Index m_nonzeroSingularValues
Definition: SVDBase.h:339
Index rows() const
Definition: SVDBase.h:277
SingularValuesType m_singularValues
Definition: SVDBase.h:333
RealScalar m_prescribedThreshold
Definition: SVDBase.h:343
static constexpr bool ShouldComputeThinU
Definition: SVDBase.h:130
bool m_computeThinV
Definition: SVDBase.h:337
bool m_computeFullU
Definition: SVDBase.h:336
bool allocate(Index rows, Index cols, unsigned int computationOptions)
Definition: SVDBase.h:403
Index diagSize() const
Definition: SVDBase.h:279
internal::traits< Derived >::MatrixType MatrixType
Definition: SVDBase.h:124
MatrixUType m_matrixU
Definition: SVDBase.h:331
bool m_isAllocated
Definition: SVDBase.h:335
Definition: XprHelper.h:352
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:150
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:151
ColPivHouseholderQR< MatrixType > QRType
Definition: JacobiSVD.h:188
Matrix< Scalar, 1, WorkspaceSize, RowMajor, 1, MaxWorkspaceSize > WorkspaceType
Definition: JacobiSVD.h:158
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:171
QRType m_qr
Definition: JacobiSVD.h:189
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:160
WorkspaceType m_workspace
Definition: JacobiSVD.h:190
internal::make_proper_matrix_type< Scalar, ColsAtCompileTime, RowsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MaxRowsAtCompileTime >::type TransposeTypeWithSameStorageOrder
Definition: JacobiSVD.h:214
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:216
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:197
Matrix< Scalar, WorkspaceSize, 1, ColMajor, MaxWorkspaceSize, 1 > WorkspaceType
Definition: JacobiSVD.h:210
WorkspaceType m_workspace
Definition: JacobiSVD.h:248
QRType m_qr
Definition: JacobiSVD.h:247
ColPivHouseholderQR< TransposeTypeWithSameStorageOrder > QRType
Definition: JacobiSVD.h:246
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:198
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:227
QRType m_qr
Definition: JacobiSVD.h:95
FullPivHouseholderQR< MatrixType > QRType
Definition: JacobiSVD.h:94
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:74
Matrix< Scalar, 1, WorkspaceSize, RowMajor, 1, MaxWorkspaceSize > WorkspaceType
Definition: JacobiSVD.h:72
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:68
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:67
WorkspaceType m_workspace
Definition: JacobiSVD.h:96
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:82
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:126
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:104
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:103
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:118
FullPivHouseholderQR< TransposeTypeWithSameStorageOrder > QRType
Definition: JacobiSVD.h:139
QRType m_qr
Definition: JacobiSVD.h:140
plain_row_type< MatrixType >::type m_workspace
Definition: JacobiSVD.h:141
internal::make_proper_matrix_type< Scalar, ColsAtCompileTime, RowsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MaxRowsAtCompileTime >::type TransposeTypeWithSameStorageOrder
Definition: JacobiSVD.h:116
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:266
WorkspaceType m_workspace
Definition: JacobiSVD.h:296
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:257
Matrix< Scalar, 1, WorkspaceSize, RowMajor, 1, MaxWorkspaceSize > WorkspaceType
Definition: JacobiSVD.h:264
HouseholderQR< MatrixType > QRType
Definition: JacobiSVD.h:294
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:256
QRType m_qr
Definition: JacobiSVD.h:295
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:277
WorkspaceType m_workspace
Definition: JacobiSVD.h:354
bool run(SVDType &svd, const Xpr &matrix)
Definition: JacobiSVD.h:333
Matrix< Scalar, WorkspaceSize, 1, ColMajor, MaxWorkspaceSize, 1 > WorkspaceType
Definition: JacobiSVD.h:315
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:302
void allocate(const SVDType &svd)
Definition: JacobiSVD.h:321
internal::make_proper_matrix_type< Scalar, ColsAtCompileTime, RowsAtCompileTime, MatrixOptions, MaxColsAtCompileTime, MaxRowsAtCompileTime >::type TransposeTypeWithSameStorageOrder
Definition: JacobiSVD.h:319
JacobiSVD< MatrixType, Options > SVDType
Definition: JacobiSVD.h:303
HouseholderQR< TransposeTypeWithSameStorageOrder > QRType
Definition: JacobiSVD.h:352
QRType m_qr
Definition: JacobiSVD.h:353
void allocate(const JacobiSVD< MatrixType, Options > &)
Definition: JacobiSVD.h:54
bool run(JacobiSVD< MatrixType, Options > &, const Xpr &)
Definition: JacobiSVD.h:56
@ IsComplex
Definition: common.h:73
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
float real
Definition: datatypes.h:10
#define min(a, b)
Definition: datatypes.h:22
@ NoQRPreconditioner
Definition: Constants.h:423
@ HouseholderQRPreconditioner
Definition: Constants.h:425
@ ColPivHouseholderQRPreconditioner
Definition: Constants.h:421
@ FullPivHouseholderQRPreconditioner
Definition: Constants.h:427
@ InvalidInput
Definition: Constants.h:447
Eigen::DenseIndex ret
Definition: level1_cplx_impl.h:43
EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition: level1_impl.h:117
EIGEN_BLAS_FUNC() rot(int *n, Scalar *px, int *incx, Scalar *py, int *incy, Scalar *pc, Scalar *ps)
Definition: level1_real_impl.h:88
const Scalar * a
Definition: level2_cplx_impl.h:32
constexpr int get_qr_preconditioner(int options)
Definition: SVDBase.h:32
EIGEN_DEVICE_FUNC T * construct_at(T *p, Args &&... args)
Definition: Memory.h:1321
EIGEN_DEVICE_FUNC void destroy_at(T *p)
Definition: Memory.h:1335
void real_2x2_jacobi_svd(const MatrixType &matrix, Index p, Index q, JacobiRotation< RealScalar > *j_left, JacobiRotation< RealScalar > *j_right)
Definition: RealSvd2x2.h:22
constexpr int get_computation_options(int options)
Definition: SVDBase.h:34
@ PreconditionIfMoreColsThanRows
Definition: JacobiSVD.h:33
@ PreconditionIfMoreRowsThanCols
Definition: JacobiSVD.h:33
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool() isfinite(const Eigen::bfloat16 &h)
Definition: BFloat16.h:752
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool is_exactly_zero(const X &x)
Definition: Meta.h:592
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition: MathFunctions.h:1102
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
Definition: AutoDiffScalar.h:482
const int Dynamic
Definition: Constants.h:25
int Case
What case are we considering: Choose one from the enumeration Cases.
Definition: common_young_laplace_stuff.h:53
bool finished
Definition: MergeRestartFiles.py:79
type
Definition: compute_granudrum_aor.py:141
Definition: Eigen_Colamd.h:49
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:43
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: XprHelper.h:758
Definition: JacobiSVD.h:49
Definition: JacobiSVD.h:36
JacobiSVD< MatrixType, Options > SVD
Definition: JacobiSVD.h:364
static bool run(typename SVD::WorkMatrixType &, SVD &, Index, Index, RealScalar &)
Definition: JacobiSVD.h:366
MatrixType::RealScalar RealScalar
Definition: JacobiSVD.h:365
MatrixType::Scalar Scalar
Definition: JacobiSVD.h:372
static bool run(typename SVD::WorkMatrixType &work_matrix, SVD &svd, Index p, Index q, RealScalar &maxDiagEntry)
Definition: JacobiSVD.h:374
JacobiSVD< MatrixType, Options > SVD
Definition: JacobiSVD.h:371
MatrixType::RealScalar RealScalar
Definition: JacobiSVD.h:373
Definition: JacobiSVD.h:24
MatrixType_ MatrixType
Definition: JacobiSVD.h:429
Definition: ForwardDeclarations.h:21