MatrixBaseEigenvalues.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
5 // Copyright (C) 2010 Jitse Niesen <jitse@maths.leeds.ac.uk>
6 //
7 // This Source Code Form is subject to the terms of the Mozilla
8 // Public License v. 2.0. If a copy of the MPL was not distributed
9 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 
11 #ifndef EIGEN_MATRIXBASEEIGENVALUES_H
12 #define EIGEN_MATRIXBASEEIGENVALUES_H
13 
14 namespace Eigen {
15 
16 namespace internal {
17 
18 template<typename Derived, bool IsComplex>
20 {
21  // this is the implementation for the case IsComplex = true
22  static inline typename MatrixBase<Derived>::EigenvaluesReturnType const
24  {
25  typedef typename Derived::PlainObject PlainObject;
26  PlainObject m_eval(m);
27  return ComplexEigenSolver<PlainObject>(m_eval, false).eigenvalues();
28  }
29 };
30 
31 template<typename Derived>
32 struct eigenvalues_selector<Derived, false>
33 {
34  static inline typename MatrixBase<Derived>::EigenvaluesReturnType const
36  {
37  typedef typename Derived::PlainObject PlainObject;
38  PlainObject m_eval(m);
39  return EigenSolver<PlainObject>(m_eval, false).eigenvalues();
40  }
41 };
42 
43 } // end namespace internal
44 
65 template<typename Derived>
68 {
71 }
72 
87 template<typename MatrixType, unsigned int UpLo>
90 {
92  PlainObject thisAsMatrix(*this);
93  return SelfAdjointEigenSolver<PlainObject>(thisAsMatrix, false).eigenvalues();
94 }
95 
96 
97 
120 template<typename Derived>
121 inline typename MatrixBase<Derived>::RealScalar
123 {
124  using std::sqrt;
125  typename Derived::PlainObject m_eval(derived());
126  // FIXME if it is really guaranteed that the eigenvalues are already sorted,
127  // then we don't need to compute a maxCoeff() here, comparing the 1st and last ones is enough.
128  return sqrt((m_eval*m_eval.adjoint())
129  .eval()
130  .template selfadjointView<Lower>()
131  .eigenvalues()
132  .maxCoeff()
133  );
134 }
135 
151 template<typename MatrixType, unsigned int UpLo>
154 {
155  return eigenvalues().cwiseAbs().maxCoeff();
156 }
157 
158 } // end namespace Eigen
159 
160 #endif
internal::traits< Derived >::Scalar Scalar
Definition: DenseBase.h:63
Computes eigenvalues and eigenvectors of selfadjoint matrices.
Definition: LDLT.h:16
RealScalar operatorNorm() const
Computes the L2 operator norm.
NumTraits< Scalar >::Real RealScalar
NumTraits< Scalar >::Real RealScalar
Definition: MatrixBase.h:58
MatrixType::PlainObject PlainObject
RealScalar operatorNorm() const
Computes the L2 operator norm.
EigenvaluesReturnType eigenvalues() const
Computes the eigenvalues of a matrix.
Computes eigenvalues and eigenvectors of general matrices.
Definition: EigenSolver.h:64
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:127
static MatrixBase< Derived >::EigenvaluesReturnType const run(const MatrixBase< Derived > &m)
Computes eigenvalues and eigenvectors of general complex matrices.
EigenvaluesReturnType eigenvalues() const
Computes the eigenvalues of a matrix.
static MatrixBase< Derived >::EigenvaluesReturnType const run(const MatrixBase< Derived > &m)
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
const CwiseUnaryOp< internal::scalar_sqrt_op< Scalar >, const Derived > sqrt() const


tuw_aruco
Author(s): Lukas Pfeifhofer
autogenerated on Mon Feb 28 2022 23:57:56