Eigen::ComplexEigenSolver< MatrixType_ > Class Template Reference

Computes eigenvalues and eigenvectors of general complex matrices. More...

#include <ComplexEigenSolver.h>

Public Types

enum  {
  RowsAtCompileTime = MatrixType::RowsAtCompileTime , ColsAtCompileTime = MatrixType::ColsAtCompileTime , Options = internal::traits<MatrixType>::Options , MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime ,
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
}
 
typedef MatrixType_ MatrixType
 Synonym for the template parameter MatrixType_. More...
 
typedef MatrixType::Scalar Scalar
 Scalar type for matrices of type MatrixType. More...
 
typedef NumTraits< Scalar >::Real RealScalar
 
typedef Eigen::Index Index
 
typedef std::complex< RealScalarComplexScalar
 Complex scalar type for MatrixType. More...
 
typedef Matrix< ComplexScalar, ColsAtCompileTime, 1, Options &(~RowMajor), MaxColsAtCompileTime, 1 > EigenvalueType
 Type for vector of eigenvalues as returned by eigenvalues(). More...
 
typedef Matrix< ComplexScalar, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime, MaxColsAtCompileTimeEigenvectorType
 Type for matrix of eigenvectors as returned by eigenvectors(). More...
 

Public Member Functions

 ComplexEigenSolver ()
 Default constructor. More...
 
 ComplexEigenSolver (Index size)
 Default Constructor with memory preallocation. More...
 
template<typename InputType >
 ComplexEigenSolver (const EigenBase< InputType > &matrix, bool computeEigenvectors=true)
 Constructor; computes eigendecomposition of given matrix. More...
 
const EigenvectorTypeeigenvectors () const
 Returns the eigenvectors of given matrix. More...
 
const EigenvalueTypeeigenvalues () const
 Returns the eigenvalues of given matrix. More...
 
template<typename InputType >
ComplexEigenSolvercompute (const EigenBase< InputType > &matrix, bool computeEigenvectors=true)
 Computes eigendecomposition of given matrix. More...
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
ComplexEigenSolversetMaxIterations (Index maxIters)
 Sets the maximum number of iterations allowed. More...
 
Index getMaxIterations ()
 Returns the maximum number of iterations. More...
 
template<typename InputType >
ComplexEigenSolver< MatrixType > & compute (const EigenBase< InputType > &matrix, bool computeEigenvectors)
 

Protected Attributes

EigenvectorType m_eivec
 
EigenvalueType m_eivalues
 
ComplexSchur< MatrixTypem_schur
 
bool m_isInitialized
 
bool m_eigenvectorsOk
 
EigenvectorType m_matX
 

Private Member Functions

void doComputeEigenvectors (RealScalar matrixnorm)
 
void sortEigenvalues (bool computeEigenvectors)
 

Detailed Description

template<typename MatrixType_>
class Eigen::ComplexEigenSolver< MatrixType_ >

Computes eigenvalues and eigenvectors of general complex matrices.

\eigenvalues_module

Template Parameters
MatrixType_the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the Matrix class template.

The eigenvalues and eigenvectors of a matrix \( A \) are scalars \( \lambda \) and vectors \( v \) such that \( Av = \lambda v \). If \( D \) is a diagonal matrix with the eigenvalues on the diagonal, and \( V \) is a matrix with the eigenvectors as its columns, then \( A V = V D \). The matrix \( V \) is almost always invertible, in which case we have \( A = V D V^{-1} \). This is called the eigendecomposition.

The main function in this class is compute(), which computes the eigenvalues and eigenvectors of a given function. The documentation for that function contains an example showing the main features of the class.

See also
class EigenSolver, class SelfAdjointEigenSolver

Member Typedef Documentation

◆ ComplexScalar

template<typename MatrixType_ >
typedef std::complex<RealScalar> Eigen::ComplexEigenSolver< MatrixType_ >::ComplexScalar

Complex scalar type for MatrixType.

