11#ifndef EIGEN_BIDIAGONALIZATION_H
12#define EIGEN_BIDIAGONALIZATION_H
30 typedef typename MatrixType::Scalar
Scalar;
92template<
typename MatrixType>
94 typename MatrixType::RealScalar *
diagonal,
96 typename MatrixType::Scalar*
tempData = 0)
98 typedef typename MatrixType::Scalar
Scalar;
111 for (
Index k = 0; ; ++k)
118 .makeHouseholderInPlace(
mat.coeffRef(k,k),
diagonal[k]);
123 if(k ==
cols-1)
break;
151template<
typename MatrixType>
153 typename MatrixType::RealScalar *
diagonal,
161 typedef typename MatrixType::Scalar
Scalar;
162 typedef typename MatrixType::RealScalar
RealScalar;
186 v_k -=
V_k1 *
Y.row(k).head(k).adjoint();
187 if(k)
v_k -=
X_k1 *
A.col(k).head(k);
219 u_k -=
Y_k *
A.row(k).head(k+1).adjoint();
220 if(k)
u_k -=
U_k1.adjoint() *
X.row(k).head(k).adjoint();
237 tmp1 (
X.col(k).head(k+1) );
240 tmp0.noalias() =
U_k1 *
u_k.transpose();
242 tmp1.noalias() =
Y_k.adjoint() *
u_k.transpose();
268 A01(
bs-1,0) = Literal(1);
283template<
typename MatrixType,
typename B
idiagType>
286 typename MatrixType::Scalar* = 0)
288 typedef typename MatrixType::Scalar
Scalar;
298 MatrixType::RowsAtCompileTime,
303 MatrixType::ColsAtCompileTime,
358template<
typename _MatrixType>
365 eigen_assert(
rows >=
cols &&
"UpperBidiagonalization is only for Arices satisfying rows>=cols.");
372 &(m_bidiagonal.template
diagonal<0>().coeffRef(0)),
373 &(m_bidiagonal.template
diagonal<1>().coeffRef(0)),
376 m_isInitialized =
true;
380template<
typename _MatrixType>
388 eigen_assert(
rows >=
cols &&
"UpperBidiagonalization is only for Arices satisfying rows>=cols.");
393 m_isInitialized =
true;
402template<
typename Derived>
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition Macros.h:1049
#define eigen_assert(x)
Definition Macros.h:1037
MatrixXf mat
Definition Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition bench_gemm.cpp:47
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition bench_gemm.cpp:48
Matrix< SCALARB, Dynamic, Dynamic, opt_B > B
Definition bench_gemm.cpp:49
MatrixXf MatrixType
Definition benchmark-blocking-sizes.cpp:52
Sequence of Householder reflections acting on subspaces with decreasing size.
Definition HouseholderSequence.h:121
Convenience specialization of Stride to specify only an inner stride See class Map for some examples.
Definition Stride.h:96
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition PlainObjectBase.h:175
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition PlainObjectBase.h:145
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition PlainObjectBase.h:143
A matrix or vector expression mapping an existing expression.
Definition Ref.h:283
Definition UpperBidiagonalization.h:21
UpperBidiagonalization(const MatrixType &matrix)
Definition UpperBidiagonalization.h:56
HouseholderSequence< const MatrixType, const typename internal::remove_all< typename Diagonal< const MatrixType, 0 >::ConjugateReturnType >::type > HouseholderUSequenceType
Definition UpperBidiagonalization.h:41
const HouseholderUSequenceType householderU() const
Definition UpperBidiagonalization.h:70
BandMatrix< RealScalar, ColsAtCompileTime, ColsAtCompileTime, 1, 0, RowMajor > BidiagonalType
Definition UpperBidiagonalization.h:35
MatrixType m_householder
Definition UpperBidiagonalization.h:85
Matrix< Scalar, 1, ColsAtCompileTime > RowVectorType
Definition UpperBidiagonalization.h:33
const HouseholderVSequenceType householderV()
Definition UpperBidiagonalization.h:76
UpperBidiagonalization & compute(const MatrixType &matrix)
Definition UpperBidiagonalization.h:381
MatrixType::RealScalar RealScalar
Definition UpperBidiagonalization.h:31
const MatrixType & householder() const
Definition UpperBidiagonalization.h:67
UpperBidiagonalization & computeUnblocked(const MatrixType &matrix)
Definition UpperBidiagonalization.h:359
_MatrixType MatrixType
Definition UpperBidiagonalization.h:24
Matrix< Scalar, RowsAtCompileTime, 1 > ColVectorType
Definition UpperBidiagonalization.h:34
UpperBidiagonalization()
Default Constructor.
Definition UpperBidiagonalization.h:54
HouseholderSequence< const typename internal::remove_all< typename MatrixType::ConjugateReturnType >::type, Diagonal< const MatrixType, 1 >, OnTheRight > HouseholderVSequenceType
Definition UpperBidiagonalization.h:46
BidiagonalType m_bidiagonal
Definition UpperBidiagonalization.h:86
const BidiagonalType & bidiagonal() const
Definition UpperBidiagonalization.h:68
@ RowsAtCompileTime
Definition UpperBidiagonalization.h:26
@ ColsAtCompileTimeMinusOne
Definition UpperBidiagonalization.h:28
@ ColsAtCompileTime
Definition UpperBidiagonalization.h:27
Matrix< Scalar, ColsAtCompileTimeMinusOne, 1 > SuperDiagVectorType
Definition UpperBidiagonalization.h:37
Eigen::Index Index
Definition UpperBidiagonalization.h:32
Matrix< Scalar, ColsAtCompileTime, 1 > DiagVectorType
Definition UpperBidiagonalization.h:36
bool m_isInitialized
Definition UpperBidiagonalization.h:87
MatrixType::Scalar Scalar
Definition UpperBidiagonalization.h:30
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition common.h:110
void diagonal(const MatrixType &m)
Definition diagonal.cpp:12
@ ColMajor
Definition Constants.h:319
@ OnTheRight
Definition Constants.h:334
const unsigned int RowMajorBit
Definition Constants.h:66
#define X
Definition icosphere.cpp:20
void upperbidiagonalization_inplace_unblocked(MatrixType &mat, typename MatrixType::RealScalar *diagonal, typename MatrixType::RealScalar *upper_diagonal, typename MatrixType::Scalar *tempData=0)
Definition UpperBidiagonalization.h:93
void upperbidiagonalization_inplace_blocked(MatrixType &A, BidiagType &bidiagonal, Index maxBlockSize=32, typename MatrixType::Scalar *=0)
Definition UpperBidiagonalization.h:284
void upperbidiagonalization_blocked_helper(MatrixType &A, typename MatrixType::RealScalar *diagonal, typename MatrixType::RealScalar *upper_diagonal, Index bs, Ref< Matrix< typename MatrixType::Scalar, Dynamic, Dynamic, traits< MatrixType >::Flags &RowMajorBit > > X, Ref< Matrix< typename MatrixType::Scalar, Dynamic, Dynamic, traits< MatrixType >::Flags &RowMajorBit > > Y)
Definition UpperBidiagonalization.h:152
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
const int Dynamic
Definition Constants.h:22
Definition BandTriangularSolver.h:13
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition Householder.h:18
Definition XprHelper.h:332
Definition ForwardDeclarations.h:17
const char Y
Definition EulerAngles.cpp:31