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 {
70 }
71 
86 template<typename MatrixType, unsigned int UpLo>
89 {
90  PlainObject thisAsMatrix(*this);
91  return SelfAdjointEigenSolver<PlainObject>(thisAsMatrix, false).eigenvalues();
92 }
93 
94 
95 
118 template<typename Derived>
119 inline typename MatrixBase<Derived>::RealScalar
121 {
122  using std::sqrt;
123  typename Derived::PlainObject m_eval(derived());
124  // FIXME if it is really guaranteed that the eigenvalues are already sorted,
125  // then we don't need to compute a maxCoeff() here, comparing the 1st and last ones is enough.
126  return sqrt((m_eval*m_eval.adjoint())
127  .eval()
128  .template selfadjointView<Lower>()
129  .eigenvalues()
130  .maxCoeff()
131  );
132 }
133 
149 template<typename MatrixType, unsigned int UpLo>
152 {
153  return eigenvalues().cwiseAbs().maxCoeff();
154 }
155 
156 } // end namespace Eigen
157 
158 #endif
Matrix3f m
EIGEN_DEVICE_FUNC EigenvaluesReturnType eigenvalues() const
Computes the eigenvalues of a matrix.
Computes eigenvalues and eigenvectors of selfadjoint matrices.
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
MatrixType::PlainObject PlainObject
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC RealScalar operatorNorm() const
Computes the L2 operator norm.
NumTraits< Scalar >::Real RealScalar
Definition: MatrixBase.h:58
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:976
RealScalar operatorNorm() const
Computes the L2 operator norm.
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Jet< T, N > sqrt(const Jet< T, N > &f)
Definition: jet.h:418
Computes eigenvalues and eigenvectors of general matrices.
Definition: EigenSolver.h:64
The matrix class, also used for vectors and row-vectors.
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


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:34:51