This is std::complex<Scalar> if Scalar is real (e.g., float or double) and just Scalar if Scalar is complex.

◆ EigenvalueType

template<typename MatrixType_ >
typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options & (~RowMajor), MaxColsAtCompileTime, 1> Eigen::ComplexEigenSolver< MatrixType_ >::EigenvalueType

Type for vector of eigenvalues as returned by eigenvalues().

This is a column vector with entries of type ComplexScalar. The length of the vector is the size of MatrixType.

◆ EigenvectorType

Type for matrix of eigenvectors as returned by eigenvectors().

This is a square matrix with entries of type ComplexScalar. The size is the same as the size of MatrixType.

◆ Index

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

◆ MatrixType

template<typename MatrixType_ >
typedef MatrixType_ Eigen::ComplexEigenSolver< MatrixType_ >::MatrixType

Synonym for the template parameter MatrixType_.

◆ RealScalar

template<typename MatrixType_ >
typedef NumTraits<Scalar>::Real Eigen::ComplexEigenSolver< MatrixType_ >::RealScalar

◆ Scalar

template<typename MatrixType_ >
typedef MatrixType::Scalar Eigen::ComplexEigenSolver< MatrixType_ >::Scalar

Scalar type for matrices of type MatrixType.

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType_ >
anonymous enum
Enumerator
RowsAtCompileTime 
ColsAtCompileTime 
Options 
MaxRowsAtCompileTime 
MaxColsAtCompileTime 
54  {
55  RowsAtCompileTime = MatrixType::RowsAtCompileTime,
56  ColsAtCompileTime = MatrixType::ColsAtCompileTime,
57  Options = internal::traits<MatrixType>::Options,
58  MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
59  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
60  };
@ MaxColsAtCompileTime
Definition: ComplexEigenSolver.h:59
@ Options
Definition: ComplexEigenSolver.h:57
@ ColsAtCompileTime
Definition: ComplexEigenSolver.h:56
@ RowsAtCompileTime
Definition: ComplexEigenSolver.h:55
@ MaxRowsAtCompileTime
Definition: ComplexEigenSolver.h:58

Constructor & Destructor Documentation

◆ ComplexEigenSolver() [1/3]

template<typename MatrixType_ >
Eigen::ComplexEigenSolver< MatrixType_ >::ComplexEigenSolver ( )
inline

Default constructor.

The default constructor is useful in cases in which the user intends to perform decompositions via compute().

97  : m_eivec(), m_eivalues(), m_schur(), m_isInitialized(false), m_eigenvectorsOk(false), m_matX() {}
EigenvectorType m_matX
Definition: ComplexEigenSolver.h:235
EigenvectorType m_eivec
Definition: ComplexEigenSolver.h:230
ComplexSchur< MatrixType > m_schur
Definition: ComplexEigenSolver.h:232
bool m_isInitialized
Definition: ComplexEigenSolver.h:233
bool m_eigenvectorsOk
Definition: ComplexEigenSolver.h:234
EigenvalueType m_eivalues
Definition: ComplexEigenSolver.h:231

◆ ComplexEigenSolver() [2/3]

template<typename MatrixType_ >
Eigen::ComplexEigenSolver< MatrixType_ >::ComplexEigenSolver ( Index  size)
inlineexplicit

Default Constructor with memory preallocation.

Like the default constructor but with preallocation of the internal data according to the specified problem size.

See also
ComplexEigenSolver()
106  : m_eivec(size, size),
107  m_eivalues(size),
108  m_schur(size),
109  m_isInitialized(false),
110  m_eigenvectorsOk(false),
111  m_matX(size, size) {}
Scalar Scalar int size
Definition: benchVecAdd.cpp:17

◆ ComplexEigenSolver() [3/3]

template<typename MatrixType_ >
template<typename InputType >
Eigen::ComplexEigenSolver< MatrixType_ >::ComplexEigenSolver ( const EigenBase< InputType > &  matrix,
bool  computeEigenvectors = true 
)
inlineexplicit

