TR-mbed 1.0
Loading...
Searching...
No Matches
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
14namespace Eigen {
15
16namespace internal {
17
18template<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
31template<typename Derived>
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
65template<typename Derived>
71
86template<typename MatrixType, unsigned int UpLo>
89{
90 PlainObject thisAsMatrix(*this);
91 return SelfAdjointEigenSolver<PlainObject>(thisAsMatrix, false).eigenvalues();
92}
93
94
95
118template<typename Derived>
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
149template<typename MatrixType, unsigned int UpLo>
152{
153 return eigenvalues().cwiseAbs().maxCoeff();
154}
155
156} // end namespace Eigen
157
158#endif
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
RealScalar operatorNorm() const
Computes the L2 operator norm.
Definition MatrixBaseEigenvalues.h:120
EigenvaluesReturnType eigenvalues() const
Computes the eigenvalues of a matrix.
Definition MatrixBaseEigenvalues.h:67
NumTraits< Scalar >::Real RealScalar
Definition MatrixBase.h:58
Matrix< std::complex< RealScalar >, internal::traits< Derived >::ColsAtCompileTime, 1, ColMajor > EigenvaluesReturnType
Definition MatrixBase.h:115
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
Computes eigenvalues and eigenvectors of selfadjoint matrices.
Definition SelfAdjointEigenSolver.h:77
EIGEN_DEVICE_FUNC const RealVectorType & eigenvalues() const
Returns the eigenvalues of given matrix.
Definition SelfAdjointEigenSolver.h:300
EIGEN_DEVICE_FUNC RealScalar operatorNorm() const
Computes the L2 operator norm.
Definition MatrixBaseEigenvalues.h:151
EIGEN_DEVICE_FUNC EigenvaluesReturnType eigenvalues() const
Computes the eigenvalues of a matrix.
Definition MatrixBaseEigenvalues.h:88
MatrixType::PlainObject PlainObject
Definition SelfAdjointView.h:71
NumTraits< Scalar >::Real RealScalar
Definition SelfAdjointView.h:256
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
Definition BandTriangularSolver.h:13
static MatrixBase< Derived >::EigenvaluesReturnType const run(const MatrixBase< Derived > &m)
Definition MatrixBaseEigenvalues.h:35
Definition MatrixBaseEigenvalues.h:20
static MatrixBase< Derived >::EigenvaluesReturnType const run(const MatrixBase< Derived > &m)
Definition MatrixBaseEigenvalues.h:23
Definition ForwardDeclarations.h:17