Eigen::internal::UpperBidiagonalization< MatrixType_ > Class Template Reference

#include <UpperBidiagonalization.h>

Public Types

enum  { RowsAtCompileTime = MatrixType::RowsAtCompileTime , ColsAtCompileTime = MatrixType::ColsAtCompileTime , ColsAtCompileTimeMinusOne = internal::decrement_size<ColsAtCompileTime>::ret }
 
typedef MatrixType_ MatrixType
 
typedef MatrixType::Scalar Scalar
 
typedef MatrixType::RealScalar RealScalar
 
typedef Eigen::Index Index
 
typedef Matrix< Scalar, 1, ColsAtCompileTimeRowVectorType
 
typedef Matrix< Scalar, RowsAtCompileTime, 1 > ColVectorType
 
typedef BandMatrix< RealScalar, ColsAtCompileTime, ColsAtCompileTime, 1, 0, RowMajorBidiagonalType
 
typedef Matrix< Scalar, ColsAtCompileTime, 1 > DiagVectorType
 
typedef Matrix< Scalar, ColsAtCompileTimeMinusOne, 1 > SuperDiagVectorType
 
typedef HouseholderSequence< const MatrixType, const internal::remove_all_t< typename Diagonal< const MatrixType, 0 >::ConjugateReturnType > > HouseholderUSequenceType
 
typedef HouseholderSequence< const internal::remove_all_t< typename MatrixType::ConjugateReturnType >, Diagonal< const MatrixType, 1 >, OnTheRightHouseholderVSequenceType
 

Public Member Functions

 UpperBidiagonalization ()
 Default Constructor. More...
 
 UpperBidiagonalization (const MatrixType &matrix)
 
 UpperBidiagonalization (Index rows, Index cols)
 
UpperBidiagonalizationcompute (const MatrixType &matrix)
 
UpperBidiagonalizationcomputeUnblocked (const MatrixType &matrix)
 
const MatrixTypehouseholder () const
 
const BidiagonalTypebidiagonal () const
 
const HouseholderUSequenceType householderU () const
 
const HouseholderVSequenceType householderV ()
 

Protected Attributes

MatrixType m_householder
 
BidiagonalType m_bidiagonal
 
bool m_isInitialized
 

Member Typedef Documentation

◆ BidiagonalType

◆ ColVectorType

template<typename MatrixType_ >
typedef Matrix<Scalar, RowsAtCompileTime, 1> Eigen::internal::UpperBidiagonalization< MatrixType_ >::ColVectorType

◆ DiagVectorType

template<typename MatrixType_ >
typedef Matrix<Scalar, ColsAtCompileTime, 1> Eigen::internal::UpperBidiagonalization< MatrixType_ >::DiagVectorType

◆ HouseholderUSequenceType

template<typename MatrixType_ >
typedef HouseholderSequence< const MatrixType, const internal::remove_all_t<typename Diagonal<const MatrixType, 0>::ConjugateReturnType> > Eigen::internal::UpperBidiagonalization< MatrixType_ >::HouseholderUSequenceType

◆ HouseholderVSequenceType

template<typename MatrixType_ >
typedef HouseholderSequence<const internal::remove_all_t<typename MatrixType::ConjugateReturnType>, Diagonal<const MatrixType, 1>, OnTheRight> Eigen::internal::UpperBidiagonalization< MatrixType_ >::HouseholderVSequenceType

◆ Index

template<typename MatrixType_ >
typedef Eigen::Index Eigen::internal::UpperBidiagonalization< MatrixType_ >::Index
Deprecated:
since Eigen 3.3

◆ MatrixType

template<typename MatrixType_ >
typedef MatrixType_ Eigen::internal::UpperBidiagonalization< MatrixType_ >::MatrixType

◆ RealScalar

template<typename MatrixType_ >
typedef MatrixType::RealScalar Eigen::internal::UpperBidiagonalization< MatrixType_ >::RealScalar

◆ RowVectorType

template<typename MatrixType_ >
typedef Matrix<Scalar, 1, ColsAtCompileTime> Eigen::internal::UpperBidiagonalization< MatrixType_ >::RowVectorType

◆ Scalar

template<typename MatrixType_ >
typedef MatrixType::Scalar Eigen::internal::UpperBidiagonalization< MatrixType_ >::Scalar

◆ SuperDiagVectorType

template<typename MatrixType_ >
typedef Matrix<Scalar, ColsAtCompileTimeMinusOne, 1> Eigen::internal::UpperBidiagonalization< MatrixType_ >::SuperDiagVectorType

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType_ >
anonymous enum
Enumerator
RowsAtCompileTime 
ColsAtCompileTime 
ColsAtCompileTimeMinusOne 
27  {
28  RowsAtCompileTime = MatrixType::RowsAtCompileTime,
29  ColsAtCompileTime = MatrixType::ColsAtCompileTime,
31  };
@ ColsAtCompileTimeMinusOne
Definition: UpperBidiagonalization.h:30
@ ColsAtCompileTime
Definition: UpperBidiagonalization.h:29
@ RowsAtCompileTime
Definition: UpperBidiagonalization.h:28
@ ret
Definition: Householder.h:22

Constructor & Destructor Documentation

◆ UpperBidiagonalization() [1/3]

template<typename MatrixType_ >
Eigen::internal::UpperBidiagonalization< MatrixType_ >::UpperBidiagonalization ( )
inline

Default Constructor.

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

53 : m_householder(), m_bidiagonal(0, 0), m_isInitialized(false) {}
MatrixType m_householder
Definition: UpperBidiagonalization.h:85
bool m_isInitialized
Definition: UpperBidiagonalization.h:87
BidiagonalType m_bidiagonal
Definition: UpperBidiagonalization.h:86