Constructor; computes eigendecomposition of given matrix.

Parameters
[in]matrixSquare matrix whose eigendecomposition is to be computed.
[in]computeEigenvectorsIf true, both the eigenvectors and the eigenvalues are computed; if false, only the eigenvalues are computed.

This constructor calls compute() to compute the eigendecomposition.

124  : m_eivec(matrix.rows(), matrix.cols()),
125  m_eivalues(matrix.cols()),
126  m_schur(matrix.rows()),
127  m_isInitialized(false),
128  m_eigenvectorsOk(false),
129  m_matX(matrix.rows(), matrix.cols()) {
130  compute(matrix.derived(), computeEigenvectors);
131  }
ComplexEigenSolver & compute(const EigenBase< InputType > &matrix, bool computeEigenvectors=true)
Computes eigendecomposition of given matrix.
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::ComplexEigenSolver< MatrixType_ >::compute(), and matrix().

Member Function Documentation

◆ compute() [1/2]

template<typename MatrixType_ >
template<typename InputType >
ComplexEigenSolver<MatrixType>& Eigen::ComplexEigenSolver< MatrixType_ >::compute ( const EigenBase< InputType > &  matrix,
bool  computeEigenvectors 
)
245  {
246  // this code is inspired from Jampack
247  eigen_assert(matrix.cols() == matrix.rows());
248 
249  // Do a complex Schur decomposition, A = U T U^*
250  // The eigenvalues are on the diagonal of T.
251  m_schur.compute(matrix.derived(), computeEigenvectors);
252 
253  if (m_schur.info() == Success) {
254  m_eivalues = m_schur.matrixT().diagonal();
255  if (computeEigenvectors) doComputeEigenvectors(m_schur.matrixT().norm());
256  sortEigenvalues(computeEigenvectors);
257  }
258 
259  m_isInitialized = true;
260  m_eigenvectorsOk = computeEigenvectors;
261  return *this;
262 }
#define eigen_assert(x)
Definition: Macros.h:910
void sortEigenvalues(bool computeEigenvectors)
Definition: ComplexEigenSolver.h:300
void doComputeEigenvectors(RealScalar matrixnorm)
Definition: ComplexEigenSolver.h:265
ComputationInfo info() const
Reports whether previous computation was successful.
Definition: ComplexSchur.h:220
const ComplexMatrixType & matrixT() const
Returns the triangular matrix in the Schur decomposition.
Definition: ComplexSchur.h:165
ComplexSchur & compute(const EigenBase< InputType > &matrix, bool computeU=true)
Computes Schur decomposition of given matrix.
@ Success
Definition: Constants.h:440

References Eigen::ComplexSchur< MatrixType_ >::compute(), Eigen::ComplexEigenSolver< MatrixType_ >::doComputeEigenvectors(), eigen_assert, Eigen::ComplexSchur< MatrixType_ >::info(), Eigen::ComplexEigenSolver< MatrixType_ >::m_eigenvectorsOk, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivalues, Eigen::ComplexEigenSolver< MatrixType_ >::m_isInitialized, Eigen::ComplexEigenSolver< MatrixType_ >::m_schur, matrix(), Eigen::ComplexSchur< MatrixType_ >::matrixT(), Eigen::ComplexEigenSolver< MatrixType_ >::sortEigenvalues(), and Eigen::Success.

◆ compute() [2/2]

template<typename MatrixType_ >
template<typename InputType >
ComplexEigenSolver& Eigen::ComplexEigenSolver< MatrixType_ >::compute ( const EigenBase< InputType > &  matrix,
bool  computeEigenvectors = true 
)

Computes eigendecomposition of given matrix.

Parameters
[in]matrixSquare matrix whose eigendecomposition is to be computed.
[in]computeEigenvectorsIf true, both the eigenvectors and the eigenvalues are computed; if false, only the eigenvalues are computed.
Returns
Reference to *this

This function computes the eigenvalues of the complex matrix matrix. The eigenvalues() function can be used to retrieve them. If computeEigenvectors is true, then the eigenvectors are also computed and can be retrieved by calling eigenvectors().

The matrix is first reduced to Schur form using the ComplexSchur class. The Schur decomposition is then used to compute the eigenvalues and eigenvectors.

The cost of the computation is dominated by the cost of the Schur decomposition, which is \( O(n^3) \) where \( n \) is the size of the matrix.

Example:

MatrixXcf A = MatrixXcf::Random(4, 4);
cout << "Here is a random 4x4 matrix, A:" << endl << A << endl << endl;
ComplexEigenSolver<MatrixXcf> ces;
ces.compute(A);
cout << "The eigenvalues of A are:" << endl << ces.eigenvalues() << endl;
cout << "The matrix of eigenvectors, V, is:" << endl << ces.eigenvectors() << endl << endl;
complex<float> lambda = ces.eigenvalues()[0];
cout << "Consider the first eigenvalue, lambda = " << lambda << endl;
VectorXcf v = ces.eigenvectors().col(0);
cout << "If v is the corresponding eigenvector, then lambda * v = " << endl << lambda * v << endl;
cout << "... and A * v = " << endl << A * v << endl << endl;
cout << "Finally, V * D * V^(-1) = " << endl
<< ces.eigenvectors() * ces.eigenvalues().asDiagonal() * ces.eigenvectors().inverse() << endl;
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
cout<< "The eigenvalues of A are:"<< endl<< ces.eigenvalues()<< endl;cout<< "The matrix of eigenvectors, V, is:"<< endl<< ces.eigenvectors()<< endl<< endl;complex< float > lambda
Definition: ComplexEigenSolver_compute.cpp:9
cout<< "Here is a random 4x4 matrix, A:"<< endl<< A<< endl<< endl;ComplexEigenSolver< MatrixXcf > ces
Definition: ComplexEigenSolver_compute.cpp:4
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
Definition: datatypes.h:12

Output:

 

Referenced by Eigen::ComplexEigenSolver< MatrixType_ >::ComplexEigenSolver(), ctms_decompositions(), eigensolver(), and eigensolver_verify_assert().

◆ doComputeEigenvectors()