◆ UpperBidiagonalization() [2/3]

template<typename MatrixType_ >
Eigen::internal::UpperBidiagonalization< MatrixType_ >::UpperBidiagonalization ( const MatrixType matrix)
inlineexplicit
56  : m_householder(matrix.rows(), matrix.cols()),
57  m_bidiagonal(matrix.cols(), matrix.cols()),
58  m_isInitialized(false) {
59  compute(matrix);
60  }
UpperBidiagonalization & compute(const MatrixType &matrix)
Definition: UpperBidiagonalization.h:347
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

References Eigen::internal::UpperBidiagonalization< MatrixType_ >::compute(), and matrix().

◆ UpperBidiagonalization() [3/3]

template<typename MatrixType_ >
Eigen::internal::UpperBidiagonalization< MatrixType_ >::UpperBidiagonalization ( Index  rows,
Index  cols 
)
inline
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1

Member Function Documentation

◆ bidiagonal()

template<typename MatrixType_ >
const BidiagonalType& Eigen::internal::UpperBidiagonalization< MatrixType_ >::bidiagonal ( ) const
inline

◆ compute()

template<typename MatrixType_ >
UpperBidiagonalization< MatrixType_ > & Eigen::internal::UpperBidiagonalization< MatrixType_ >::compute ( const MatrixType matrix)
347  {
348  Index rows = matrix.rows();
349  Index cols = matrix.cols();
352 
353  eigen_assert(rows >= cols && "UpperBidiagonalization is only for Arices satisfying rows>=cols.");
354 
357 
358  m_isInitialized = true;
359  return *this;
360 }
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:922
#define eigen_assert(x)
Definition: Macros.h:910
Eigen::Index Index
Definition: UpperBidiagonalization.h:34
void upperbidiagonalization_inplace_blocked(MatrixType &A, BidiagType &bidiagonal, Index maxBlockSize=32, typename MatrixType::Scalar *=0)
Definition: UpperBidiagonalization.h:266

References cols, eigen_assert, EIGEN_ONLY_USED_FOR_DEBUG, matrix(), rows, and Eigen::internal::upperbidiagonalization_inplace_blocked().

Referenced by Eigen::internal::UpperBidiagonalization< MatrixType_ >::UpperBidiagonalization().

◆ computeUnblocked()

template<typename MatrixType_ >
UpperBidiagonalization< MatrixType_ > & Eigen::internal::UpperBidiagonalization< MatrixType_ >::computeUnblocked ( const MatrixType matrix)
328  {
329  Index rows = matrix.rows();
330  Index cols = matrix.cols();
332 
333  eigen_assert(rows >= cols && "UpperBidiagonalization is only for Arices satisfying rows>=cols.");
334 
336 
337  ColVectorType temp(rows);
338 
339  upperbidiagonalization_inplace_unblocked(m_householder, &(m_bidiagonal.template diagonal<0>().coeffRef(0)),
340  &(m_bidiagonal.template diagonal<1>().coeffRef(0)), temp.data());
341 
342  m_isInitialized = true;
343  return *this;
344 }
Matrix< Scalar, RowsAtCompileTime, 1 > ColVectorType
Definition: UpperBidiagonalization.h:36
void upperbidiagonalization_inplace_unblocked(MatrixType &mat, typename MatrixType::RealScalar *diagonal, typename MatrixType::RealScalar *upper_diagonal, typename MatrixType::Scalar *tempData=0)
Definition: UpperBidiagonalization.h:93

References cols, Eigen::PlainObjectBase< Derived >::data(), eigen_assert, EIGEN_ONLY_USED_FOR_DEBUG, matrix(), rows, and Eigen::internal::upperbidiagonalization_inplace_unblocked().

◆ householder()

template<typename MatrixType_ >
const MatrixType& Eigen::internal::UpperBidiagonalization< MatrixType_ >::householder ( ) const
inline

◆ householderU()

template<typename MatrixType_ >
const HouseholderUSequenceType Eigen::internal::UpperBidiagonalization< MatrixType_ >::householderU ( ) const
inline
71  {
72  eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
73  return HouseholderUSequenceType(m_householder, m_householder.diagonal().conjugate());
74  }
HouseholderSequence< const MatrixType, const internal::remove_all_t< typename Diagonal< const MatrixType, 0 >::ConjugateReturnType > > HouseholderUSequenceType
Definition: UpperBidiagonalization.h:42

References eigen_assert, Eigen::internal::UpperBidiagonalization< MatrixType_ >::m_householder, and Eigen::internal::UpperBidiagonalization< MatrixType_ >::m_isInitialized.

◆ householderV()

template<typename MatrixType_ >
const HouseholderVSequenceType Eigen::internal::UpperBidiagonalization< MatrixType_ >::householderV ( )
inline
77  {
78  eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
79  return HouseholderVSequenceType(m_householder.conjugate(), m_householder.const_derived().template diagonal<1>())
80  .setLength(m_householder.cols() - 1)
81  .setShift(1);
82  }
HouseholderSequence< const internal::remove_all_t< typename MatrixType::ConjugateReturnType >, Diagonal< const MatrixType, 1 >, OnTheRight > HouseholderVSequenceType
Definition: UpperBidiagonalization.h:45

References eigen_assert, Eigen::internal::UpperBidiagonalization< MatrixType_ >::m_householder, and Eigen::internal::UpperBidiagonalization< MatrixType_ >::m_isInitialized.

Member Data Documentation

◆ m_bidiagonal

template<typename MatrixType_ >
BidiagonalType Eigen::internal::UpperBidiagonalization< MatrixType_ >::m_bidiagonal
protected

◆ m_householder

◆ m_isInitialized


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