template<typename MatrixType >
void Eigen::ComplexEigenSolver< MatrixType >::doComputeEigenvectors ( RealScalar  matrixnorm)
private
265  {
266  const Index n = m_eivalues.size();
267 
268  matrixnorm = numext::maxi(matrixnorm, (std::numeric_limits<RealScalar>::min)());
269 
270  // Compute X such that T = X D X^(-1), where D is the diagonal of T.
271  // The matrix X is unit triangular.
273  for (Index k = n - 1; k >= 0; k--) {
274  m_matX.coeffRef(k, k) = ComplexScalar(1.0, 0.0);
275  // Compute X(i,k) using the (i,k) entry of the equation X T = D X
276  for (Index i = k - 1; i >= 0; i--) {
277  m_matX.coeffRef(i, k) = -m_schur.matrixT().coeff(i, k);
278  if (k - i - 1 > 0)
279  m_matX.coeffRef(i, k) -=
280  (m_schur.matrixT().row(i).segment(i + 1, k - i - 1) * m_matX.col(k).segment(i + 1, k - i - 1)).value();
282  if (z == ComplexScalar(0)) {
283  // If the i-th and k-th eigenvalue are equal, then z equals 0.
284  // Use a small value instead, to prevent division by zero.
286  }
287  m_matX.coeffRef(i, k) = m_matX.coeff(i, k) / z;
288  }
289  }
290 
291  // Compute V as V = U X; now A = U T U^* = U X D X^(-1) U^* = V D V^(-1)
292  m_eivec.noalias() = m_schur.matrixU() * m_matX;
293  // .. and normalize the eigenvectors
294  for (Index k = 0; k < n; k++) {
295  m_eivec.col(k).stableNormalize();
296  }
297 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
std::complex< RealScalar > ComplexScalar
Complex scalar type for MatrixType.
Definition: ComplexEigenSolver.h:73
Eigen::Index Index
Definition: ComplexEigenSolver.h:65
const ComplexMatrixType & matrixU() const
Returns the unitary matrix in the Schur decomposition.
Definition: ComplexSchur.h:142
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
#define min(a, b)
Definition: datatypes.h:22
char char char int int * k
Definition: level2_impl.h:374
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
Definition: MathFunctions.h:926
EIGEN_DEVICE_FUNC internal::add_const_on_value_type_t< EIGEN_MATHFUNC_RETVAL(real_ref, Scalar)> real_ref(const Scalar &x)
Definition: MathFunctions.h:1051
squared absolute value
Definition: GlobalFunctions.h:87
double Zero
Definition: pseudosolid_node_update_elements.cc:35
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43

References Eigen::PlainObjectBase< Derived >::coeff(), Eigen::Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ >::coeffRef(), oomph::SarahBL::epsilon, i, k, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivalues, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivec, Eigen::ComplexEigenSolver< MatrixType_ >::m_matX, Eigen::ComplexEigenSolver< MatrixType_ >::m_schur, Eigen::ComplexSchur< MatrixType_ >::matrixT(), Eigen::ComplexSchur< MatrixType_ >::matrixU(), Eigen::numext::maxi(), min, n, Eigen::numext::real_ref(), Eigen::value, and oomph::PseudoSolidHelper::Zero.

Referenced by Eigen::ComplexEigenSolver< MatrixType_ >::compute().

◆ eigenvalues()

template<typename MatrixType_ >
const EigenvalueType& Eigen::ComplexEigenSolver< MatrixType_ >::eigenvalues ( ) const
inline

Returns the eigenvalues of given matrix.

Returns
A const reference to the column vector containing the eigenvalues.
Precondition
Either the constructor ComplexEigenSolver(const MatrixType& matrix, bool) or the member function compute(const MatrixType& matrix, bool) has been called before to compute the eigendecomposition of a matrix.

This function returns a column vector containing the eigenvalues. Eigenvalues are repeated according to their algebraic multiplicity, so there are as many eigenvalues as rows in the matrix. The eigenvalues are not sorted in any particular order.

Example:

MatrixXcf ones = MatrixXcf::Ones(3, 3);
ComplexEigenSolver<MatrixXcf> ces(ones, /* computeEigenvectors = */ false);
cout << "The eigenvalues of the 3x3 matrix of ones are:" << endl << ces.eigenvalues() << endl;
MatrixXcf ones
Definition: ComplexEigenSolver_eigenvalues.cpp:1

Output:

 
177  {
178  eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
179  return m_eivalues;
180  }

References eigen_assert, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivalues, and Eigen::ComplexEigenSolver< MatrixType_ >::m_isInitialized.

Referenced by eigensolver(), eigensolver_verify_assert(), and Eigen::internal::eigenvalues_selector< Derived, IsComplex >::run().

◆ eigenvectors()

template<typename MatrixType_ >
const EigenvectorType& Eigen::ComplexEigenSolver< MatrixType_ >::eigenvectors ( ) const
inline

Returns the eigenvectors of given matrix.

Returns
A const reference to the matrix whose columns are the eigenvectors.
Precondition
Either the constructor ComplexEigenSolver(const MatrixType& matrix, bool) or the member function compute(const MatrixType& matrix, bool) has been called before to compute the eigendecomposition of a matrix, and computeEigenvectors was set to true (the default).

This function returns a matrix whose columns are the eigenvectors. Column \( k \) is an eigenvector corresponding to eigenvalue number \( k \) as returned by eigenvalues(). The eigenvectors are normalized to have (Euclidean) norm equal to one. The matrix returned by this function is the matrix \( V \) in the eigendecomposition \( A = V D V^{-1} \), if it exists.

Example:

MatrixXcf ones = MatrixXcf::Ones(3, 3);
ComplexEigenSolver<MatrixXcf> ces(ones);
cout << "The first eigenvector of the 3x3 matrix of ones is:" << endl << ces.eigenvectors().col(0) << endl;

Output:

 
153  {
154  eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
155  eigen_assert(m_eigenvectorsOk && "The eigenvectors have not been computed together with the eigenvalues.");
156  return m_eivec;
157  }

References eigen_assert, Eigen::ComplexEigenSolver< MatrixType_ >::m_eigenvectorsOk, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivec, and Eigen::ComplexEigenSolver< MatrixType_ >::m_isInitialized.

Referenced by eigensolver(), and eigensolver_verify_assert().

◆ getMaxIterations()

template<typename MatrixType_ >
Index Eigen::ComplexEigenSolver< MatrixType_ >::getMaxIterations ( )
inline

Returns the maximum number of iterations.

225 { return m_schur.getMaxIterations(); }
Index getMaxIterations()
Returns the maximum number of iterations.
Definition: ComplexSchur.h:236

References Eigen::ComplexSchur< MatrixType_ >::getMaxIterations(), and Eigen::ComplexEigenSolver< MatrixType_ >::m_schur.

Referenced by eigensolver().

◆ info()

template<typename MatrixType_ >
ComputationInfo Eigen::ComplexEigenSolver< MatrixType_ >::info ( ) const
inline

Reports whether previous computation was successful.

Returns
Success if computation was successful, NoConvergence otherwise.
213  {
214  eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
215  return m_schur.info();
216  }

References eigen_assert, Eigen::ComplexSchur< MatrixType_ >::info(), Eigen::ComplexEigenSolver< MatrixType_ >::m_isInitialized, and Eigen::ComplexEigenSolver< MatrixType_ >::m_schur.

Referenced by eigensolver().

◆ setMaxIterations()

template<typename MatrixType_ >
ComplexEigenSolver& Eigen::ComplexEigenSolver< MatrixType_ >::setMaxIterations ( Index  maxIters)
inline

Sets the maximum number of iterations allowed.

219  {
220  m_schur.setMaxIterations(maxIters);
221  return *this;
222  }
ComplexSchur & setMaxIterations(Index maxIters)
Sets the maximum number of iterations allowed.
Definition: ComplexSchur.h:230

References Eigen::ComplexEigenSolver< MatrixType_ >::m_schur, and Eigen::ComplexSchur< MatrixType_ >::setMaxIterations().

Referenced by eigensolver().

◆ sortEigenvalues()

template<typename MatrixType >
void Eigen::ComplexEigenSolver< MatrixType >::sortEigenvalues ( bool  computeEigenvectors)
private
300  {
301  const Index n = m_eivalues.size();
302  for (Index i = 0; i < n; i++) {
303  Index k;
304  m_eivalues.cwiseAbs().tail(n - i).minCoeff(&k);
305  if (k != 0) {
306  k += i;
308  if (computeEigenvectors) m_eivec.col(i).swap(m_eivec.col(k));
309  }
310  }
311 }
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
EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition: level1_impl.h:117

References i, k, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivalues, Eigen::ComplexEigenSolver< MatrixType_ >::m_eivec, n, Eigen::PlainObjectBase< Derived >::swap(), and swap().

Referenced by Eigen::ComplexEigenSolver< MatrixType_ >::compute().

Member Data Documentation

◆ m_eigenvectorsOk

template<typename MatrixType_ >
bool Eigen::ComplexEigenSolver< MatrixType_ >::m_eigenvectorsOk
protected

◆ m_eivalues

◆ m_eivec

◆ m_isInitialized

◆ m_matX

template<typename MatrixType_ >
EigenvectorType Eigen::ComplexEigenSolver< MatrixType_ >::m_matX
protected

◆ m_schur


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